# 数学模块
# 基础模块: Math
- 模块接口:
接口名称 | 接口含义 | 参数1类型 | 参数2类型 | 返回值说明 | 返回值类型 |
---|---|---|---|---|---|
sin | 正弦 | 浮点型-弧度值 | 空 | 返回以弧度为单位的角度的正弦值 | 浮点型 |
cos | 余弦 | 浮点型-弧度值 | 空 | 返回以弧度为单位的角度的余弦值 | 浮点型 |
tan | 正切 | 浮点型-弧度值 | 空 | 返回以弧度为单位的角度的正切值 | 浮点型 |
asin | 反正弦 | 浮点型 | 空 | 返回以弧度为单位的角度的反正弦值 结果范围在 -pi/2 到 pi/2 之间 | 浮点型 |
acos | 反余弦 | 浮点型 | 空 | 返回以弧度为单位的角度的反余弦值 结果范围在 0 到 pi 之间 | 浮点型 |
atan | 反正切 | 浮点型 | 空 | 返回以弧度为单位的角度 的反正切值 结果范围在 -pi/2 到 pi/2 之间 | 浮点型 |
radians | 角度转换 | 浮点型 | 空 | 将角度从度数转为弧度 | 浮点型 |
degrees | 角度转换 | 浮点型 | 空 | 将角度从弧度转为度数 | 浮点型 |
ceil | 向上取整 | 浮点型 | 空 | 返回大于或者等于参数的最小整数 | 整数 |
floor | 向下取整 | 浮点型 | 空 | 返回小于或者等于参数的最大整数 | 整数 |
exp | 幂函数 | 浮点型 | 空 | 返回e的x次幂 x为参数1 | 浮点型 |
log | 对数函数 | 浮点型 | 浮点型>0 | 只有参数1时, 返回参数1的自然底数 包含两个参数时, 返回log(x)/log(base) x: 参数1的值 base: 参数2的值 两个参数都需要大于0 | 浮点型 |
log2 | 以2为底数的对数函数 | 浮点型 | 空 | 返回 x 以2为底的对数 参数大于0 | 浮点型 |
log10 | 以10为底数的对数函数 | 浮点型 | 空 | 返回 x 以10为底的对数 参数大于0 | 浮点型 |
pow | 指数函数 | 浮点型 | 浮点型 | 返回 x 的 y 次幂 x: 参数1的值, 不可为0 y: 参数2的值 | 浮点型 |
sqrt | 平方根 | 浮点型 | 空 | 返回参数的算数平方根 | 浮点型 |
pi | 圆周率Π | 空 | 空 | 返回16位精度的圆周率 | 浮点型 |
e | 自然常数e | 空 | 空 | 返回十六位精度的圆周率 | 浮点型 |
# 三维向量: Vector3
展开: (三维向量)
- 定义方式:
// 空参构建 [0, 0, 0]
var b = new Vector3();
// 参数构建[0, 1, 0]
var a = new Vector3(0, 1, 0);
// 通过在程序中定义的点构建[p.x, p.y, p.z]
// 无法通过拾取件构建
var p = new Point();
var vector2 = new Vector3(p);
2
3
4
5
6
7
8
9
10
- 属性:
.x // 三维向量的x值, Number类型
.y // 三维向量的y值, Number类型
.z // 三维向量的z值, Number类型
2
3
复制方式:
引用复制
方法API:
add
- 参数:
add (v: Vector3)
- 功能: 将传入的向量v和这个向量相加。
- 返回值: this (Vector3)
- 参数:
addScalar
- 参数:
addScalar (s: Number)
- 功能: 将传入的标量s和这个向量的x值、y值以及z值相加。
- 返回值: this (Vector3)
- 参数:
addScaledVector
- 参数:
addScaledVector (v: Vector3, s: Number)
- 功能: 将所传入的v与s相乘所得的乘积和这个向量相加。
- 返回值: this (Vector3)
- 参数:
addVectors
- 参数:
addVectors (a: Vector3, b: Vector3)
- 功能: 将该向量设置为a + b。
- 返回值: this (Vector3)
- 参数:
applyMatrix4
- 参数:
applyMatrix4 (m: Matrix4)
- 功能: 将该向量乘以四阶矩阵m(第四个维度隐式的为1),并按照视角划分。
- 返回值: this (Vector3)
- 参数:
angleTo
- 参数:
angleTo (v: Vector3)
- 返回值: 该向量与向量v之间的角度 (Number, 弧度)
- 参数:
ceil
- 参数:
ceil ()
- 功能: 将该向量x分量、y分量以及z分量向上取整为最接近的整数。
- 返回值: this (Vector3)
- 参数:
clamp
- 参数:
clamp (min: Vector3, max: Vector3)
min - 在限制范围内,x值、y值和z的最小值。
max - 在限制范围内,x值、y值和z的最大值。 - 功能:
如果该向量的x值、y值或z值大于限制范围内最大x值、y值或z值,则该值将会被所对应的值取代。
如果该向量的x值、y值或z值小于限制范围内最小x值、y值或z值,则该值将会被所对应的值取代。 - 返回值: this (Vector3)
- 参数:
clampLength
- 参数:
clampLength (min: Number, max: Number)
min - 长度将被限制为的最小值。
max - 长度将被限制为的最大值。 - 功能:
如果向量长度大于最大值,则它将会被最大值所取代。
如果向量长度小于最小值,则它将会被最小值所取代。 - 返回值: this (Vector3)
- 参数:
clampScalar
- 参数:
clampScalar (min: Number, max: Number)
min - 分量将被限制为的最小值。
max - 分量将被限制为的最大值。 - 功能:
如果该向量的x值、y值或z值大于最大值,则它们将被最大值所取代。
如果该向量的x值、y值或z值小于最小值,则它们将被最小值所取代。 - 返回值: this (Vector3)
- 参数:
clone
- 参数:
clone ()
- 返回值: 一个新的Vector3,其具有和当前这个向量相同的x、y和z (Vector3)
- 参数:
copy
- 参数:
copy (v: Vector3)
- 功能: 将所传入Vector3的x、y和z属性复制给当前的Vector3。
- 返回值: this (Vector3)
- 参数:
cross
- 参数:
cross (v: Vector3)
- 功能: 将该向量设置为它本身与传入的v的叉积(cross product)。
- 返回值: this (Vector3)
- 参数:
crossVectors
- 参数:
crossVectors (a: Vector3, b: Vector3)
- 功能: 将该向量设置为传入的a与b的叉积 (cross product)。
- 返回值: this (Vector3)
- 参数:
distanceTo
- 参数:
distanceTo (v: Vector3)
- 返回值: 该向量到所传入的v间的距离 (Number)
- 参数:
manhattanDistanceTo
- 参数:
manhattanDistanceTo (v: Vector3)
- 返回值: 向量到所传入的v之间的曼哈顿距离 (Number)
- 参数:
distanceToSquared
- 参数:
distanceToSquared (v: Vector3)
- 返回值: 该向量到传入的v的平方距离 (Number)
- 参数:
divide
- 参数:
divide (v: Vector3)
- 功能: 将该向量除以向量v。
- 返回值: this (Vector3)
- 参数:
divideScalar
- 参数:
divideScalar (s: Number)
- 功能:
将该向量除以标量s。
如果传入的s = 0,则向量(this)将被设置为( 0, 0, 0 )。 - 返回值: this (Vector3)
- 参数:
dot
- 参数:
dot ()
- 返回值: 该向量和所传入v的点积 (Number)
- 参数:
equals
- 参数:
equals (v: Vector3)
- 返回值: 该向量和v的严格相等性 (Boolean)
- 参数:
floor
- 参数:
floor ()
- 功能: 向量的分量向下取整为最接近的整数值。
- 返回值: this (Vector3)
- 参数:
fromArray
- 参数:
fromArray (array: List, offset: Integer)
array - 来源矩阵。
offset - (可选)在数组中的元素偏移量,默认值为0。 - 功能: 设置向量中的x值为array[offset + 0],y值为array[offset + 1], z值为array[offset + 2]。
- 返回值: this (Vector3)
- 参数:
getComponent
- 参数:
getComponent (index: Integer)
index - (支持传入参数的值) 0, 1 或 2。 - 功能: 通过位置信息获取三维向量的元素值。
- 返回值:
如果index值为0,返回x值 (Number)
如果index值为1,返回y值 (Number)
如果index值为2,返回z值 (Number)
- 参数:
length
- 参数:
length ()
- 返回值: 从(0, 0, 0) 到 (x, y, z)的欧几里得长度 (Number)
- 参数:
manhattanLength
- 参数:
manhattanLength ()
- 返回值: 该向量的曼哈顿长度 (Number)
- 参数:
lengthSq
- 参数:
lengthSq ()
- 返回值: 计算从(0, 0, 0)到(x, y, z)的欧几里得长度的平方 (Number)
- 参数:
lerp
- 参数:
lerp (v: Vector3, alpha: Number)
v - 朝着进行插值的Vector3。
alpha - 插值因数,其范围通常在[0, 1]闭区间。 - 功能: 在该向量与传入的向量v之间的线性插值,alpha是沿着线的长度的百分比(alpha=0时表示的是当前向量,alpha=1时表示的是所传入的向量v)。
- 返回值: this (Vector3)
- 参数:
lerpVectors
- 参数:
lerpVectors (v1: Vector3, v2: Vector3, alpha: Number)
v1 - 起始的Vector3。
v2 - 朝着进行插值的Vector3。
alpha - 插值因数,其范围通常在[0, 1]闭区间。 - 功能: 将此向量设置为在v1和v2之间进行线性插值的向量, 其中alpha为两个向量之间连线的长度的百分比(alpha=0时表示的是v1, alpha=1时表示的是v2)。
- 返回值: this (Vector3)
- 参数:
max
- 参数:
max (v: Vector3)
- 功能: 如果该向量的x值、y值或z值小于所传入v的x值、y值或z值,则将该值替换为对应的最大值。
- 返回值: this (Vector3)
- 参数:
min
- 参数:
min (v: Vector3)
- 功能: 如果该向量的x值、y值或z值大于所传入v的x值、y值或z值,则将该值替换为对应的最小值。
- 返回值: this (Vector3)
- 参数:
multiply
- 参数:
multiply (v: Vector3)
- 功能: 将该向量与所传入的向量v进行相乘。
- 返回值: this (Vector3)
- 参数:
multiplyScalar
- 参数:
multiplyScalar (s: Number)
- 功能: 将该向量与所传入的标量s进行相乘。
- 返回值: this (Vector3)
- 参数:
multiplyVectors
- 参数:
multiplyVectors (a: Vector3, b: Vector3)
- 功能: 按照分量顺序,将该向量设置为和a * b相等。
- 返回值: this (Vector3)
- 参数:
negate
- 参数:
negate ()
- 功能: 向量取反,即:x = -x, y = -y , z = -z。
- 返回值: this (Vector3)
- 参数:
normalize
- 参数:
normalize ()
- 功能: 将该向量转换为单位向量(方向相同,长度(length)为1)。
- 返回值: this (Vector3)
- 参数:
projectOnPlane
- 参数:
projectOnPlane (planeNormal: Vector3)
planeNormal – 表示平面法线的向量 - 功能: 通过从该向量中减去投影到平面法线上的向量,将该向量投影到平面上。
- 返回值: this (Vector3)
- 参数:
projectOnVector
- 参数:
projectOnVector (Vector3: Vector3)
- 功能: 投影(Projects)该向量到向量v上。
- 返回值: this (Vector3)
- 参数:
reflect
- 参数:
reflect (normal: Vector3)
normal – 反射平面的法线 - 功能: 将这个向量反射到与法线正交的平面之外(假设法线有长度)。
- 返回值: this (Vector3)
- 参数:
round
- 参数:
round ()
- 功能: 向量中的分量四舍五入取整为最接近的整数值。
- 返回值: this (Vector3)
- 参数:
roundToZero
- 参数:
roundToZero ()
- 功能: 向量中的分量朝向0取整数(若分量为负数则向上取整,若为正数则向下取整)。
- 返回值: this (Vector3)
- 参数:
set
- 参数:
set (x: Number, y: Number, z: Number)
- 功能: 设置该向量的x、y 和 z 分量。
- 返回值: this (Vector3)
- 参数:
setComponent
- 参数:
setComponent (index: Integer, value: Number)
index - (支持传入参数的值) 0、1 或 2。
value - 设置对应位置的值。 - 功能:
若index为 0 则设置 x 值为 value。
若index为 1 则设置 y 值为 value。
若index为 2 则设置 z 值为 value。 - 返回值: this (Vector3)
- 参数:
setFromMatrixColumn
- 参数:
setFromMatrixColumn (matrix: Matrix4, index: Integer)
- 功能: 从传入的四阶矩阵matrix由index指定的列中,设置该向量的x值、y值和z值。
- 返回值: this (Vector3)
- 参数:
setFromMatrixPosition
- 参数:
setFromMatrixPosition (m: Matrix4)
- 功能: 从变换矩阵(transformation matrix)m中, 设置该向量为其中与位置相关的元素。
- 返回值: this (Vector3)
- 参数:
setFromMatrixScale
- 参数:
setFromMatrixScale (m: Matrix4)
- 功能: 从变换矩阵(transformation matrix)m中, 设置该向量为其中与缩放相关的元素。
- 返回值: this (Vector3)
- 参数:
setLength
- 参数:
setLength (l: Number)
- 功能: 将该向量的方向设置为和原向量相同,但是长度(length)为l。
- 返回值: this (Vector3)
- 参数:
setScalar
- 参数:
setScalar (scalar: Number)
- 功能: 将该向量的x、y和z值同时设置为等于传入的scalar。
- 返回值: this (Vector3)
- 参数:
setX
- 参数:
setX (x: Number)
- 功能: 将向量中的x值替换为x。
- 返回值: this (Vector3)
- 参数:
setY
- 参数:
setY (y: Number)
- 功能: 将向量中的y值替换为y。
- 返回值: this (Vector3)
- 参数:
setZ
- 参数:
setZ (z: Number)
- 功能: 将向量中的z值替换为z。
- 返回值: this (Vector3)
- 参数:
sub
- 参数:
sub (v: Vector3)
- 功能: 从该向量减去向量v。
- 返回值: this (Vector3)
- 参数:
subScalar
- 参数:
subScalar (s: Number)
- 功能: 从该向量的x、y和z中减去标量s。
- 返回值: this (Vector3)
- 参数:
subVectors
- 参数:
subVectors (a: Vector3, b: Vector3)
- 功能: 将该向量设置为a - b。
- 返回值: this (Vector3)
- 参数:
toArray
- 参数:
toArray (array: List, offset: Integer)
array - (可选) 被用于存储向量的数组。如果这个值没有传入,则将创建一个新的数组。
offset - (可选) 数组中元素的偏移量,默认值为0。 - 功能: 返回一个数组[x, y ,z],或者将x、y和z复制到所传入的array中。
- 返回值: 返回存储向量的数组(List)
- 参数:
transformDirection
- 参数:
transformDirection (m: Matrix4)
- 功能: 通过传入的矩阵(m的左上角3 x 3子矩阵)变换向量的方向, 并将结果进行normalizes (归一化)。
- 返回值: this (Vector3)
- 参数:
random
- 参数:
random ()
- 功能: 将这个向量的每个分量设置为0到1之间的伪随机数(不包括1)
- 返回值: this (Vector3)
- 参数:
# 四阶矩阵: Matrix4
展开: (四阶矩阵)
- 定义方式:
// 空参构造一个4 X 4的单位矩阵
var matrix = new Matrix4();
2
- 属性:
.elements // 使用一维数组模拟存储四阶矩阵 List<Number>类型
复制方式:
引用复制
方法API:
clone
- 参数:
clone ()
- 返回值: 一个新的矩阵,元素elements与该矩阵相同 (Matrix4)
- 参数:
copy
- 参数:
copy (m: Matrix4)
- 功能: 将矩阵m的元素elements复制到当前矩阵中。
- 返回值: this (Matrix4)
- 参数:
copyPosition
- 参数:
copyPosition (m: Matrix4)
- 功能: 将给定矩阵m: Matrix4 的平移分量拷贝到当前矩阵中。
- 返回值: this (Matrix4)
- 参数:
determinant
- 参数:
determinant ()
- 返回值: 该矩阵的行列式 (Number)
- 参数:
equals
- 参数:
equals (m: Matrix4)
- 返回值: 当前矩阵与矩阵m的对应元素是否一一相等 (Boolean)
- 参数:
extractBasis
- 参数:
extractBasis (xAxis: Vector3, yAxis: Vector3, zAxis: Vector3)
- 功能:
将矩阵的基向量basis提取到指定的3个轴向量中。如下:如果矩阵如下: [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p] 然后x轴y轴z轴被设为: xAxis = (a, e, i) yAxis = (b, f, j) zAxis = (c, g, k)
1
2
3
4
5
6
7
8 - 返回值: this (Matrix4)
- 参数:
extractRotation
- 参数:
extractRotation (m: Matrix4)
- 功能: 将给定矩阵m的旋转分量提取到该矩阵的旋转分量中。
- 返回值: this (Matrix4)
- 参数:
fromArray
- 参数:
fromArray (array: List, offset: Integer)
array - 用来存储设置元素数据的数组。
offset - (可选参数) 数组的偏移量,默认值为 0。 - 功能: 使用基于列优先格式(column-major)的数组来设置该矩阵。
- 返回值: this (Matrix4)
- 参数:
getInverse
- 参数:
getInverse (m: Matrix4)
- 功能: m - 取逆的矩阵。
- 返回值: this (Matrix4)
- 参数:
getMaxScaleOnAxis
- 参数:
getMaxScaleOnAxis ()
- 返回值: 3个轴方向的最大缩放值。(Number)
- 参数:
identity
- 参数:
identity ()
- 功能: 将当前矩阵重置为单位矩阵。
- 返回值: this (Matrix4)
- 参数:
lookAt
- 参数:
lookAt (eye: Vector3, center: Vector3, up: Vector3)
- 功能: 构造一个旋转矩阵,从eye 指向 center,由向量up定向。
- 返回值: this (Matrix4)
- 参数:
makeRotationAxis
- 参数:
makeRotationAxis (axis: Vector3, theta: Number)
axis - 旋转轴,需要被归一化。
theta - 旋转量(弧度)。 - 功能: 设置当前矩阵为围绕轴 axis 旋转量为 theta弧度。
- 返回值: this (Matrix4)
- 参数:
makeBasis
- 参数:
makeBasis (xAxis: Vector3, yAxis: Vector3, zAxis: Vector3)
- 功能:
通过给定的三个向量设置该矩阵为基矩阵basis: [xAxis.x, yAxis.x, zAxis.x, 0, xAxis.y, yAxis.y, zAxis.y, 0, xAxis.z, yAxis.z, zAxis.z, 0, 0, 0, 0, 1]
1
2
3
4 - 返回值: this (Matrix4)
- 参数:
makeRotationX
- 参数:
makeRotationX (theta: Number)
theta - 旋转角度 - 功能: 把该矩阵设置为绕Y轴旋转弧度theta (θ)大小的矩阵。
- 返回值: this (Matrix4)
- 参数:
makeRotationY
- 参数:
makeRotationY (theta: Number)
theta - 旋转角度。 - 功能: 把该矩阵设置为绕Y轴旋转弧度theta (θ)大小的矩阵。
- 返回值: this (Matrix4)
- 参数:
makeRotationZ
- 参数:
makeRotationZ (theta: Number)
theta - 旋转角度。 - 功能: 把该矩阵设置为绕Z轴旋转弧度theta (θ)大小的矩阵。
- 返回值: this (Matrix4)
- 参数:
makeScale
- 参数:
makeScale (x: Number, y: Number, z: Number)
x - 在X轴方向的缩放比。
y - 在Y轴方向的缩放比。
z - 在Z轴方向的缩放比。 - 功能:
将这个矩阵设置为缩放变换: [x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1]
1
2
3
4 - 返回值: this (Matrix4)
- 参数:
makeShear
- 参数:
makeShear (x: Number, y: Number, z: Number)
x - 在X轴上剪切的量。
y - 在Y轴上剪切的量。
z - 在Z轴上剪切的量。 - 功能:
将这个矩阵设置为缩放变换: [1, y, z, 0, x, 1, z, 0, x, y, z, 0, 0, 0, 0, 1]
1
2
3
4 - 返回值: this (Matrix4)
- 参数:
makeTranslation
- 参数:
makeTranslation (x: Number, y: Number, z: Number)
x - 在X轴上的平移量。
y - 在Y轴上的平移量。
z - 在Z轴上的平移量。 - 功能:
将这个矩阵设置为缩放变换: [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1]
1
2
3
4 - 返回值: this (Matrix4)
- 参数:
multiply
- 参数:
multiply (m: Matrix4)
- 功能: 将当前矩阵乘以矩阵m。
- 返回值: this (Matrix4)
- 参数:
multiplyMatrices
- 参数:
multiplyMatrices (a: Matrix4, b: Matrix4)
- 功能: 设置当前矩阵为矩阵a x 矩阵b。
- 返回值: this (Matrix4)
- 参数:
multiplyScalar
- 参数:
multiplyScalar (s: Number)
- 功能: 当前矩阵所有的元素乘以该缩放值s。
- 返回值: this (Matrix4)
- 参数:
premultiply
- 参数:
premultiply (m: Matrix4)
- 功能: 将矩阵m乘以当前矩阵。
- 返回值: this (Matrix4)
- 参数:
scale
- 参数:
scale (v: Vector3)
- 功能: 将该矩阵的列向量乘以对应向量v的分量。
- 返回值: this (Matrix4)
- 参数:
set
- 参数:
set (n11: Number, n12: Number, n13: Number, n14: Number, n21: Number, n22: Number, n23: Number, n24: Number, n31: Number, n32: Number, n33: Number, n34: Number, n41: Number, n42: Number, n43: Number, n44: Number)
- 功能:
以行优先的格式将传入的数值设置给该矩阵中的元素elements。var m = new Matrix4(); m.set(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44); // 对应的实际的elements的存储为: m.elements = [11, 21, 31, 41, 12, 22, 32, 42, 13, 23, 33, 43, 14, 24, 34, 44 ];
1
2
3
4
5
6
7
8
9
10 - 返回值: this (Matrix4)
- 参数:
setPosition
- 参数:
setPosition (v: Vector3)
- 功能: 取传入参数v中值设置该矩阵的位置分量。
- 返回值: this (Matrix4)
- 参数:
setPosition
- 参数:
setPosition (x: Number, y: Number, z: Number)
- 功能: 将传入参数x, y, z设置为该矩阵的位置分量。
- 返回值: this (Matrix4)
- 参数:
toArray
- 参数:
toArray (array: List, offset: Integer)
array - (可选参数) 存储矩阵元素的数组,如果未指定会创建一个新的数组。
offset - (可选参数) 存放矩阵元素数组的偏移量,默认值为0。 - 功能: 使用列优先格式将此矩阵的元素写入数组中。
- 返回值: 存储矩阵元素的数组(List)
- 参数:
transpose
- 参数:
transpose ()
- 功能: 将该矩阵转置Transposes。
- 返回值: this (Matrix4)
- 参数: