当前位置: 首页 > 文档资料 > ThingJS 文档中心 >

Class: Mathics

优质
小牛编辑
128浏览
2023-12-01

THING~ Mathics

数学类


Mathics()

Methods


addVector(v1, v2) → {Array.<Number>}

坐标相加

Parameters:
NameTypeDescription
v1Array.<Number>

坐标

v2Array.<Number>

坐标

Returns:
Type
Array.<Number>
Example
THING.Math.addVector([1,2,3],[3,4,5]); // 返回值 [4,6,8]

clamp(value, min, max) → {Number}

限制 value 的值在 min 和 max 之间 如果 value 小于 min,返回 min 。如果 value 大于 max,返回 max,否则返回 value

Parameters:
NameTypeDescription
valueNumber

数值

minNumber

最小值

maxNumber

最大值

Returns:
Type
Number
Example
THING.Utils.log(THING.Math.clamp(9,1,5)) // 5THING.Utils.log(THING.Math.clamp(-1,1,5)) // 1THING.Utils.log(THING.Math.clamp(3,1,5)) // 3

crossVector(v1, v2) → {Array.<Number>}

向量叉乘 叉乘得到的向量垂直于原来的两个向量 在3D空间中,常用来求两个向量所在平面的法向量

Parameters:
NameTypeDescription
v1Array.<Number>

坐标

v2Array.<Number>

坐标

Returns:
Type
Array.<Number>
Example
THING.Math.crossVector([1,0,0],[0,1,0]); // 返回值 [0,0,1]

degToRad(degrees) → {Number}

角度转弧度

Parameters:
NameTypeDescription
degreesNumber

角度

Returns:
Type
Number
Example
THING.Math.degToRad(180) // 3.141592653589793

divideVector(v, scale) → {Array.<Number>}

向量数除

Parameters:
NameTypeDescription
vArray.<Number>

坐标

scaleNumber

缩放系数

Returns:
Type
Array.<Number>
Example
THING.Math.divideVector([3,6,9],3); // 返回值 [1,2,3]

dotVector(v1, v2) → {Number}

向量点乘

Parameters:
NameTypeDescription
v1Array.<Number>

坐标

v2Array.<Number>

坐标

Returns:
Type
Number
Example
THING.Math.dotVector([1,2,3],[4,5,6]); // 返回结果 32

equalsVector(v1, v2, epsilon) → {Boolean}

坐标是否相同

Parameters:
NameTypeDescription
v1Array.<Number>

坐标

v2Array.<Number>

坐标

epsilonNumber

误差范围

Returns:
Type
Boolean

fract(x) → {Number}

返回小数部分

Parameters:
NameTypeDescription
xNumber

数值

Returns:
Type
Number

getAnglesFromLonlat(lonlat, angle) → {Array}

地球上根据经纬度和方位角得到可以使物体贴地的旋转信息

Parameters:
NameTypeDescription
lonlatArray

经纬度坐标 [lon, lat]

angleNumber

方位角 默认 0

Returns:

旋转信息 [angleX, angleY, angleZ]

Type
Array

getArea(positions) → {Number}

获取面积(只使用 x 和 z 两个位置属性来结算)

Parameters:
NameTypeDescription
positionsArray.<Array.<Number>>

坐标点数组列表

Returns:
Type
Number

getDirection(v1, v2) → {Array.<Number>}

获取 v2 到 v1 的方向向量

Parameters:
NameTypeDescription
v1Array.<Number>

起点

v2Array.<Number>

终点

Returns:
Type
Array.<Number>
Example
// 第一个参数为起点 第二个参数为终点THING.Math.getDirection([1,1,1],[2,2,2]);// 返回值[0.5773502691896258,0.5773502691896258,0.5773502691896258]

getDistance(v1, v2) → {Number}

获取两点间距离

Parameters:
NameTypeDescription
v1Array.<Number>

第一个坐标点

v2Array.<Number>

第二个坐标点

Returns:
Type
Number
Example
THING.Math.getDistance([1,1,1],[2,2,2]); // 返回值 1.7320508075688772

getLabelPosition(points [, height]) → {Array.<Number>}

获取区域的最佳标签显示位置(只能以平面的方式获取,坐标的 Y 轴位置会被忽略)

Parameters:
NameTypeArgumentDescription
pointsArray.<Array.<Number>>

坐标位置列表

heightNumber<optional>

标签高度, (可选参数,默认取平均高度)

Returns:

标签位置

Type
Array.<Number>

getVectorLength(v) → {Number}

获取向量长度(向量的模)

Parameters:
NameTypeDescription
vArray.<Number>

坐标

Returns:
Type
Number
Example
THING.Math.getVectorLength([1,1,1]);// 返回值 1.7320508075688772

getVectorLengthSquared(v) → {Number}

获取向量长度的平方

Parameters:
NameTypeDescription
vArray.<Number>

坐标

Returns:
Type
Number
Example
THING.Math.getVectorLengthSquared([1,1,1]);// 返回值 3

isPowerOf2(num) → {Boolean}

判断数值是否2次幂

Parameters:
NameTypeDescription
numNumber

数值

Returns:
Type
Boolean

lerp(start, end, percent) → {Number}

线性插值

Parameters:
NameTypeDescription
startNumber

起始值

endNumber

终止值

percentNumber

百分比(0~1)

Returns:
Type
Number
Example
THING.Math.lerp(2,10,0.5) // 6

lonlat2World(lonLat, length?, r?) → {Array}

经纬度转世界坐标

Parameters:
NameTypeDescription
lonLatArray

[经度,纬度]

length?Number

距离地面的高度, 默认为 0

r?Number

距离球心的半径默认为 6378000

Returns:

[x,y,z]

Type
Array

maxVector(positions) → {Array.<Number>}

获取坐标数组中各数组相同索引下的最大值

Parameters:
NameTypeDescription
positionsArray.<Array.<Number>>

坐标数组

Returns:
Type
Array.<Number>
Example
var maxV=THING.Math.maxVector([[0,1,0],[1,2,3],[3,1,0],[1,1,1]])THING.Utils.log(maxV) // [3,2,3]

minVector(positions) → {Array.<Number>}

获取坐标数组中各数组相同索引下的最小值

Parameters:
NameTypeDescription
positionsArray.<Array.<Number>>

坐标数组

Returns:
Type
Array.<Number>
Example
var mimV=THING.Math.minVector([[0,1,0],[1,2,3],[3,1,0],[1,1,1])THING.Utils.log(mimV) // [0,1,0]

negVector(v) → {Array.<Number>}

坐标取负

Parameters:
NameTypeDescription
vArray.<Number>

坐标

Returns:
Type
Array.<Number>
Example
THING.Math.negVector([1,2,3]); // 返回值[-1,-2,-3]

normalizeVector(v) → {Array.<Number>}

求单位向量

Parameters:
NameTypeDescription
vArray.<Number>

坐标

Returns:
Type
Array.<Number>
Example
THING.Math.normalizeVector([1,1,1]);// 返回值 [0.5773502691896258,0.5773502691896258,0.5773502691896258]

radToDeg(radians) → {Number}

弧度转角度

Parameters:
NameTypeDescription
radiansNumber

弧度

Returns:
Type
Number
Example
THING.Math.radToDeg(Math.PI) // 180

randomColor() → {Number}

获取随机颜色

Returns:
Type
Number

randomFloat(min, max) → {Number}

获取随机浮点数值[最小值, 最大值]

Parameters:
NameTypeDescription
minNumber

最小值

maxNumber

最大值

Returns:
Type
Number

randomFromArray(arr) → {*}

从数组随机挑选出任一元素

Parameters:
NameTypeDescription
arrArray.<*>

数组

Returns:

元素

Type
*

randomIndex(number) → {Number}

产生随机下标值 [0, number - 1]

Parameters:
NameTypeDescription
numberNumber

总数

Returns:
Type
Number

randomInt(min, max) → {Number}

获取随机整数数值[最小值, 最大值]

Parameters:
NameTypeDescription
minNumber

最小值

maxNumber

最大值

Returns:
Type
Number

randomVector2( [rx] [, ry]) → {Array.<Number>}

随机产生坐标信息

Parameters:
NameTypeArgumentDescription
rxNumber<optional>

x 坐标会在[-rx, rx]之间进行随机

ryNumber<optional>

y 坐标会在[-ry, ry]之间进行随机

Returns:
Type
Array.<Number>
Example
// xyz 会在 [-10, 10] 之间随机THING.Math.randomVector2(10, 10);// 也可用如下的方式调用(xyz 用同一个数值)THING.Math.randomVector2(10);

randomVector3( [rx] [, ry] [, rz]) → {Array.<Number>}

随机产生坐标信息

Parameters:
NameTypeArgumentDescription
rxNumber<optional>

x 坐标会在[-rx, rx]之间进行随机

ryNumber<optional>

y 坐标会在[-ry, ry]之间进行随机

rzNumber<optional>

z 坐标会在[-rz, rz]之间进行随机

Returns:
Type
Array.<Number>
Example
// xyz 会在 [-10, 10] 之间随机THING.Math.randomVector3(10, 10, 10);// 也可用如下的方式调用(xyz 用同一个数值)THING.Math.randomVector3(10);

roundUpPowerOf2(v) → {Number}

向上取数值的2次幂

Parameters:
NameTypeDescription
vNumber

数值

Returns:
Type
Number
Example
THING.Math.roundUpPowerOf2(9) //16

scaleVector(v, scale) → {Array.<Number>}

向量数乘

Parameters:
NameTypeDescription
vArray.<Number>

坐标

scaleNumber

缩放系数

Returns:
Type
Array.<Number>
Example
THING.Math.scaleVector([1,2,3],3); // 返回值 [3,6,9]THING.Math.scaleVector([1,2,3],-2); // 返回值 [-2,-4,-6]

subVector(v1, v2) → {Array.<Number>}

坐标相减

Parameters:
NameTypeDescription
v1Array.<Number>

坐标

v2Array.<Number>

坐标

Returns:
Type
Array.<Number>
Example
THING.Math.subVector([1,2,3],[3,4,5]); // 返回值 [-2,-2,-2]

swapArray(arr, index1, index2) → {Array}

交换数组元素位置

Parameters:
NameTypeDescription
arrArray

数组

index1Number

第一个元素索引下标

index2Number

第二个元素索引下标

Returns:
Type
Array
Example
THING.Utils.log(THING.Math.swapArray([0,1,2,3],1,2)) // [0,2,1,3]

toInteger(n) → {Number}

数值取整

Parameters:
NameTypeDescription
nNumber

数值

Returns:
Type
Number

toUniquePoints(点 [, epsilon]) → {Array.<Array.<Number>>}

创建新的点,删除重复的点

Parameters:
NameTypeArgumentDefaultDescription
Array.<Array.<Number>>
epsilonNumber<optional>
0.001

epsilon 范围.

Returns:
Type
Array.<Array.<Number>>

world2Lonlat(pos, earthCenter) → {Array}

世界坐标转经纬度

Parameters:
NameTypeDescription
posArray

世界坐标 [x,y,z]

earthCenterArray

默认为[0,0,0],地球的中心点

Returns:

[经度,纬度,高度]

Type
Array