Vector2 二维向量

数量, 或标量, 只有大小, 如:长度、面积. 而向量(Vector)是既有大小, 又有方向, 如:速度、位移. 向量可以用有向来表示. Vector2 表示在 xOy 平面上的二维向量, 两个参数分别对应在x,y轴上的坐标值, 表示一条起点为坐标轴原点(0, 0), 指向终点为(x, y)的有向线段.

function Vector2(x, y) { } var v = new THREE.Vector2( 0, 0 ), v1 = new THREE.Vector2( 1, 1 ), v2 = new THREE.Vector2( -2, 3 ); console.log( v1.add( v2 ) ); // { x: -1, y: 4 } console.log( v1.addScalar( 5 ) ); // { x: 4, y: 9 } console.log( v1.add( v2 ) ); // { x: 2, y: 12 } console.log( v.addVectors( v1, v2 ) ); // { x: 0, y: 15 } console.log( v1.addScaledVector( v2, 10 ) ); // { x: -18, y: 42 } var a = new THREE.Vector2( 1, 5 ), b = new THREE.Vector2( 1, 5 ), v = new THREE.Vector2( 2, 4 ); console.log( a.max(v) ); // { x: 2, y: 5 } console.log( b.min(v) ); // { x: 1, y: 4 } var v = new THREE.Vector2( 0, 3 ); console.log( v.clampScalar(1, 4 ) ); // { x: 1, y: 3 }

Attributes

x : Float

Default value : 0
Description : 在 x 轴上的坐标值.

y : Float

Default value : 0
Description : 在 y 轴上的坐标值.

width : Float

Default value : 0
Description : x 的别名.

height : Float

Default value : 0
Description : y 的别名.

isVector2 : Boolean

Default value : true (只读)
Description : 类型是否为二维向量 Vector2.

Methods

set(x, y) : this
x Float 在x轴上的坐标值
y Float 在y轴上的坐标值

对向量的x, y分量赋值.

setX( x ),   setY( y ) : this
x / y Float 在 x轴 / y轴 上的坐标值

设置在 x轴 / y轴 上的坐标值.

setScalar( scalar ) : this
scalar Float 数值

设置在x, y轴上的坐标值: 同一个数值 scalar.

setComponent( index, value ) : this
index 0 / 1 索引
value Float 数值

根据索引来对元素进行赋值:0对x赋值, 1对y赋值.

getComponent( index ) : Float
index 0 / 1 索引

根据索引来获取对应的元素:从0得到x, 从1得到y.

add( v ),   sub( v ),   multiply( v ),   divide( v ) : this
v Vector2 二维向量

this.x += v.x;    this.y += v.y;
this.x -= v.x;     this.y -= v.y;
this.x *= v.x;     this.y *= v.y;
this.x /= v.x;     this.y /= v.y;
自身与 v 进行: 加法, 减法, 相同排序的元素相乘, 相除(向量不能直接除) 的运算. 都是自身的x, y分别和另一个二维向量的x, y进行相加, 相减, 相乘, 相除运算.
warn:
THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.
THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.
警告:
add() 方法只传一个参数, 如传入两个参数, 请用 addVectors( a, b ) 代替.
sub() 方法只传一个参数, 如传入两个参数, 请用 subVectors( a, b ) 代替.

addScalar( s ),   subScalar( s ),   multiplyScalar( s ),   divideScalar( s ) : this
s Float 数值

this.x += s;     this.y += s;
this.x -= s;     this.y -= s;
this.x *= s;     this.y *= s;
this.x *= 1/s;     this.y *= 1/s;
x, y分量都加上, 减去, 乘以, 除以同一个数值. 当进行乘除运算时, 相当于把自身延长或缩短.

addVectors( a, b ),   subVectors( a, b ) : this
a, b Vector2 二维向量

this.x = a.x + b.x;     this.y = a.y + b.y;
this.x = a.x - b.x;     this.y = a.y - b.y;
对两个二维向量求和/差, 计算结果再赋予自身.

addScaledVector( v, s ) : this
v Vector2 二维向量
s Float 数值

this.x += v.x * s;
this.y += v.y * s;
v跟s进行数乘后, 再与自身求和.

applyMatrix3( m ) : this
m Matrix3 三维矩阵

var x = this.x, y = this.y;
var e = m.elements;
this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];
this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];
与一个三维矩阵相乘.

max( v ) : this
v Vector2 二维向量

this.x = Math.max( this.x, v.x );
this.y = Math.max( this.y, v.y );
分别对自身的x, y和 v 的x, y求最大值, 然后赋予自身.

min( v ) : this
v Vector2 二维向量

this.x = Math.min( this.x, v.x );
this.y = Math.min( this.y, v.y );
分别对自身的x, y和 v 的x, y求最小值, 然后赋予自身.

clamp( min, max ) : this
min Vector2 x和y为最小值的二维向量
max Vector2 x和y为最大值的二维向量

this.x = Math.max( min.x, Math.min( max.x, this.x ) );
this.y = Math.max( min.y, Math.min( max.y, this.y ) );
分别对自身的x, y求:在二维向量min, max中的分量的限定值. 超过max的x, y取max中的分量; 小于min的x, y取min的分量; 都不是的取原来自身.

clampScalar( minVal, maxVal ) : this
minVal Float 小的数值
maxVal Float 大的数值

min.set( minVal, minVal );
max.set( maxVal, maxVal );
this.clamp( min, max );
分别对自身的x, y求:在minVal, maxVal中的限定值. 超过maxVal的取maxVal; 小于minVal的取minVal; 都不是的取原来自身.

clampLength( min, max ) : Vector2
min Float 长度
max Float 长度

this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );
对自身的x, y进行等比例缩放, 缩放值为: 对自身的长度和传入的两个长度求限定值, 归一化长度, 再乘以限定值.

ceil( ) : this

this.x = Math.ceil( this.x );
this.y = Math.ceil( this.y );
向上取整:分别对x, y取大于或等于它的最大整数.

floor( ) : this

this.x = Math.floor( this.x );
this.y = Math.floor( this.y );
向下取整:分别对x, y取小于或等于它的最大整数.

round( ) : this

this.x = Math.round( this.x );
this.y = Math.round( this.y );
分别对x, y四舍五入.

roundToZero( ) : this

this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );
this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );
向零取整:x, y 小于0时, 取大于或等于它的最大整数; 大于0时, 取小于或等于它的最大整数.

negate( ) : this

分别对x, y取负.

dot( v ) : Float
v Vector2 二维向量

this.x * v.x + this.y * v.y
点积(内积).

length( ) : Float

Math.sqrt( this.x * this.x + this.y * this.y )
向量的长度.

lengthSq( ) : Float

向量的长度的平方.

manhattanLength( ) : Float

曼哈顿距离:|x|+|y|.

normalize( ) : Vector2

this.divideScalar( this.length() || 1 )
归一化长度.

angle( ) : Float

向量与x轴的夹角.

distanceTo( v ) : Float
v Vector2 二维向量

自身到 v 的距离.

distanceToSquared( v ) : Float
v Vector2 二维向量

dx = this.x - v.x, dy = this.y - v.y;
dx * dx + dy * dy;
自身到 v 的距离的平方.

manhattanDistanceTo( ) : Float
v Vector2 二维向量

Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ); 自身到与 v 的曼哈顿距离.

setLength( length ) : this
length Float 长度

this.normalize().multiplyScalar( length ); 设置长度.

lerp( v, alpha ) : this
v Vector2 二维向量
alpha Float Alpha通道

this.x += ( v.x - this.x ) * alpha;
this.y += ( v.y - this.y ) * alpha;
线性插值.

lerpVectors( v1, v2, alpha ) : Vector2
v1 / v2 Vector2 二维向量
alpha Float Alpha通道

this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );
两向量的线性插值.

equals( v ) : Boolean
v Vector2 二维向量

自身与 v 是否相等.

fromArray( array, offset ) : this
array Array 数组
offset Integer 偏移量索引

this.x = array[ offset ];
this.y = array[ offset + 1 ];
从数组中索引为offset开始, 取数赋予自身.

toArray( array, offset ) : Array
array Array 数组
offset Integer 偏移量索引

array[ offset ] = this.x;
array[ offset + 1 ] = this.y;
把自身的x, y值替换到数组中, 从索引为offset处开始替换.

fromBufferAttribute( attribute, index ) : this
attribute BufferAttribute 属性缓存区
index Integer 索引

this.x = attribute.getX( index );
this.y = attribute.getY( index );
从 attribute 中取得索引为index处的坐标赋予自身.
warn: THREE.Vector2: offset has been removed from .fromBufferAttribute().
警告: fromBufferAttribute() 已经不再需要offset这个参数.

rotateAround( center, angle ) : this
center Vector2 中心点
angle Float 角度

向量绕中心点 center 旋转 angle 角度.

clone( ) : Vector2

复制自身.

copy( v ) : this
v Vector2 一个二维向量

把一个二维向量值赋值到自身.

图解API

二维向量的表示, 及它的长度.

向量的加法:平行四边形法, 三角形法.

向量的减法.