Three.js学习笔记-Math(数学工具库)

Box2

2D空间中的盒子
构造函数
Box2(min: Vector2,max:Vector2)
属性

  • min 表示框的下边界。默认(+Infinity,+Infinity)
  • max 表示框的上边界。默认(-Infinity,-Infinity)

方法

  • clampPoint(point,target) 将点夹在盒子的范围之内
  • containsBox(box)/containsPoint(point) 返回true/false来确认包含关系
  • copy(Box2)
  • distanceToPoint(point) 点在box内部返回0
  • equals(box) 确认是否有相同的上下界
  • expandByPoint(point) 扩展box的边至到包括了point
  • expandByScalar(float) 负值时box将缩小
  • expandByVector(vector2) 矢量等距离扩展box
  • getCenter(target)
  • getParameter(point,target) 返回一个box宽高等比的点
  • getSize(target) 返回box的宽高
  • intersect(box):Box 返回相交的部分,上界较小的,下界较大的
  • intersectsBox(box): Boolean 框和框是否相交
  • isEmpty() box的边界上零个点返回true
  • makeEmpty()
  • set(min,max)
  • setFromCenterAndSize(center,size)
  • setFromPoints(points: Array)
  • translate(offset) 2D空间偏移
  • union(box) 上界为最大的,下界为最小的

Box3

构造函数
Box3(min: Vector3,max:Vector3)
属性

  • isBox3 默认true

方法

  • applyMatrix4(matrix4) 通过矩阵来转换box3
  • expandByObject(object: Object3D)
  • getBoundingSphere(target: Sphere) 返回Sphere对象
  • intersectsPlane(plane: Plane) 返回Boolean
  • intersectsSphere(sphere: Sphere) 返回Boolean
  • setFromBufferAttribute(attribute: BufferAttribute) 上下界应包含所有的数据
  • setFromObject(object: Object3D)
  • 其他和Box2一样,参数格式不一样而已

Color

构造函数
Color(r: COlor_Hex_or_String,g: float,b:float)
参数可选,表示方法多样
rgb(255,0,0)/rgb(100%,0,0)/hsl(0,100%,50%)/0xffffff/red/1,0,0"
属性

  • isColor
  • r 默认1,红色通道值0-1
  • g 默认1,路色通道值0-1
  • b 默认1,蓝色通道值0-1

方法

  • add(color)
  • addColors(color1,color2)
  • addScalar(s: Number) 增加s到RGB的值上面
  • clone()
  • copy(color)
  • convertGammaToLinear(gammaFactor: float) 参数默认2,从线性空间到伽马空间,取r,g,b相应的gammaFactor的幂
  • convertLinearToGamma(gammaFactor: float) 参数默认2,从线性空间到伽马空间,取r,g,b相应的1/gammaFactor的幂
  • copyGammaToLinear(color,gammaFactor: float)
  • copyLinearToGamma(color,gammaFactor: float)
  • convertSRGBToLinear()
  • convertLinearToSRGB()
  • copySRGBToLinear(color)
  • copyLinearToSRGB(color)
  • equlas(color)
  • fromArray(array,offset) array匹配 [ r, g, b ].
  • getHex() 返回类型Integer 十六进制的值
  • getHexString() 如FFFFFF
  • getHSL(target) 返回Object 如{ h: 0, s: 0, l: 0 }
  • getStyle() 返回值的css样式,如rgb(255,0,0)
  • lerp(color,alpha) 线性差值,alpha被认为是两个颜色的比率,取值[0-1]
  • lerpHSL(color,alpha)
  • multiply(color)
  • multiplyScalar(s:Float)
  • offsetHSL(h: float,s,l)
  • set(color_hex_or_string)
  • setHex(hex)
  • setHSL(h,s,l)
  • setRGB(r,g,b)
  • setScalar(scalar) 参数范围0.0-1.0
  • setStyle(style: String) 如rgb(255, 255, 255)
  • sub(color) 减去的结果为负值,将结果设置为0
  • toArray(array,offset)

Cylindrical

构造函数
Cylindrical( radius : Float, theta : Float, y : Float )
radius 默认1.0
theta: 从正z轴以弧度表示的x-z平面的逆时针角度。默认值为0
y x-z平面的的高度,默认是0
方法

  • clone()
  • copy(other)
  • set( radius : Float, theta : Float, y : Float )
  • setFromVector3(vector3) 将圆柱体的三个参数用向量值来代替
  • setFromCartesianCoords(x:float,y,z) 从笛卡尔坐标设置

Euler

构造函数
Eular(x,y,z,order) x,y,z默认0,弧度表示各个轴旋转;order默认XYZ表示默认的旋转顺序,必须大写。
属性

  • isEuler 默认true
  • order: String 表示物体的前面单个参数旋转的轴的顺序,order改变时onChangeCallback将会被调用
  • x: float
  • y: float
  • z: float

方法

  • clone()
  • copy(euler)
  • equals(euler)
  • fromArray(array) x轴array[0],y轴array[1],z轴array[2],order是array[3]
  • reorder(newOrder: String) 新的顺序重置欧拉角
  • onChange(onChangeCallback) 设置onChangeCallback函数的值
  • onChangeCallback() 让修改了想x,y,z,或者order时调用的函数
  • set(x,y,z[,order])
  • setFromRotationMatrix(matrix4[,order,update: Boolean]) update决定是否调用onChangeCallback函数
  • setFromQuaternion(quaternion[,order,update])
  • setFromVector3(vector3[,order])
  • toArray([array,offset]) offset数组中的偏移,默认返回[x,y,z,order]
  • toVector3([optionResult: Vector3]) 可选参数optionResult 结果传递的对象

Frustum

视锥体,主要用于内部渲染器,来确定什么是在相机的视野内,有助于加速渲染过程
构造函数
Frustum([p0 : Plane,...,p5: Plane])
属性

  • plane: Array 有6参数的数组
    方法
  • clone()
  • containPoint(point: Vector3)
  • copy(frustum)
  • intersectsBox(box3)
  • interstctsObject(object)
  • interstcesSphere(sphere)
  • intersectsSprite(sprite)
  • set(p0,p1,p2,p3,p4,p5)
  • setFromMatrix(matrix)

Interpolant

参数样本上插值的抽象基类
构造函数
Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer )
方法

  • evaluate(t: Number) 计算位置t除的插值

Line3

构造函数
Line3(start:Vector3,end:Vector3)
方法

  • applyMatrix(matrix4)
  • clone()
  • copy(line)
  • at(t: float,target:V3) t=0 返回起点;t=1 返回终点,结果将会复制到target中
  • closestPointToPoint(point,clampToLine: Boolean,target) clampToLine 为true时将找的的点夹在线段中
  • closestPointToPointParameter(point,clampToLine) 线段上投影的最近点参数,clampToLine为真时反之值介于0-1
  • delta(target) 结果返回到target,返回线段的增量向量
  • equals(line)
  • getCenter(target) 结果返回到target
  • distanceSq() 返回距离的平方
  • set(start,end)

Math

方法

  • clamp(value,min,max)
  • degToRad(degree: float)
  • generateUUID()
  • euclideanModulo(n,m) ((n%m)+m)%m 欧几里得模
  • isPowerofTwo(n: Number)
  • radToDeg(rad)
  • lerp(x: float,y,t) t[0,1] 插值
  • mapLinear(a,al,a2,b1,b2) x从范围[a1,a2]到范围[b1,b2]的线性映射
  • ceilPowerofTwo(n: Number) 返回大于n的最小的2的幂
  • floorPowerOfTwo(n)
  • randFloat(low,high) 返回一个随机数基于low和high之间的
  • randFloatSprate(range) 浮动范围[-range/2,range/2]
  • randInt(low,high)
  • smoothstep(x,min,max) 返回一个0-1之间的值。x在min和max之间移动的百分比,但随着x与min和max的距离减小或减慢
  • smootherstep(x,min,max)

Matrix3

构造函数
Matrix3()
特性

  • element : Float32Array
  • isMatrix3

方法

  • clone()
  • copy(matrix3)
  • applyToBufferAttribute(attribute: BufferAttribute)
  • determinant() 返回行列式
  • equals(matrix3)
  • fromArray(array,offset)
  • getInverse(matrix3, throwOnDegenerate: Boolean) 矩阵的逆,不可逆转时返回3*3恒等矩阵
  • indentity() 重置恒等单位矩阵
  • multiply(matrix3)
  • multiplyMatrices(matrix3,matrix3)
  • multiplyScalar(s)
  • set(n11,n12,n13,n21,n22,n23,n31,n32,n33)
  • premultiply(matrix)
  • setFromMatrix4(matrix4)
  • setUvTransform(tx,ty,sx,sy,ration,cx,cy) tx offset x; sx repeat x;cx 旋转的x
  • toArray(array,offset)
  • transpose() 转置矩阵
  • transposeIntoArray(array)

Matrix4

属性

  • elements
  • isMatrix4
    方法
  • applyToBufferAttribute(attribute)
  • clone()
  • compose(position,quaternion,scale) 将矩阵设置成三个参数组成的变换
  • copy(matrix)
  • copyPosition(matrix)
  • decompose(position,quaternion,scale) 将矩阵转换成各自参数的内容传递给参数
  • determinant() 行列式
  • equals(matrix)
  • extractBasis(xAxis: vector3,yAxis,zAxis)
a, b, c, d,
e, f, j, h,
i, j, k, l, 
m, n, o, p,

xAxis = (a, e, i);
yAxis = (b, f, j);
zAxis = (c, j, k);
  • extractRotation(matrix)
  • fromArray(array,offset) offset 默认1
  • getInverse(matrxi,throwOnDegenerate)
  • getMaxScaleOnAxis() 获取三个轴的最大缩放量
  • indentity()
  • lookAt(eye,center,up)
  • makeRotationAxis(axis,theta: Float) theta 弧度
  • makeBasic(xAxis,yAxis,zAxis)
  • makePerspective(left,right,top,bottom,near,far) PerspectiveCamera.updateProjectionMatrix()内部使用的
  • makeOrthographic(left,right,top,bottom,near,far)
  • makeRotationFromEuler(euler)
  • makeRotationFromQuaternion(quaternion)
  • makeRotationX(theta)
  • makeRotationy(theta)
  • makeRotation(theta)
  • makeScale(x,y,z)
  • makeShear(x,y,z) 剪切变换
  • makeTranslation(x,y,z)
  • multiply(matrx)
  • multiplyMatrices(matrix1,matrix2)
  • multiplyScalar(s)
  • premultiply(matrix)
  • scale(vevtor3)
  • set(n11,…,m44)
  • setPosition(vector3)
  • toArray(array, offset)
  • transpose() 转换

Plane

在三维空间无限延申的二维曲面
构造函数
Plane([normal: Vector3,constant: Float]) 前者默认(1,0,0) 后者默认0,远点到平面的距离
方法

  • applyMatrix(matrix,optionNormalMatrix)
  • clone()
  • copy()
  • coplanarPoint(target) 计算原点处的法向量在面上的投影
  • equals(plane)
  • intersecLine(line,target) 返回交点
  • intersectsBox(box) 返回Boolean
  • intersectsLine(line) 返回Boolean
  • intersectsSphere(sphere) 返回Boolean
  • negate()
  • distanceToPoint(point)
  • distanceToSphere(sphere)
  • normalize()
  • projectPoint(point,target) 将点投射到面上
  • set(normalize,const)
  • setComponents(x,y,z,w)
  • setFromCoplanarPoines(a:Vector3,b,c) 三个点定义平面,绕线逆时针
  • setFromNormalAndCoplanarPoint(normal,point)
  • translate(offset)

Quaternion

旋转对象,不会遇到万向锁 的问题
构造函数
Quaternion(x,y,z,w) 更改任何一个将触发调用onChangeCallback
方法

  • clone()
  • copy(q)
  • equals(q)
  • angleTo(q) 返回两个四元数之间的弧度
  • conjugate() 表示绕旋转轴相反方向的相同旋转,
var quaternion = new THREE.Quaternion();
	quaternion.setFromAxisAngle(v3,Math.PI/2);
intersect[0].object.parent.applyQuaternion(quaternion.conjugate());
//quaternion.conjugate() 等同于quaternion.setFromAxisAngle(v3,-Math.PI/2); 反方向旋转90°
  • dot()点积 得到一个在另一个上投影的乘积,越相似值越大
  • fromArray(arr,offset) 从数组arr中设置四元数中设置x,y,z,w属性
  • toArray(arr,offset) arr可选,存储四元数,没参数则新创建一个 返回四元数到数组[x,y,z,w]
  • inverse() 计算conjugate然后normalize
  • length() 计算四元数的欧式长度(直线长),它被认为是一个四维向量
  • lengthSq() 比较两个四元数长度时用得到,比length()稍微高效
  • normalize() 单位化,让长度为1
  • multiply(q)
  • premultiply(q)
  • multiplyQuaternions(q1,q2)
  • onChange(onChangeCallback) 设置onChangeCallback方法
  • onChangeCallback() 只要x,y,z,w特性发生变化或者那些有关影响这四个值的函数调用就会调用
  • rotationTowards(q,step: Flloat) 确保最后的四元数不会超过q
  • slerp(q,t:Float) t 插值因子[0,1] 处理四元数之间的球面线性插值
  • set ( x : Float, y : Float, z : Float, w : Float ) : Quaternion
  • setFromAxisAngle(axis: Vector3,angle: Float) 设置在轴旋转的弧度,轴必须长度为1,及单位化,角度为弧度
  • setFromEuler(euler) 通过Euler角度来设置四元数
  • setFromRotationMatrix(m4) 通过矩阵来设定四元素
  • setFromUnitVectors(vFrom,vTo)
    静态方法
  • slerp(qStart,qEnd,qTarget,t) qStart t=0,qEnd t =1, qTarget 设定为结果值 ,为slerp操作的结果
  • slerpFlat(dst,dstOffset,src0,srcOffset0,src1,srcOffset1,t) dst输出数组

Ray

从起始点发射光线,被Raycaster 用来协助光线投射
构造函数
Ray(origin,direction)
origin ,默认(0,0,0)
direction 必须是单位长度,Vector3.normalize(),射线的方向,默认(0,0,0)
方法

  • applyMatrix4(m4): Ray 通过矩阵来改变Ray
  • at(t:Float,target:Vector3): Vector3 得到一个沿着射线给定距离的坐标
  • clone()/copy(ray)
  • closestPointToPoint(point,target):Vector3 沿着光线得到离point最近的点,赋值给target
  • distanceSqToPoint(point:V3)
  • distanceToplane(plane)
  • distanceToPoint(point)
  • distanceSqToSegment(v0,v1,optionalPointOnRay,optionalPointOnSegment)
  • equlas(ray)
  • intersectBox(box3,target)
  • intersectPlane(plane,target)
  • intersectSphere(sphere,target)
  • intersectTriangle(v1,v2,v3,backfaceCulling:Boolean,target)
  • intersectsBox/Plane/Sphere(box/plane/sphere) Ray和目标相交时返回true
  • lookAt(v) 调整Ray的射线的方向,在世界坐标中
  • recast(t: Floa) 沿光线进行插值的距离
  • set(origin,direction) direction必须Vector3.normalize() 规格化

Sphere

构造函数
Sphere(center,radius: float)

  • center 默认(0,0,0)
  • radius 默认0
    方法
  • applayMatrix4(m)
  • clampPoint(point,target)
  • clone()
  • copy(sphere)
  • distanceToPoint(point)
  • empty() 设置半径为0
  • equals(sphere)
  • getBoundingBox(box3) 获取最小的边界
  • intersectsBox(box3)
  • intersectsSphere(sphere)
  • intersectsPlane(plane)
  • set(center,radius)
  • setFromPoints(points: Array,optionCenter)
  • translate(offset) 偏移中心点

Spherical

一个点的球坐标
构造函数
Spherical( radius : Float, phi : Float, theta : Float )

  • radius 默认1.0
  • phi 默认0.0
  • theta 默认0.0
    极(Phi)位于正y轴和负y轴。赤道(θ)从正z开始
    方法
  • clone()
  • copy(s)
  • makeSafe() 限制极在0.000001到-0,000001
  • set(radius,phi,theta)
  • setFromVector3(v)
  • setFromCartesianCoords(x,y,z)

Triangle

构造函数
Triangle( a : Vector3, b : Vector3, c : Vector3 )
方法

  • clone()
  • closetPointToPoint(point,target)
  • copy(t)
  • equals(t)
  • getArea()
  • getBarycoord(point, target) 返回重心坐标
  • getMidpoint(target) 计算中点
  • containsPoint(point)
  • getNormal(target)
  • getPlane(plane)
  • intersectsBox(box)
  • setFromPointsAndIndices(points:Array,i0: Intefer,i1,i2)

Vector2

构造函数
Vector2(x,y)
属性

  • isVector2
  • height
  • width

方法

  • add(v)
  • addScale(s)
  • addScaledVector(v,s)
  • addVectors(v1,v2)
  • angle() 相对于正x轴,
  • applyMatrix3(m)
  • ceil()
  • clamp(min: vector2,max)
  • clampLength(min: Float,max)
  • clampScalar(min: Float,max)
  • clone()
  • copy(v)
  • distanceTo(v)
  • manhattanDistanceTo(v)
  • distanceToSquared(v)
  • divide(v)
  • divideScalar(s)
  • dot(v)
  • cross(v)
  • equlas(v)
  • floor()
  • fromArray(v,offset)
  • fromBufferAttribute(attribute,index)
  • getComponent(index)
  • length() 到原点的直线距离
  • manhanttanLength()
  • lengthSq()
  • lerp(v,alpha)
  • lerpVectors(v1,v2,alpha)
  • negate() 设置 x= -x,y = -y
  • normalize()
  • max(v) 向量的某一个轴参数小于参数的,就用参数对应的来代替
  • min(v)
  • multiply(v)
  • multiplyScalar(s)
  • rotateAround(center,angle)
  • round()
  • roundToZero()
  • set(x,y)
  • setComponet(index,value)
  • setLength(l)
  • setScalar(scalar)
  • setX(x)
  • setY(y)
  • sub(v)
  • subScalar(s)
  • subVector(a,b)
  • toArray(array,offset)

Vector3

方法

  • add(v)
  • addScale(s)
  • addScaledVector(v,s)
  • addVectors(v1,v2)
  • applyAxisAngle(axis,angle)
  • applyEuler(euler)
  • applyMatrix3(m)
  • applyMatrix4(m)
  • applyQuaternion(q)
  • angleTo(v)
  • ceil()
  • clamp(min: vector3,max)
  • clampLength(min: Float,max)
  • clampScalar(min: Float,max)
  • clone()
  • copy(v)
  • distanceTo(v)
  • manhattanDistanceTo(v)
  • distanceToSquared(v)
  • divide(v)
  • divideScalar(s)
  • dot(v)
  • cross(v)
  • crossVectors(a,b)
  • equlas(v)
  • floor()
  • fromArray(v,offset)
  • fromBufferAttribute(attribute,index)
  • getComponent(index)
  • length() 到原点的直线距离
  • manhanttanLength()
  • lengthSq()
  • lerp(v,alpha)
  • lerpVectors(v1,v2,alpha)
  • negate() 设置 x= -x,y = -y
  • normalize()
  • max(v) 向量的某一个轴参数小于参数的,就用参数对应的来代替
  • min(v)
  • multiply(v)
  • multiplyScalar(s)
  • rotateAround(center,angle)
  • peoject(camera)
  • projectOnVector(v)
  • reflect(normal)
  • round()
  • roundToZero()
  • set(x,y,z)
  • setComponet(index,value)
  • setFromCylindrical©
  • setFromCylindricalCoords(radius,theta,y)
  • setFromMatrixColumn(matrix4,index)
  • setFromMatrixPosition(m4)
  • setFromMatrixScalar(m4)
  • setFromSpherical(s)
  • setFromSphericalCoords(radius,phi,theta)
  • setLength(l)
  • setScalar(scalar)
  • setX(x)
  • setY(y)
  • setZ(z)
  • sub(v)
  • subScalar(s)
  • subVector(a,b)
  • transformDirection(m4)
  • unproject(camera)
  • toArray(array,offset)

Vector4

构造方法
Vector4(x,y,z,w)
方法

  • add(v)
  • addScale(s)
  • addScaledVector(v,s)
  • addVectors(v1,v2)
  • applyMatrix4(m)
  • ceil()
  • clamp(min,max)
  • clampLength(min,max)
  • clampScalar(min: float,max)
  • clone()
  • copy(m)
  • divideScalar(s)
  • dot()
  • equals(v)
  • floor()
  • fromArray(array,offset)
  • fromBufferAttribute(attribute,index)
  • getComponent(index)
  • length()
  • lengthSq()
  • lerp(v,float)
  • lerpVectors(v1,v2,alpha)
  • negate()
  • normalize()
  • max()
  • min()
  • multiplyScalar(s)
  • round()
  • roundToZero()
  • set(x,y,z,w)
  • setAsixAngleFromRotationMatrix(m)
  • setComponent(index,value)
  • setLength(l)
  • setScalar(s)
  • setX(x)
  • setY(y)
  • setZ(z)
  • setW(w)
  • sub()
  • subScalar(s)
  • subVectors(a,b)
  • toArray(array,offset)

你可能感兴趣的:(threejs)