Class: Mathics
THING~ Mathics
数学类
Mathics()
Methods
addVector(v1, v2) → {Array.<Number>}
坐标相加
Parameters:
Name Type Description v1
Array.<Number> 坐标
v2
Array.<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:
Name Type Description value
Number 数值
min
Number 最小值
max
Number 最大值
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:
Name Type Description v1
Array.<Number> 坐标
v2
Array.<Number> 坐标
Returns:
- Type
- Array.<Number>
Example
THING.Math.crossVector([1,0,0],[0,1,0]); // 返回值 [0,0,1]
degToRad(degrees) → {Number}
角度转弧度
Parameters:
Name Type Description degrees
Number 角度
Returns:
- Type
- Number
Example
THING.Math.degToRad(180) // 3.141592653589793
divideVector(v, scale) → {Array.<Number>}
向量数除
Parameters:
Name Type Description v
Array.<Number> 坐标
scale
Number 缩放系数
Returns:
- Type
- Array.<Number>
Example
THING.Math.divideVector([3,6,9],3); // 返回值 [1,2,3]
dotVector(v1, v2) → {Number}
向量点乘
Parameters:
Name Type Description v1
Array.<Number> 坐标
v2
Array.<Number> 坐标
Returns:
- Type
- Number
Example
THING.Math.dotVector([1,2,3],[4,5,6]); // 返回结果 32
equalsVector(v1, v2, epsilon) → {Boolean}
坐标是否相同
Parameters:
Name Type Description v1
Array.<Number> 坐标
v2
Array.<Number> 坐标
epsilon
Number 误差范围
Returns:
- Type
- Boolean
fract(x) → {Number}
返回小数部分
Parameters:
Name Type Description x
Number 数值
Returns:
- Type
- Number
getAnglesFromLonlat(lonlat, angle) → {Array}
地球上根据经纬度和方位角得到可以使物体贴地的旋转信息
Parameters:
Name Type Description lonlat
Array 经纬度坐标 [lon, lat]
angle
Number 方位角 默认 0
Returns:
旋转信息 [angleX, angleY, angleZ]
- Type
- Array
getArea(positions) → {Number}
获取面积(只使用 x 和 z 两个位置属性来结算)
Parameters:
Name Type Description positions
Array.<Array.<Number>> 坐标点数组列表
Returns:
- Type
- Number
getDirection(v1, v2) → {Array.<Number>}
获取 v2 到 v1 的方向向量
Parameters:
Name Type Description v1
Array.<Number> 起点
v2
Array.<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:
Name Type Description v1
Array.<Number> 第一个坐标点
v2
Array.<Number> 第二个坐标点
Returns:
- Type
- Number
Example
THING.Math.getDistance([1,1,1],[2,2,2]); // 返回值 1.7320508075688772
getLabelPosition(points [, height]) → {Array.<Number>}
获取区域的最佳标签显示位置(只能以平面的方式获取,坐标的 Y 轴位置会被忽略)
Parameters:
Name Type Argument Description points
Array.<Array.<Number>> 坐标位置列表
height
Number <optional> 标签高度, (可选参数,默认取平均高度)
Returns:
标签位置
- Type
- Array.<Number>
getVectorLength(v) → {Number}
获取向量长度(向量的模)
Parameters:
Name Type Description v
Array.<Number> 坐标
Returns:
- Type
- Number
Example
THING.Math.getVectorLength([1,1,1]);// 返回值 1.7320508075688772
getVectorLengthSquared(v) → {Number}
获取向量长度的平方
Parameters:
Name Type Description v
Array.<Number> 坐标
Returns:
- Type
- Number
Example
THING.Math.getVectorLengthSquared([1,1,1]);// 返回值 3
isPowerOf2(num) → {Boolean}
判断数值是否2次幂
Parameters:
Name Type Description num
Number 数值
Returns:
- Type
- Boolean
lerp(start, end, percent) → {Number}
线性插值
Parameters:
Name Type Description start
Number 起始值
end
Number 终止值
percent
Number 百分比(0~1)
Returns:
- Type
- Number
Example
THING.Math.lerp(2,10,0.5) // 6
lonlat2World(lonLat, length?, r?) → {Array}
经纬度转世界坐标
Parameters:
Name Type Description lonLat
Array [经度,纬度]
length?
Number 距离地面的高度, 默认为 0
r?
Number 距离球心的半径默认为 6378000
Returns:
[x,y,z]
- Type
- Array
maxVector(positions) → {Array.<Number>}
获取坐标数组中各数组相同索引下的最大值
Parameters:
Name Type Description positions
Array.<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:
Name Type Description positions
Array.<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:
Name Type Description v
Array.<Number> 坐标
Returns:
- Type
- Array.<Number>
Example
THING.Math.negVector([1,2,3]); // 返回值[-1,-2,-3]
normalizeVector(v) → {Array.<Number>}
求单位向量
Parameters:
Name Type Description v
Array.<Number> 坐标
Returns:
- Type
- Array.<Number>
Example
THING.Math.normalizeVector([1,1,1]);// 返回值 [0.5773502691896258,0.5773502691896258,0.5773502691896258]
radToDeg(radians) → {Number}
弧度转角度
Parameters:
Name Type Description radians
Number 弧度
Returns:
- Type
- Number
Example
THING.Math.radToDeg(Math.PI) // 180
randomColor() → {Number}
获取随机颜色
Returns:
- Type
- Number
randomFloat(min, max) → {Number}
获取随机浮点数值[最小值, 最大值]
Parameters:
Name Type Description min
Number 最小值
max
Number 最大值
Returns:
- Type
- Number
randomFromArray(arr) → {*}
从数组随机挑选出任一元素
Parameters:
Name Type Description arr
Array.<*> 数组
Returns:
元素
- Type
- *
randomIndex(number) → {Number}
产生随机下标值 [0, number - 1]
Parameters:
Name Type Description number
Number 总数
Returns:
- Type
- Number
randomInt(min, max) → {Number}
获取随机整数数值[最小值, 最大值]
Parameters:
Name Type Description min
Number 最小值
max
Number 最大值
Returns:
- Type
- Number
randomVector2( [rx] [, ry]) → {Array.<Number>}
随机产生坐标信息
Parameters:
Name Type Argument Description rx
Number <optional> x 坐标会在[-rx, rx]之间进行随机
ry
Number <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:
Name Type Argument Description rx
Number <optional> x 坐标会在[-rx, rx]之间进行随机
ry
Number <optional> y 坐标会在[-ry, ry]之间进行随机
rz
Number <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:
Name Type Description v
Number 数值
Returns:
- Type
- Number
Example
THING.Math.roundUpPowerOf2(9) //16
scaleVector(v, scale) → {Array.<Number>}
向量数乘
Parameters:
Name Type Description v
Array.<Number> 坐标
scale
Number 缩放系数
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:
Name Type Description v1
Array.<Number> 坐标
v2
Array.<Number> 坐标
Returns:
- Type
- Array.<Number>
Example
THING.Math.subVector([1,2,3],[3,4,5]); // 返回值 [-2,-2,-2]
swapArray(arr, index1, index2) → {Array}
交换数组元素位置
Parameters:
Name Type Description arr
Array 数组
index1
Number 第一个元素索引下标
index2
Number 第二个元素索引下标
Returns:
- Type
- Array
Example
THING.Utils.log(THING.Math.swapArray([0,1,2,3],1,2)) // [0,2,1,3]
toInteger(n) → {Number}
数值取整
Parameters:
Name Type Description n
Number 数值
Returns:
- Type
- Number
toUniquePoints(点 [, epsilon]) → {Array.<Array.<Number>>}
创建新的点,删除重复的点
Parameters:
Name Type Argument Default Description 点
Array.<Array.<Number>> epsilon
Number <optional> 0.001 epsilon 范围.
Returns:
- Type
- Array.<Array.<Number>>
world2Lonlat(pos, earthCenter) → {Array}
世界坐标转经纬度
Parameters:
Name Type Description pos
Array 世界坐标 [x,y,z]
earthCenter
Array 默认为[0,0,0],地球的中心点
Returns:
[经度,纬度,高度]
- Type
- Array