Three.js API手册

动画
AnimationAction AnimationClip AnimationMixer AnimationObjectGroup AnimationUtils KeyframeTrack PropertyBinding PropertyMixer
动画 / 轨道
BooleanKeyframeTrack ColorKeyframeTrack NumberKeyframeTrack QuaternionKeyframeTrack StringKeyframeTrack VectorKeyframeTrack
音频
Audio AudioAnalyser AudioContext AudioListener PositionalAudio
摄像机
ArrayCamera Camera CubeCamera OrthographicCamera PerspectiveCamera StereoCamera
常量
Animation Core CustomBlendingEquation DrawModes Materials Renderer Textures
核心
BufferAttribute BufferGeometry Clock DirectGeometry EventDispatcher Face3 Geometry InstancedBufferAttribute InstancedBufferGeometry InstancedInterleavedBuffer InterleavedBuffer InterleavedBufferAttribute Layers Object3D Raycaster Uniform
核心 / BufferAttributes
BufferAttribute_Types
弃用列表
DeprecatedList
附件
Earcut ShapeUtils
附件 / 核心
Curve CurvePath Font Interpolations Path Shape ShapePath
附件 / 曲线
ArcCurve CatmullRomCurve3 CubicBezierCurve CubicBezierCurve3 EllipseCurve LineCurve LineCurve3 QuadraticBezierCurve QuadraticBezierCurve3 SplineCurve
附件 / 物体
ImmediateRenderObject
几何体
BoxBufferGeometry BoxGeometry CircleBufferGeometry CircleGeometry ConeBufferGeometry ConeGeometry CylinderBufferGeometry CylinderGeometry DodecahedronBufferGeometry DodecahedronGeometry EdgesGeometry ExtrudeBufferGeometry ExtrudeGeometry IcosahedronBufferGeometry IcosahedronGeometry LatheBufferGeometry LatheGeometry OctahedronBufferGeometry OctahedronGeometry ParametricBufferGeometry ParametricGeometry PlaneBufferGeometry PlaneGeometry PolyhedronBufferGeometry PolyhedronGeometry RingBufferGeometry RingGeometry ShapeBufferGeometry ShapeGeometry SphereBufferGeometry SphereGeometry TetrahedronBufferGeometry TetrahedronGeometry TextBufferGeometry TextGeometry TorusBufferGeometry TorusGeometry TorusKnotBufferGeometry TorusKnotGeometry TubeBufferGeometry TubeGeometry WireframeGeometry
辅助对象
ArrowHelper AxesHelper BoxHelper Box3Helper CameraHelper DirectionalLightHelper FaceNormalsHelper GridHelper PolarGridHelper PositionalAudioHelper HemisphereLightHelper PlaneHelper PointLightHelper RectAreaLightHelper SkeletonHelper SpotLightHelper VertexNormalsHelper
灯光
AmbientLight DirectionalLight HemisphereLight Light PointLight RectAreaLight SpotLight
灯光 / 阴影
DirectionalLightShadow LightShadow SpotLightShadow
加载器
AnimationLoader AudioLoader BufferGeometryLoader Cache CompressedTextureLoader CubeTextureLoader DataTextureLoader FileLoader FontLoader ImageBitmapLoader ImageLoader Loader LoaderUtils MaterialLoader ObjectLoader TextureLoader
加载器 / 管理器
DefaultLoadingManager LoadingManager
材质
LineBasicMaterial LineDashedMaterial Material MeshBasicMaterial MeshDepthMaterial MeshDistanceMaterial MeshLambertMaterial MeshMatcapMaterial MeshNormalMaterial MeshPhongMaterial MeshPhysicalMaterial MeshStandardMaterial MeshToonMaterial PointsMaterial RawShaderMaterial ShaderMaterial ShadowMaterial SpriteMaterial
数学库
Box2 Box3 Color Cylindrical Euler Frustum Interpolant Line3 Math Matrix3 Matrix4 Plane Quaternion Ray Sphere Spherical Triangle Vector2 Vector3 Vector4
数学库 / 插值
CubicInterpolant DiscreteInterpolant LinearInterpolant QuaternionLinearInterpolant
物体
Bone Group Line LineLoop LineSegments LOD Mesh Points Skeleton SkinnedMesh Sprite
渲染器
WebGLMultisampleRenderTarget WebGLRenderer WebGLRenderTarget WebGLRenderTargetCube
渲染器 / 着色器
ShaderChunk ShaderLib UniformsLib UniformsUtils
场景
Fog FogExp2 Scene
纹理贴图
CanvasTexture CompressedTexture CubeTexture DataTexture DataTexture3D DepthTexture Texture VideoTexture
在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

二维向量(Vector2)

表示2D vector(二维向量)的类。 一个二维向量是一对有顺序的数字(标记为x和y),可用来表示很多事物,例如:

  • 一个位于二维空间中的点(例如一个在平面上的点)。
  • 一个在平面上的方向与长度的定义。在three.js中,长度总是从(0, 0)到(x, y)的 Euclidean distance(欧几里德距离,即直线距离), 方向也是从(0, 0)到(x, y)的方向。
  • 任意的、有顺序的一对数字。

其他的一些事物也可以使用二维向量进行表示,比如说动量矢量、复数等等;但以上这些是它在three.js中的常用用途。

示例

var a = new THREE.Vector2( 0, 1 ); //no arguments; will be initialised to (0, 0) 
var b = new THREE.Vector2( ); 
var d = a.distanceTo( b );

构造函数

Vector2( x : Float, y : Float )

x - 向量的x值,默认为0
y - 向量的y值,默认为0

创建一个新的Vector2。

属性

# .isVector2 : Boolean

用于测试这个类或者派生类是否为Vector2,默认为true

你不应当对这个属性进行改变,因为它在内部使用,以用于优化。

# .height : Float

y的别名。

# .width : Float

x的别名。

# .x : Float

# .y : Float

方法

# .add ( v : Vector2 ) : this

将传入的向量v和这个向量相加。

# .addScalar ( s : Float ) : this

将传入的标量s和这个向量的x值、y值相加。

# .addScaledVector ( v : Vector2, s : Float ) : this

将所传入的v与s相乘所得乘积和这个向量相加。

# .addVectors ( a : Vector2, b : Vector2 ) : this

将该向量设置为 a + b。

# .angle () : Float

计算该向量相对于x轴正方向的弧度角度。

# .applyMatrix3 ( m : Matrix3 ) : this

将该向量乘以三阶矩阵m(第三个值隐式地为1)。

# .ceil () : this

向量中的x分量和y分量向上取整为最接近的整数值。

# .clamp ( min : Vector2, max : Vector2 ) : this

min - 在限制范围内,x和y的最小值。
max - 在限制范围内,x和y的最大值。

如果该向量的x值或y值大于限制范围内最大x值或y值,则该值将会被所对应的值取代。

如果该向量的x值或y值小于限制范围内最小x值或y值,则该值将会被所对应的值取代。

# .clampLength ( min : Float, max : Float ) : this

min - 长度将被限制为的最小值
max - 长度将被限制为的最大值

如果向量长度大于最大值,则它将会被最大值所取代。

如果向量长度小于最小值,则它将会被最小值所取代。

# .clampScalar ( min : Float, max : Float ) : this

min - 分量将被限制为的最小值
max - 分量将被限制为的最大值

如果该向量的x值或y值大于最大值,则它们将被最大值所取代。

如果该向量的x值或y值小于最小值,则它们将被最小值所取代。

# .clone () : Vector2

返回一个新的Vector2,其具有和当前这个向量相同的x和y。

# .copy ( v : Vector2 ) : this

将所传入Vector2的x和y属性复制给这一Vector2。

# .distanceTo ( v : Vector2 ) : Float

计算该vector到传入的v的距离。

# .manhattanDistanceTo ( v : Vector2 ) : Float

计算该vector到传入的v的曼哈顿距离(Manhattan distance)。

# .distanceToSquared ( v : Vector2 ) : Float

计算该向量到传入的v的平方距离。 如果你只是将该距离和另一个距离进行比较,则应当比较的是距离的平方, 因为它的计算效率会更高一些。

# .divide ( v : Vector2 ) : this

将该向量除以向量v。

# .divideScalar ( s : Float ) : this

将该向量除以标量s。
如果传入的s = 0,则向量将被设置为( 0, 0 )

# .dot ( v : Vector2 ) : Float

计算该vector和所传入v的点积(dot product)。

# .cross ( v : Vector2 ) : Float

计算该vector和所传入v的叉积(cross product)。 请注意,“叉积”在2D中并没有被明确定义。该函数计算的是2D图形中经常使用的几何叉积。

# .equals ( v : Vector2 ) : Boolean

检查该向量和v的严格相等性。

# .floor () : this

向量中的x分量和y分量向下取整为最接近的整数值。

# .fromArray ( array : Array, offset : Integer ) : this

array - 来源的数组。
offset - (可选)在数组中的元素偏移量,默认值为0。

设置向量中的x值为array[ offset ],y值为array[ offset + 1 ]。

# .fromBufferAttribute ( attribute : BufferAttribute, index : Integer ) : this

attribute - 来源的attribute。
index - 在attribute中的索引。

从attribute中设置向量的x值和y值。 、

# .getComponent ( index : Integer ) : Float

index - 0 或 1

如果index值为0则返回x值。
如果index值为1则返回y值。

# .length () : Float

计算从(0, 0)到(x, y)的欧几里得长度 (Euclidean length,即直线长度)。

# .manhattanLength () : Float

计算该向量的曼哈顿长度(Manhattan length)。

# .lengthSq () : Float

计算从(0, 0)到(x, y)的欧几里得长度 (Euclidean length,即直线长度)的平方。 如果你正在比较向量的长度,应当比较的是长度的平方,因为它的计算效率更高一些。

# .lerp ( v : Vector2, alpha : Float ) : this

v - 朝着进行插值的Vector2。
alpha - 插值因数,其范围在[0, 1]闭区间。

在该向量与传入的向量v之间的线性插值,alpha是沿着线的距离长度。 —— alpha = 0 时表示的是当前向量,alpha = 1 时表示的是所传入的向量v。

# .lerpVectors ( v1 : Vector2, v2 : Vector2, alpha : Float ) : this

v1 - 起始的Vector2。
v2 - 朝着进行插值的Vector2。
alpha - 插值因数,其范围在[0, 1]闭区间。

将此向量设置为在v1和v2之间进行线性插值的向量, 其中alpha为两个向量之间连线的距离长度。 —— alpha = 0 时表示的是v1,alpha = 1 时表示的是v2。

# .negate () : this

向量取反,即: x = -x , y = -y。

# .normalize () : this

将该向量转换为单位向量(unit vector), 也就是说,将该向量的方向设置为和原向量相同,但是其长度(length)为1。

# .max ( v : Vector2 ) : this

如果该向量的x值或y值小于所传入v的x值或y值,则将该值替换为对应的最大值。

# .min ( v : Vector2 ) : this

如果该向量的x值或y值大于所传入v的x值或y值,则将该值替换为对应的最小值。

# .multiply ( v : Vector2 ) : this

将该向量与所传入的向量v进行相乘。

# .multiplyScalar ( s : Float ) : this

将该向量与所传入的标量s进行相乘。

# .rotateAround ( center : Vector2, angle : float ) : this

center - 将被围绕旋转的点。
angle - 将要旋转的角度,以弧度来表示。

将向量围绕着center旋转angle弧度。

# .round () : this

向量中的x分量和y分量四舍五入取整为最接近的整数值。

# .roundToZero () : this

向量中的分量朝向0取整数(若分量为负数则向上取整,若为正数则向下取整)。

# .set ( x : Float, y : Float ) : this

设置该向量的x和y分量。

# .setComponent ( index : Integer, value : Float ) : null

index - 0 或 1
value - Float

如果index值为0则将x值设置为value。
如果index值为1则将y值设置为value

# .setLength ( l : Float ) : this

将该向量的方向设置为和原向量相同,但是长度(length)为l。

# .setScalar ( scalar : Float ) : this

将该向量的x、y值同时设置为等于传入的scalar。

# .setX ( x : Float ) : this

将向量中的x值替换为x。

# .setY ( y : Float ) : this

将向量中的y值替换为y。

# .sub ( v : Vector2 ) : this

从该向量减去向量v。

# .subScalar ( s : Float ) : this

从该向量的x和y中减去标量s。

# .subVectors ( a : Vector2, b : Vector2 ) : this

将该向量设置为a - b。

# .toArray ( array : Array, offset : Integer ) : Array

array - (可选)被用于存储向量的数组。如果这个值没有传入,则将创建一个新的数组。
offset - (可选) 数组中元素的偏移量。

返回一个数组[x, y],或者将x和y复制到所传入的array中。

源代码

src/math/Vector2.js