描述二维或三维向量的类。
向量可以以不同的方式理解。在一种观点下,向量就像指向空间的箭头。向量具有大小(长度)和方向。
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),一个p5.Vector对象,例如v.set(v2),或者一个数字数组,例如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 分量。
mult() 可以接收单独的数字,如:v.mult(1, 2, 3);可以接收另一个 p5.Vector 对象,如:v.mult(v2);也可以接收数字组,如:v.mult([1, 2, 3])。
如果只传一个参数,如: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);可以接收另一个 p5.Vector 对象,如:v.div(v2);也可以接收数字组,如:v.div([1, 2, 3])。
如果只传一个参数,如:v.div(2),那么所有分量都将除以 2。如果不给分量传值,它的值就不会变,如:v.div(4, 5),会将 v.x 除以 4, v.y 除以 5,and v.z 除以 1。调用不带参数的 div(),如:v.div(),不会发生任何变化。
div() 的静态版本,如: p5.Vector.div(v, 2),返回一个新的 p5.Vector 对象,不改变原始对象。
计算向量的大小(长度)的平方。
计算两个向量的点积。
点积是描述两个向量之间重叠程度的数字。从视觉上,可以将点积看作是一个向量在另一个向量上投下的“阴影”。当两个向量指向相同或相反方向时,点积最大。当两个向量形成直角时,点积为 0。
dot() 带有一个参数时,可以把它看作一个 p5.Vector 对象。
dot() 带有多个参数时,可以把它们看作另一个向量的 x、y、z 分量。
dot(),如:p5.Vector.dot(v1, v2),与调用 v1.dot(v2) 相同。
计算两个向量的叉积。
叉积是一个向量,指向由两个向量创建的平面的垂直方向,它的大小是两个原始向量形成的平行四边形的面积。
cross(),如:p5.Vector.cross(v1, v2),与调用 v1.cross(v2)相同。
计算由向量表示的两个点之间的距离。
一个点的坐标可以由从原点到该点的向量的分量表示。
dist(),如:p5.Vector.dist(v1, v2),与调用 v1.dist(v2) 相同。
dist() 用来计算以坐标表示的点之间的距离,如:dist(x1, y1, x2, y2)。
计算二维向量与正 x 轴的夹角。
按照惯例,正 x 轴的角度为0,角度按顺时针方向增加。
如果向量是用 createVector() 创建的,那么 heading() 返回当前 angleMode() 的角度单位。
heading() 的静态版本,如:p5.Vector.heading(v),也是一样的工作原理。
将二维向量旋转到特定角度而不改变其大小。
按照惯例,正 x 轴的角度为0,角度按顺时针方向增加。
如果向量是用 createVector() 创建的,那么 setHeading() 使用当前 angleMode() 的单位。
将二维向量按角度旋转而不改变其大小。
按照惯例,正 x 轴的角度为0,角度按顺时针方向增加。
如果向量是用 createVector() 创建的,那么 rotate() 使用当前 angleMode() 的单位。
rotate() 的静态版本,如:p5.Vector.rotate(v, PI),返回一个新的 p5.Vector 对象,不改变原始对象。
计算两个向量之间的角度。
如果返回的角度是有符号的,就意味着 v1.angleBetween(v2) === -v2.angleBetween(v1)。
如果向量是用 createVector() 创建的,那么 angleBetween() 返回当前 angleMode() 的角度单位。
计算新的 x、y 和 z 分量,它们之间按比例两两等距。
amt 参数是在旧向量和新向量之间进行插值的量。0.0 保持所有分量与旧的向量相等,0.5 取中间值,1.0 保持所有分量与新的向量相等。
lerp() 的静态版本,如: p5.Vector.lerp(v0, v1, 0.5),返回一个新的 p5.Vector 对象,不改变原始对象。
根据给定的角度,创建一个新的二维向量。
从一对 ISO 球面角,创建一个新的三维向量
创建一个新的二维单位向量,方向随机。
创建一个新的三维单位向量,方向随机。