Class: AlgorithmLib

AlgorithmLib

new AlgorithmLib()

engineExtensions/util/AlgorithmLib.js, line 4

通用算法工具集

Methods

AlgorithmLib.calAngleOf3Pnt(p1, p2, p3)

engineExtensions/util/AlgorithmLib.js, line 187

计算三点的角度(0-180之间)

Name Type Description
p1 Cesium.Cartesian3

顶点1

p2 Cesium.Cartesian3

顶点2

p3 Cesium.Cartesian3

顶点3

AlgorithmLib.Cartesian3ArrayToDegrees(positions, result){Array.<Number>}

engineExtensions/util/AlgorithmLib.js, line 1180

笛卡尔世界坐标数组转经纬度degree数组

Name Type Description
positions Array.<Cesium.Cartesian3>

笛卡尔世界坐标数组

result Array.<Number> 可选

经纬度(含高度)度数组

Returns:
Type Description
Array.<Number> 经纬度数组

AlgorithmLib.compute_3D_polygon_area(points){Number}

engineExtensions/util/AlgorithmLib.js, line 300

计算 polygon 面积

Name Type Description
points Array.<Cesium.Cartesian3>

polygon顶点集

Returns:
Type Description
Number

AlgorithmLib.computeTileInPolygon(tile, positions){Cesium.Intersect|false}

engineExtensions/util/AlgorithmLib.js, line 998

判断tile与绘制范围是否相交

Name Type Description
tile Array.<MapGISM3DSet>

MapGISM3DSet对象数组,详见Cesium.MapGISM3DSet

positions Array.<Cesium.Cartesian3>

范围坐标点序列

Returns:
Type Description
Cesium.Intersect | false Cesium.Intersect.OUTSIDE, Cesium.Intersect.INTERSECTING, or Cesium.Intersect.INSIDE表示完全包围、相交和在外部.false表示计算失败

AlgorithmLib.deepCopy(o){object}

engineExtensions/util/AlgorithmLib.js, line 213

深度拷贝对象

Name Type Description
o object

被拷贝对象

Returns:
Type Description
object

AlgorithmLib.getCenterFromPoints(positions){Array.<Cesium.Cartesian3>}

engineExtensions/util/AlgorithmLib.js, line 1370

根据输入笛卡尔坐标数组,计算中心点

Name Type Description
positions Array.<Cesium.Cartesian3>

坐标点序列

Returns:
Type Description
Array.<Cesium.Cartesian3> 根据坐标点序列计算出的中心点

AlgorithmLib.getCenterOfCartesian3Points(points, useHeight){Cesium.Cartesian3}

engineExtensions/util/AlgorithmLib.js, line 519

计算Cartesian3数组的中心

Name Type Description
points Array.<Cesium.Cartesian3>
useHeight Boolean

是否使用高度

Returns:
Type Description
Cesium.Cartesian3

AlgorithmLib.getCenterOfGravityPoint(points){Cesium.Cartesian3}

engineExtensions/util/AlgorithmLib.js, line 487

计算Cartesian3数组的重心

Name Type Description
points Array.<Cesium.Cartesian3>
Returns:
Type Description
Cesium.Cartesian3

AlgorithmLib.getEastNorthUpXYZ(viewer, point, windowPosition){Object}

engineExtensions/util/AlgorithmLib.js, line 628

计算屏幕坐标相对于地表某点垂直(或平行方向XY)的位置

Name Type Description
viewer Number

视图

point Cesium.Cartesian3

地表点

windowPosition Cesium.Cartesian2

屏幕坐标

Returns:
Type Description
Object 与经过地表点的垂直地表的平面的交点,endPositionX表示X方向(经线方向)的面的交点位置(世界坐标),endPositionY表示Y方向(纬线方向)的面的交点位置(世界坐标),XYZLocPosition表示在地表点坐标系下局部坐标系XYZ方向的坐标

AlgorithmLib.getPixelsPerMeter(scene){Number}

engineExtensions/util/AlgorithmLib.js, line 701

获取当前场景下,每米占据多少个像素值

Name Type Description
scene Scene
Returns:
Type Description
Number pixel/m

AlgorithmLib.getPointOntoLine(ellipsoid, pointA, pointB, pointP, result){Cesium.Cartesian3}

engineExtensions/util/AlgorithmLib.js, line 798

计算三维场景中,直线外一点在直线上的投影点

Name Type Description
ellipsoid Ellipsoid

椭球参数

pointA Cesium.Cartesian3

直线上的点 A 经纬度

pointB Cesium.Cartesian3

直线上的点 B 经纬度

pointP Cesium.Cartesian3

直线外的点 P 经纬度

result Cesium.Cartesian3

返回结果,直线上的投影点

Returns:
Type Description
Cesium.Cartesian3 result 经纬度坐标

AlgorithmLib.getPointOntoLineByWorldPosition(pointA, pointB, pointP, result){Cesium.Cartesian3}

engineExtensions/util/AlgorithmLib.js, line 855

计算三维场景中,直线外一点在直线上的投影点

Name Type Description
pointA Cesium.Cartesian3

直线上一点A,世界坐标

pointB Cesium.Cartesian3

直线上一点B,世界坐标

pointP Cesium.Cartesian3

直线外一点P,世界坐标

result Cesium.Cartesian3

直线外一点,到直线的垂足点,世界坐标

Returns:
Type Description
Cesium.Cartesian3 result

AlgorithmLib.getPointOntoPlane(ellipsoid, originPoint, normal, outPoint, result){Cesium.Cartesian3}

engineExtensions/util/AlgorithmLib.js, line 737

计算平面(此平面由一个点,与法线构成)外一点到此平面上的投影点

Name Type Description
ellipsoid Ellipsoid

椭球参数

originPoint Cesium.Cartesian3

平面上的一个点,世界坐标

normal Cesium.Cartesian3

平面的法线

outPoint Cesium.Cartesian3

平面外一点,世界坐标

result Cesium.Cartesian3

平面外一点在平面上的投影,世界坐标

Returns:
Type Description
Cesium.Cartesian3 result 平面外一点在平面上的投影,世界坐标

AlgorithmLib.getRandomPointByRect(west, south, east, north, count, result){Array.<Object>}

engineExtensions/util/AlgorithmLib.js, line 909

计算矩形范围内的随机点

Name Type Description
west Number

西向经度数

south Number

南向纬度数

east Number

东向经度数

north Number

北向纬度数

count Number

需要的随机点数

result Array.<Object>
Returns:
Type Description
Array.<Object> result 返回随机点数集合

AlgorithmLib.getRect3DPointsByLine(direct, p1, p2, result){Array.<Cesium.Cartesian3>}

engineExtensions/util/AlgorithmLib.js, line 1275

根据两点,确定一个平行于视窗的矩形

顶点顺序为: 0---3 | \ | 1---2

Name Type Description
direct Cesium.Cartesian3

朝向,使用时一般用相机朝右的朝向

p1 Cesium.Cartesian3

起始点,世界坐标

p2 Cesium.Cartesian3

绘制结束点,世界坐标

result Array | undefined

返回值,矩形的4个顶点

Returns:
Type Description
Array.<Cesium.Cartesian3> result

AlgorithmLib.getSquarePointsByLine(p1, p2, result){Array.<Cesium.Cartesian3>}

engineExtensions/util/AlgorithmLib.js, line 1210

通过两点确定一个正方形

顶点顺序为: 0---3 | \ | 1---2

Name Type Description
p1 Cesium.Cartesian3

起始点, 值类型为世界坐标

p2 Cesium.Cartesian3

结束点, 值类型为世界坐标

result Array

返回值

Returns:
Type Description
Array.<Cesium.Cartesian3> result 正方形四个顶点, 值类型为世界坐标

AlgorithmLib.getTransform(longitude, latitude, height){Cesium.Matrix4}

engineExtensions/util/AlgorithmLib.js, line 585

计算矩阵

Name Type Description
longitude Number

角度制经度

latitude Number

角度制纬度

height Number

高程

Returns:
Type Description
Cesium.Matrix4

AlgorithmLib.isConvex(points){Number}

engineExtensions/util/AlgorithmLib.js, line 1331

计算是否为凸多边形

Name Type Description
points Array.<Cesium.Cartesian3>

点坐标

Returns:
Type Description
Number result 0:数量小于2;-1:凹多边形;1:凸多边形;

AlgorithmLib.linearInterpolate(positions, step){Array.<Cesium.Cartesian2>}

engineExtensions/util/AlgorithmLib.js, line 18

线性插值(二维坐标)

Name Type Description
positions Array.<Cesium.Cartesian2>

坐标点序列

step Number

步长

Returns:
Type Description
Array.<Cesium.Cartesian2> 插值后的坐标点序列

AlgorithmLib.linearInterpolate3D(positions, step){Array.<Cesium.Cartesian3>}

engineExtensions/util/AlgorithmLib.js, line 50

线性插值(三维坐标)

Name Type Description
positions Array.<Cesium.Cartesian3>

坐标点序列

step Number

步长

Returns:
Type Description
Array.<Cesium.Cartesian3> 插值后的坐标点序列

AlgorithmLib.mergeLayersBoundingSphere(layers){Cesium.BoundingSphere}

engineExtensions/util/AlgorithmLib.js, line 965

获取 M3D 缓存图层组合并后的包围球

Name Type Description
layers Array.<MapGISM3DSet>

MapGISM3DSet对象数组,详见Cesium.MapGISM3DSet

Returns:
Type Description
Cesium.BoundingSphere boundingSphere 包围球

AlgorithmLib.pickFromRay(scene, viewPosition, options){Cesium.Cartesian3|undefined}

engineExtensions/util/AlgorithmLib.js, line 1043

射线求交

Name Type Description
scene Scene
viewPosition Cesium.Cartesian3
options options
Name Type Default Description
direction Cesium.Cartesian3 可选

方向向量,传入该参数时后续方向参数无效

heading Number 0 可选

方位角

pitch Number 0 可选

俯仰角

distance Number 可选

传入该值,则射线求交无结果时返回方向上该距离的点

Returns:
Type Description
Cesium.Cartesian3 | undefined 返回射线物体相交的第一个交点坐标,没有交点则返回undefined

AlgorithmLib.pointIsInPolygon(positions, point){Boolean}

engineExtensions/util/AlgorithmLib.js, line 125

点是否在范围内(多边形)

Name Type Description
positions Array.<Cesium.Cartographic>

多边形坐标点序列

point Cesium.Cartographic

Returns:
Type Description
Boolean true在范围内,false不在范围内。

AlgorithmLib.polygonInterpolate(positions, step){Array.<Cesium.Cartesian3>}

engineExtensions/util/AlgorithmLib.js, line 83

区域插值(多边形)

Name Type Description
positions Array.<Cesium.Cartesian3>

坐标点序列

step Number

步长

Returns:
Type Description
Array.<Cesium.Cartesian3> 插值后的坐标点序列

AlgorithmLib.randomNum(minNum, maxNum){Number}

engineExtensions/util/AlgorithmLib.js, line 947

获取区间范围内的随机数

Name Type Description
minNum Number

区间最小值

maxNum Number

区间最大值

Returns:
Type Description
Number result 在范围[minNum, maxNum]内的随机数

AlgorithmLib.setZValueByTerrain(TerrainProvider, level, positions){function}

engineExtensions/util/AlgorithmLib.js, line 256

根据地形设置二维坐标的高程值

Name Type Description
TerrainProvider CesiumTerrainProvider

地形

level Number

以地形的级数为基准

positions Array.<Cesium.Cartesian2>

需设置高程的二维坐标点序列

Returns:
Type Description
function 设置成功后的回调

AlgorithmLib.simplifyLine(positions){Array.<Cesium.Cartesian3>}

engineExtensions/util/AlgorithmLib.js, line 148

化简抽稀(用于折线路绘制)

Name Type Description
positions Array.<Cesium.Cartesian3>

坐标点序列

Returns:
Type Description
Array.<Cesium.Cartesian3> 抽稀后的坐标点序列

AlgorithmLib.sphericalPolygonAreaMeters(points){Number}

engineExtensions/util/AlgorithmLib.js, line 350

计算球面 投影面积方法

Name Type Description
points Array.<Cesium.Cartesian3>

polygon顶点集

Returns:
Type Description
Number