2次元または3次元のベクトルを表すクラスです。
ベクトルは異なる方法で考えることができます。ひとつの見方では、ベクトルは 空間内で指し示す矢印のようなものです。ベクトルは大きさ(長さ)と 方向の両方を持っています。
p5.Vector
オブジェクトは、計算を簡略化するため、しばしば動きを プログラムするのに使用されます。例えば、動く球は位置と速度を持っています。 位置は球が空間のどこにあるかを表します。球の位置ベクトルは 原点から球の中心まで伸びています。速度は球の速さと 動いている方向を表します。球がまっすぐ上に動いている場合、その 速度ベクトルはまっすぐ上を指します。球の速度ベクトルを 位置ベクトルに加えると、球が動きます。例えばpos.add(vel)
のようにします。ベクトル計算は p5.Vector
クラス内のメソッドに依存しています。
注意:createVector()は このクラスのインスタンスを作成する推奨される方法です。
実例
シンタックス
p5.Vector([x], [y], [z])
パラメーター
ベクトルのx成分。
ベクトルのy成分。
ベクトルのz成分。
メソッド
ベクトルの文字列表現を返します。
toString()
を呼び出すことは、デバッグ中にコンソールに ベクトルを出力するのに便利です。
ベクトルのx
、y
、z
成分を設定します。
set()
は、v.set(1, 2, 3)
のように個別の数値、 v.set(v2)
のようにp5.Vectorオブジェクト、 またはv.set([1, 2, 3])
のように数値の配列を使用できます。
成分に値が提供されない場合、0に設定されます。例えば、 v.set(4, 5)
はv.x
を4に、v.y
を5に、v.z
を0に設定します。 引数なしでset()
を呼び出す(v.set()
のように)と、 ベクトルのすべての成分が0に設定されます。
ベクトルのx
、y
、z
成分に加算します。
add()
は、v.add(1, 2, 3)
のように個別の数値、 v.add(v2)
のように別のp5.Vectorオブジェクト、 またはv.add([1, 2, 3])
のように数値の配列を使用できます。
成分に値が提供されない場合、変更されません。例えば、 v.add(4, 5)
はv.x
に4を、v.y
に5を加え、v.z
には0を加えます。 引数なしでadd()
を呼び出す(v.add()
のように)と、 何の効果もありません。
add()
の静的バージョン(p5.Vector.add(v2, v1)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
ベクトルのx
、y
、z
成分に対して モジュロ(剰余)除算を行います。
rem()
は、v.rem(1, 2, 3)
のように個別の数値、 v.rem(v2)
のように別のp5.Vectorオブジェクト、 またはv.rem([1, 2, 3])
のように数値の配列を使用できます。
1つの値のみが提供された場合(v.rem(2)
のように)、すべての成分が その値で剰余演算されます。2つの値が提供された場合(v.rem(2, 3)
のように)、 v.z
は変更されません。引数なしでrem()
を呼び出す (v.rem()
のように)と、何の効果もありません。
rem()
の静的バージョン(p5.Vector.rem(v2, v1)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
ベクトルのx
、y
、z
成分から減算します。
sub()
は、v.sub(1, 2, 3)
のように個別の数値、 v.sub(v2)
のように別のp5.Vectorオブジェクト、 またはv.sub([1, 2, 3])
のように数値の配列を使用できます。
成分に値が提供されない場合、変更されません。例えば、 v.sub(4, 5)
はv.x
から4を、v.y
から5を引き、v.z
からは0を引きます。 引数なしでsub()
を呼び出す(v.sub()
のように)と、 何の効果もありません。
sub()
の静的バージョン(p5.Vector.sub(v2, v1)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
ベクトルのx
、y
、z
成分を乗算します。
mult()
は、v.mult(1, 2, 3)
のように個別の数値、 v.mult(v2)
のように別のp5.Vectorオブジェクト、 またはv.mult([1, 2, 3])
のように数値の配列を使用できます。
1つの値のみが提供された場合(v.mult(2)
のように)、すべての成分が 2倍になります。成分に値が提供されない場合、変更されません。例えば、 v.mult(4, 5)
はv.x
を4倍、v.y
を5倍し、 v.z
は1倍(変更なし)になります。引数なしでmult()
を呼び出す (v.mult()
のように)と、何の効果もありません。
mult()
の静的バージョン(p5.Vector.mult(v, 2)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
ベクトルのx
、y
、z
成分を除算します。
div()
は、v.div(1, 2, 3)
のように個別の数値、 v.div(v2)
のように別のp5.Vectorオブジェクト、 またはv.div([1, 2, 3])
のように数値の配列を使用できます。
1つの値のみが提供された場合(v.div(2)
のように)、すべての成分が 2で割られます。成分に値が提供されない場合、変更されません。例えば、 v.div(4, 5)
はv.x
を4で、v.y
を5で割り、 v.z
は1で割ります(変更なし)。引数なしでdiv()
を呼び出す (v.div()
のように)と、何の効果もありません。
div()
の静的バージョン(p5.Vector.div(v, 2)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
ベクトルの大きさ(長さ)の二乗を計算します。
2つのベクトルの内積を計算します。
内積は2つのベクトル間の重なりを表す数値です。視覚的には、内積は 一方のベクトルがもう一方のベクトルに投影する「影」と考えることができます。 内積の大きさは、2つのベクトルが同じ方向または反対方向を指しているときに最大になります。 2つのベクトルが直角をなすとき、その大きさは0になります。
1つのパラメータを持つdot()
のバージョンは、それを別の p5.Vectorオブジェクトとして解釈します。
複数のパラメータを持つdot()
のバージョンは、それらを別のベクトルの x
、y
、z
成分として解釈します。
dot()
の静的バージョン(p5.Vector.dot(v1, v2)
のように)は、 v1.dot(v2)
を呼び出すのと同じです。
2つのベクトルの外積を計算します。
外積は、2つのベクトルが作る平面から真っ直ぐに出るベクトルです。 外積の大きさは、元の2つのベクトルで形成される平行四辺形の面積です。
cross()
の静的バージョン(p5.Vector.cross(v1, v2)
のように)は、 v1.cross(v2)
を呼び出すのと同じです。
ベクトルで表される2点間の距離を計算します。
点の座標は、原点からその点まで伸びるベクトルの成分として表すことができます。
dist()
の静的バージョン(p5.Vector.dist(v1, v2)
のように)は、 v1.dist(v2)
を呼び出すのと同じです。
dist()を使用して、dist(x1, y1, x2, y2)
のように 座標を使用して点間の距離を計算します。
ベクトルの大きさを最大値に制限します。
limit()
の静的バージョン(p5.Vector.limit(v, 5)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
ベクトルの大きさを指定された値に設定します。
setMag()
の静的バージョン(p5.Vector.setMag(v, 10)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
2Dベクトルが正のx軸となす角度を計算します。
慣例により、正のx軸は角度0を持ちます。角度は時計回りの方向に増加します。
ベクトルがcreateVector()で作成された場合、 heading()
は現在のangleMode()の 単位で角度を返します。
heading()
の静的バージョン(p5.Vector.heading(v)
のように)は、 同じように動作します。
2Dベクトルを、大きさを変えずに特定の角度に回転させます。
慣例により、正のx軸は角度0を持ちます。角度は時計回りの方向に増加します。
ベクトルがcreateVector()で作成された場合、 setHeading()
は現在のangleMode()の 単位を使用します。
2Dベクトルを、大きさを変えずに指定された角度だけ回転させます。
慣例により、正のx軸は角度0を持ちます。角度は時計回りの方向に増加します。
ベクトルがcreateVector()で作成された場合、 rotate()
は現在のangleMode()の 単位を使用します。
rotate()
の静的バージョン(p5.Vector.rotate(v, PI)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
2つのベクトル間の角度を計算します。
返される角度は符号付きで、つまりv1.angleBetween(v2) === -v2.angleBetween(v1)
となります。
ベクトルがcreateVector()で作成された場合、 angleBetween()
は現在のangleMode()の 単位で角度を返します。
2つのベクトル間で比例的に同じ距離にある新しいx
、y
、z
成分を 計算します。
amt
パラメータは、古いベクトルと新しいベクトルの間を補間する量です。 0.0はすべての成分を古いベクトルの値のままにし、0.5は中間点、1.0はすべての成分を 新しいベクトルの値に設定します。
lerp()
の静的バージョン(p5.Vector.lerp(v0, v1, 0.5)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
2つのベクトル間の新しい方向と大きさを計算します。
amt
パラメータは、古いベクトルと新しいベクトルの間を補間する量です。 0.0は方向と大きさを古いベクトルの値のままにし、0.5は中間点、1.0は方向と 大きさを新しいベクトルの値に設定します。
slerp()
はlerp()と異なり、 大きさを補間します。v0.slerp(v1, 0.5)
を呼び出すと、v0
の 大きさはその元の大きさとv1
の大きさの中間の値に設定されます。 v0.lerp(v1, 0.5)
を呼び出してもそのような保証はありません。
slerp()
の静的バージョン(p5.Vector.slerp(v0, v1, 0.5)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
2Dでは線について、3Dでは平面についてベクトルを反射させます。
線または平面の向きは、形状から離れる方向を指す法線ベクトルによって記述されます。
reflect()
の静的バージョン(p5.Vector.reflect(v, n)
のように)は、 新しいp5.Vectorオブジェクトを返し、 元のオブジェクトは変更しません。
ベクトルの成分を数値の配列として返します。
ベクトルのすべての成分が別のベクトルの成分と等しいかどうかをチェックします。
equals()
は、ベクトルの成分がすべて別のベクトルの成分と同じ場合は true
を返し、そうでない場合はfalse
を返します。
1つのパラメータを持つequals()
のバージョンは、それを別の p5.Vectorオブジェクトとして解釈します。
複数のパラメータを持つequals()
のバージョンは、それらを別のベクトルの 成分として解釈します。不足しているパラメータには値0が割り当てられます。
equals()
の静的バージョン(p5.Vector.equals(v0, v1)
のように)は、 両方のパラメータをp5.Vectorオブジェクトとして 解釈します。
角度から新しい2Dベクトルを作成します。
ISO球面角のペアから新しい3Dベクトルを作成します。
ランダムな方向を持つ新しい2D単位ベクトルを作成します。
ランダムな方向を持つ新しい3D単位ベクトルを作成します。
p5.Vectorの0に非常に近い成分を0で置き換えます。
コンピュータでは、小数を含む数値の処理は、それらの数値の表現方法により、 わずかに不正確な結果を生む可能性があります。これにより、数値が0かどうかの チェックが難しくなることがあります。なぜなら、その数値は0に近いものの、 正確に0ではないかもしれないからです。このメソッドは、そのようなチェックを 容易にするために、非常に0に近い数値を0に丸めます。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON/