在三维空间中计算一点P的重心坐标(barycentric coordinates),该点P由三角形定义。重心坐标形式如下:
P = uA + vB + wC
其中,u、v、w分别为点P相对于三角形各个点A、B、C的权重。需要满足如下条件:
u + v + w = 1
var cartesian = new Cesium.Cartesian3();
var barycentric = new Cesium.Cartesian3();
var triangle = [
new Cesium.Cartesian3(),
new Cesium.Cartesian3(),
new Cesium.Cartesian3()
];
Cesium.EllipsoidTangentPlane.barycentricCoordinates(cartesian, triangle[0], triangle[1], triangle[2], barycentric);
Name | Type | Default | Description |
---|---|---|---|
cartesian | Cartesian3 | 计算重心坐标的点P | |
vertex0 | Cartesian3 | 三角形的第一个顶点 | |
vertex1 | Cartesian3 | 三角形的第二个顶点 | |
vertex2 | Cartesian3 | 三角形的第三个顶点 | |
barycentric | Cartesian3 | 存储计算得到的重心坐标 |
如果将点P表示为给定三角形的重心坐标的线性组合,则返回true,否则返回false。如果三角形的面积为0,则返回false。
var cartesian = new Cesium.Cartesian3(1.0, 2.0, 3.0);
var barycentric = new Cesium.Cartesian3();
var triangle = [
new Cesium.Cartesian3(0.0, 0.0, 0.0),
new Cesium.Cartesian3(1.0, 0.0, 0.0),
new Cesium.Cartesian3(0.0, 1.0, 0.0)
];
Cesium.EllipsoidTangentPlane.barycentricCoordinates(cartesian, triangle[0], triangle[1], triangle[2], barycentric);
console.log(barycentric); // Cartesian3 {x: 0.6666666666666666, y: 0.16666666666666663, z: 0.16666666666666663}