CesiumJS 中的 BoundingSphere 是 3D 空间中的一个简单几何体,用于包围 3D 对象,并帮助您计算该对象与其他物体之间的关系。BoudingSphere 类中定义了一组方法,可以用于计算与球体相关的数学运算,例如:球体与点、边、包围盒之间的关系计算、球体的移动和缩放。
构造函数创建一个新的包围球,该包围球的中心点和半径由传入的参数指定。
center
: Cartesian3
,包围球的中心点坐标。radius
: Number
,包围球的半径。Cartesian3
(0.0, 0.0, 0.0)
Number
0.0
创建当前包围球的副本。
result
: BoundingSphere
,可选参数,作为函数的返回值。判断当前包围球是否与指定平面产生交集。
plane
: Plane
,指定的平面。判断当前包围球是否与指定边界框产生交集。
box
: BoundingBox
,指定的边界框。判断当前包围球是否与指定包围球产生交集。
sphere
: BoundingSphere
,指定的包围球。计算当前包围球的中心点到指定点的距离的平方值。
point
: Cartesian3
,指定的点坐标。计算当前包围球是否与指定射线产生交集。
ray
: Ray
,指定的射线。将当前包围球根据指定矩阵进行变换。
matrix
: Matrix4
,指定的矩阵。result
: BoundingSphere
,可选参数,作为函数的返回值。将当前包围球与指定包围球合并,并返回新的包围球。
other
: BoundingSphere
,指定的包围球。// 创建一个包围球
var center = new Cesium.Cartesian3(0, 0, 0);
var radius = 100;
var boundingSphere = new Cesium.BoundingSphere(center, radius);
// 计算包围球与点的关系
var point = new Cesium.Cartesian3(10, 20, 30);
var distanceSquared = boundingSphere.distanceSquaredTo(point);
if (distanceSquared < boundingSphere.radius * boundingSphere.radius) {
console.log("point is inside the bounding sphere");
}
// 计算包围球与边界框的关系
var boundingBox = new Cesium.BoundingBox(minimum, maximum);
var intersects = boundingSphere.intersectsBox(boundingBox);
if (intersects) {
console.log("bounding boxes intersecting");
}
// 变换包围球
var transform = new Cesium.Matrix4( ... );
var transformedBoundingSphere = boundingSphere.transform(transform);
// 合并两个包围球
var otherBoundingSphere = new Cesium.BoundingSphere(otherCenter, otherRadius);
var unionBoundingSphere = boundingSphere.union(otherBoundingSphere);