# 数学模块

# 基础模块: 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);
1
2
3
4
5
6
7
8
9
10
  • 属性
.x // 三维向量的x值, Number类型
.y // 三维向量的y值, Number类型
.z // 三维向量的z值, Number类型
1
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();
1
2
  • 属性
.elements 	// 使用一维数组模拟存储四阶矩阵 List<Number>类型
1
  • 复制方式引用复制

  • 方法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)