58 friend constexpr Vec2 operator+(
const Vec2& lhs,
const Vec2& rhs)
noexcept {
return { lhs.x + rhs.x, lhs.y + rhs.y }; }
59 friend constexpr Vec2 operator-(
const Vec2& lhs,
const Vec2& rhs)
noexcept {
return { lhs.x - rhs.x, lhs.y - rhs.y }; }
60 friend constexpr Vec2 operator*(
const Vec2& lhs,
const Vec2& rhs)
noexcept {
return { lhs.x * rhs.x, lhs.y * rhs.y }; }
61 friend constexpr Vec2 operator/(
const Vec2& lhs,
const Vec2& rhs)
noexcept {
return { lhs.x / rhs.x, lhs.y / rhs.y }; }
83 friend constexpr bool operator==(
const Vec2& lhs,
const Vec2& rhs)
noexcept {
return lhs.x == rhs.x and lhs.y == rhs.y; };
84 friend constexpr bool operator!=(
const Vec2& lhs,
const Vec2& rhs)
noexcept {
return not(lhs == rhs); };
88 explicit constexpr operator bool() const noexcept
103 return not
operator bool();
124 template <
typename Visitor>
131 template <
typename Visitor>
154 const auto s = sin(-
angle);
155 const auto c = cos(-
angle);
156 const auto d = (*
this - center);
157 return center +
Vec2{ (d.x * c - d.y * s), (d.x * s + d.y * c) };
193 const auto d = *
this - rhs;
194 return atan2(d.x, d.y);
215 const auto d = *
this - rhs;
216 return sqrt(d.x * d.x + d.y * d.y);
230 return x *
x +
y *
y;
257 Map(
x, fromMin, fromMax, toMin, toMax),
258 Map(
y, fromMin, fromMax, toMin, toMax),
270 return *
this =
mapped(fromMin, fromMax, toMin, toMax);
277 if (
const auto len =
length())
309 return *
this =
clamped(min, max);
320 template <
typename T>
321 constexpr Vec2(
const s3d::Vector2D<T>& v) noexcept
328 template <
typename T>
329 [[nodiscard]] s3d::Vector2D<T> asSivVec2() const noexcept
338 template <
typename T>
340 operator s3d::Vector2D<T>() const noexcept
342 return asSivVec2<T>();
350 Serial.print(
F(
"x: ")), Serial.print(
x), Serial.print(
'\t');
351 Serial.print(
F(
"y: ")), Serial.print(
y), Serial.print(
'\t');
#define F(x)
Definition Show.hpp:17
constexpr T Abs(const T &rhs)
絶対値を返す (std::abs)
Definition Math.hpp:98
constexpr A Constrain(const A &amt, const B &low, const C &high)
値を指定された範囲内に収める (std::clamp)
Definition Math.hpp:68
Vec3 Vec3
Definition Vector3D.hpp:20
constexpr double Map(const double value, const double inputMin, const double inputMax, const double outputMin, const double outputMax)
数値をある範囲から別の範囲に再マッピングする
Definition Math.hpp:136
極座標系
Definition Polar.hpp:21
二次元ベクトル
Definition Vector2D.hpp:22
Vec2 & rotateAt(const Vec2 ¢er, ValueType angle) noexcept
指定された点を中心に時計回りに回転させる
Definition Vector2D.hpp:164
friend constexpr bool operator==(const Vec2 &lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:83
Vec2 & operator/=(ValueType rhs) noexcept
Definition Vector2D.hpp:81
friend constexpr Vec2 operator*(const Vec2 &lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:60
Vec2 scaledLength(ValueType length) const noexcept
長さを変更したベクトルを返す
Definition Vector2D.hpp:235
Vec2(const Vec2 &)=default
デフォルトコピーコンストラクタ
ValueType angleAt(const Vec2 &rhs) const noexcept
指定された点からの角度を求める
Definition Vector2D.hpp:189
ValueType y
Y成分
Definition Vector2D.hpp:31
Vec2 & operator-=(ValueType rhs) noexcept
Definition Vector2D.hpp:79
Vec2 & operator/=(const Vec2 &rhs) noexcept
Definition Vector2D.hpp:76
constexpr Vec2() noexcept
デフォルトコンストラクタ
Definition Vector2D.hpp:37
Udon::Vec3 xy0() const noexcept
Definition Vector2D.hpp:13
Vec2 & operator+=(const Vec2 &rhs) noexcept
Definition Vector2D.hpp:73
Vec2 & replaceY(ValueType newValue) noexcept
Definition Vector2D.hpp:118
ValueType length() const noexcept
原点からの距離を求める
Definition Vector2D.hpp:221
friend constexpr Vec2 operator-(ValueType lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:69
Vec2 & scaleLength(ValueType length) noexcept
ベクトルの長さを指定された値にする
Definition Vector2D.hpp:243
friend constexpr Vec2 operator-(const Vec2 &lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:59
constexpr bool isZero() const noexcept
ゼロベクトルであるかを返す
Definition Vector2D.hpp:101
constexpr Vec2 mapped(ValueType fromMin, ValueType fromMax, ValueType toMin, ValueType toMax) const noexcept
各要素をある範囲から別の範囲に再マップしたベクトルを返す
Definition Vector2D.hpp:254
Vec2 & replaceX(Visitor &&visitor) noexcept
Definition Vector2D.hpp:125
friend constexpr Vec2 operator-(const Vec2 &lhs, ValueType rhs) noexcept
Definition Vector2D.hpp:64
Vec2 rotated(ValueType angle) const noexcept
原点を中心に回転したベクトルを返す
Definition Vector2D.hpp:172
Vec2 & map(ValueType fromMin, ValueType fromMax, ValueType toMin, ValueType toMax) noexcept
各要素をある範囲から別の範囲に再マップする
Definition Vector2D.hpp:268
Vec2 & operator*=(ValueType rhs) noexcept
Definition Vector2D.hpp:80
Vec2 & operator+=(ValueType rhs) noexcept
Definition Vector2D.hpp:78
friend constexpr Vec2 operator/(const Vec2 &lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:61
ValueType angle() const noexcept
原点からの時計回りの角度を求める
Definition Vector2D.hpp:205
constexpr ValueType lengthSq() const noexcept
原点からの距離の二乗を求める
Definition Vector2D.hpp:228
Vec2 & clamp(ValueType min, ValueType max) noexcept
各要素に制限をかける
Definition Vector2D.hpp:307
constexpr Vec2(ValueType x, ValueType y) noexcept
コンストラクタ
Definition Vector2D.hpp:46
friend constexpr Vec2 operator+(const Vec2 &lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:58
constexpr Vec2 clamped(ValueType min, ValueType max) const noexcept
各要素に制限をかけたベクトルを返す
Definition Vector2D.hpp:298
ValueType x
X成分
Definition Vector2D.hpp:28
Vec2 & operator=(const Vec2 &)=default
デフォルトコピー代入演算子
friend constexpr Vec2 operator+(ValueType lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:68
Vec2 normalized() const noexcept
正規化したベクトルを返す
Definition Vector2D.hpp:275
double ValueType
要素の型
Definition Vector2D.hpp:25
Udon::Polar toPolar() const noexcept
Definition Vector2D.hpp:18
friend constexpr Vec2 operator/(ValueType lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:71
friend constexpr bool operator!=(const Vec2 &lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:84
Vec2 & replaceY(Visitor &&visitor) noexcept
Definition Vector2D.hpp:132
ValueType distanceFrom(const Vec2 &rhs) const noexcept
指定された点からの距離を求める
Definition Vector2D.hpp:213
friend constexpr Vec2 operator/(const Vec2 &lhs, ValueType rhs) noexcept
Definition Vector2D.hpp:66
static constexpr size_t Dimension
次元数
Definition Vector2D.hpp:34
Vec2 & replaceX(ValueType newValue) noexcept
Definition Vector2D.hpp:112
friend constexpr Vec2 operator*(ValueType lhs, const Vec2 &rhs) noexcept
Definition Vector2D.hpp:70
Vec2 & rotate(ValueType angle) noexcept
原点を中心に回転させる
Definition Vector2D.hpp:180
Vec2 & normalize() noexcept
ベクトルを正規化する
Definition Vector2D.hpp:289
friend constexpr Vec2 operator*(const Vec2 &lhs, ValueType rhs) noexcept
Definition Vector2D.hpp:65
UDON_ENUMERABLE(x, y)
OpenSiv3D との連携
friend constexpr Vec2 operator+(const Vec2 &lhs, ValueType rhs) noexcept
Definition Vector2D.hpp:63
static constexpr Vec2 Zero() noexcept
ゼロベクトルを返す
Definition Vector2D.hpp:95
Vec2 rotatedAt(const Vec2 ¢er, ValueType angle) const noexcept
指定された点を中心に時計回りに回転したベクトルを返す
Definition Vector2D.hpp:152
void clear() noexcept
値クリア
Definition Vector2D.hpp:107
Vec2 abs() const noexcept
絶対値を取る
Definition Vector2D.hpp:140
Vec2 & operator-=(const Vec2 &rhs) noexcept
Definition Vector2D.hpp:74
Vec2 & operator*=(const Vec2 &rhs) noexcept
Definition Vector2D.hpp:75
三次元ベクトル
Definition Vector3D.hpp:20