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)) // 5 THING.Utils.log(THING.Math.clamp(-1,1,5)) // 1 THING.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
-
equalsVectorX(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(points [, epsilon]) → {Array.<Array.<Number>>}
-
创建新的点,删除重复的点
Parameters:
Name Type Argument Default Description points
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