内置方法
staticCesium.Intersections2D.clipTriangleAtAxisAlignedThreshold(threshold, keepAbove, u0, u1, u2, result) → Array.<Number>
在给定轴对齐的阈值处分割一个2D三角形,并在阈值的给定一侧返回结果多边形。
得到的多边形可能有0、1、2、3或4个顶点。
Name | Type | Description |
---|---|---|
threshold |
Number | 用于裁剪三角形的阈坐标值。 |
keepAbove |
Boolean | true使三角形的部分保持在阈值以上,或false使三角形的部分保持在阈值以下。 |
u0 |
Number | 三角形中第一个顶点的坐标,按逆时针方向排列。 |
u1 |
Number | 三角形中第二个顶点的坐标,按逆时针方向排列。 |
u2 |
Number | 三角形中第三个顶点的坐标,按逆时针方向排列。 |
result |
Array.<Number> | optional 要将结果复制到其中的数组。如果不提供此参数,则构造并返回一个新数组。 |
返回值:
裁剪后生成的多边形,指定为顶点列表。顶点按逆时针方向指定。
每个顶点要么是现有列表的索引(标识为0、1或2),要么是-1,表示原始三角形中没有新的顶点。
对于新的顶点,-1后面跟着三个附加的数字:构成新顶点所在线段的两个原始顶点的索引,以及从第一个顶点到第二个顶点的距离的分数。
示例:
var result = Cesium.Intersections2D.clipTriangleAtAxisAlignedThreshold(0.5, false, 0.2, 0.6, 0.4);
// result === [2, 0, -1, 1, 0, 0.25, -1, 1, 2, 0.5]
staticCesium.Intersections2D.computeBarycentricCoordinates(x, y, x1, y1, x2, y2, x3, y3, result) → Cartesian3
计算二维三角形中二维位置的重心坐标。
Name | Type | Description |
---|---|---|
x |
Number | 求重心坐标的位置的x坐标。 |
y |
Number | 求重心坐标的位置的y坐标。 |
x1 |
Number | 三角形第一个顶点的x坐标。 |
y1 |
Number | 三角形第一个顶点的y坐标。 |
x2 |
Number | 三角形第二个顶点的x坐标。 |
y2 |
Number | 三角形第二个顶点的y坐标。 |
x3 |
Number | 三角形第三个顶点的x坐标。 |
y3 |
Number | 三角形第三个顶点的y坐标。 |
result |
Cartesian3 | optional 要将结果复制到其中的实例。如果该参数未定义,则创建并返回一个新实例。 |
返回值:
三角形中重心坐标的位置。
示例:
var result = Cesium.Intersections2D.computeBarycentricCoordinates(0.0, 0.0, 0.0, 1.0, -1, -0.5, 1, -0.5);
// result === new Cesium.Cartesian3(1.0 / 3.0, 1.0 / 3.0, 1.0 / 3.0);
staticCesium.Intersections2D.computeLineSegmentLineSegmentIntersection(x00, y00, x01, y01, x10, y10, x11, y11, result) → Cartesian2
计算两条线段的交点。
Name | Type | Description |
---|---|---|
x00 |
Number | 第一条线段第一个顶点的x坐标。 |
y00 |
Number | 第一条线段第一个顶点的y坐标。 |
x01 |
Number | 第一条线段第二个顶点的x坐标。 |
y01 |
Number | 第一条线段第二个顶点的y坐标。 |
x10 |
Number | 第二条线段第一个顶点的x坐标。 |
y10 |
Number | 第二条线段第一个顶点的y坐标。 |
x11 |
Number | 第二条线段第二个顶点的x坐标。 |
y11 |
Number | 第二条线段第二个顶点的y坐标。 |
result |
Cartesian2 | optional 要将结果复制到其中的实例。如果该参数未定义,则创建并返回一个新实例。 |
返回值:
交点,如果没有交点或线是重合的则为undefined。 if there is no intersection point or lines are coincident.
示例:
var result = Cesium.Intersections2D.computeLineSegmentLineSegmentIntersection(0.0, 0.0, 0.0, 2.0, -1, 1, 1, 1);
// result === new Cesium.Cartesian2(0.0, 1.0);