具有中心和半径的边界球体。
new BoundingSphere(center, radius)
Parameters:
radius
(Number)
(default 0.0
)
边界球的半径。
- AxisAlignedBoundingBox
- BoundingRectangle
- Packable
See:
Members
(static) packedLength : Number
用于将对象打包到数组中的元素数。
center : Cartesian3
球体的中心点。
-
Default Value:
Cartesian3.ZERO
radius : Number
球体的半径。
-
Default Value:
0.0
Methods
(static) clone(sphere, result) → {BoundingSphere}
复制边界球体实例。
Parameters:
由矢量从边界球的中心到投射到方向上的位置的距离加/减边界球的半径。
如果您设想具有法向的无限多个平面,这将从与边界球体相交的位置计算到最近和最远平面的最小距离。
如果您设想具有法向的无限多个平面,这将从与边界球体相交的位置计算到最近和最远平面的最小距离。
Parameters:
计算从边界球上最近点到点的估计距离平方。
Parameters:
Example
// Sort bounding spheres from back to front
spheres.sort(function(a, b) {
return bmgl.BoundingSphere.distanceSquaredTo(b, camera.positionWC) - bmgl.BoundingSphere.distanceSquaredTo(a, camera.positionWC);
});
比较提供的boundingsphere组件,如果它们相等,则返回
true
,否则返回false
。
Parameters:
通过扩大提供的球体以包含提供的点来计算边界球体。
Parameters:
计算包围提供的边界球数组的紧配合边界球。
Parameters:
从轴对齐边界框的角点计算边界球。球体猛然完全地与盒子相碰撞。
Parameters:
Example
// Create a bounding sphere around the unit cube
var sphere = bmgl.BoundingSphere.fromCornerPoints(new bmgl.Cartesian3(-0.5, -0.5, -0.5), new bmgl.Cartesian3(0.5, 0.5, 0.5));
创建包含椭圆体的边界球体。
Parameters:
计算一个紧配合的边界球,包含一个编码部件3列表,其中点按X、Y、Z顺序存储在平行平面阵列中。边界球是通过运行两种算法来计算的,一种是简单算法,另一种是Ritter算法。两个球体中较小的一个用于确保紧密配合。
Parameters:
positionsHigh
(Array.<Number>)
包围球将包围的编码笛卡尔体的高位数组。每个点由数组中的三个元素按x、y、z的顺序组成。
positionsLow
(Array.<Number>)
包围球将包围的编码笛卡尔的低位数组。每个点由数组中的三个元素按x、y、z的顺序组成。
计算包围提供的定向边界框的紧配合边界球。
Parameters:
计算包含三维笛卡尔点列表的紧配合边界球。边界球是通过运行两种算法来计算的,一种是简单算法,另一种是Ritter算法。两个球体中较小的一个用于确保紧密配合。
Parameters:
从二维投影的矩形计算边界球体。
Parameters:
projection
(Object)
(default GeographicProjection
)
用于将矩形投影到二维的投影。
从三维矩形中计算边界球。边界球是使用椭圆体上点的子样本创建的,并包含在矩形中。对于所有类型的椭球体上的所有矩形,它可能不准确。
Parameters:
surfaceHeight
(Number)
(default 0.0
)
椭圆体表面以上的高度。
从二维投影的矩形计算边界球体。边界球体占对象在矩形上的最小和最大高度。
Parameters:
projection
(Object)
(default GeographicProjection
)
用于将矩形投影到二维的投影。
minimumHeight
(Number)
(default 0.0
)
矩形上方的最小高度。
maximumHeight
(Number)
(default 0.0
)
矩形上的最大高度。
计算包含三维点列表的紧配合边界球体,其中点按X、Y、Z顺序存储在平面阵列中。边界球是通过运行两种算法来计算的,一种是简单算法,另一种是Ritter算法。两个球体中较小的一个用于确保紧密配合。
Parameters:
positions
(Array.<Number>)
边界球将包围的点数组。每个点由数组中的三个元素按x、y、z的顺序组成。
stride
(Number)
(default 3
)
每个顶点的数组元素数。它必须至少是3,但可能更高。不管这个参数的值是多少,第一个位置的x坐标是在数组索引0处,y坐标是在数组索引1处,z坐标是在数组索引2处。当跨距为3时,下一个位置的X坐标从数组索引3开始。但是,如果步幅为5,则跳过两个数组元素,下一个位置从数组索引5开始。
Example
// Compute the bounding sphere from 3 positions, each specified relative to a center.
// In addition to the X, Y, and Z coordinates, the points array contains two additional
// elements per point which are ignored for the purpose of computing the bounding sphere.
var center = new bmgl.Cartesian3(1.0, 2.0, 3.0);
var points = [1.0, 2.0, 3.0, 0.1, 0.2,
4.0, 5.0, 6.0, 0.1, 0.2,
7.0, 8.0, 9.0, 0.1, 0.2];
var sphere = bmgl.BoundingSphere.fromVertices(points, center, 5);
确定球体位于平面的哪一侧。
Parameters:
确定遮挡器是否将球体隐藏在视图中。
Parameters:
将提供的实例存储到提供的数组中。
Parameters:
array
(Array.<Number>)
要打包的数组。
startingIndex
(Number)
(default 0
)
数组中开始打包元素的索引。
从三维世界坐标中的边界球创建二维边界球。
Parameters:
projection
(Object)
(default GeographicProjection
)
投影到二维。
将4x4仿射变换矩阵应用于边界球。
Parameters:
将4x4仿射变换矩阵应用于没有比例的边界球。未验证变换矩阵是否具有1的均匀比例。此方法比使用
BoundingSphere.transform
计算一般边界球变换更快。
Parameters:
Example
var modelMatrix = bmgl.Transforms.eastNorthUpToFixedFrame(positionOnEllipsoid);
var boundingSphere = new bmgl.BoundingSphere();
var newBoundingSphere = bmgl.BoundingSphere.transformWithoutScale(boundingSphere, modelMatrix);
计算包含左右边界球的边界球。
Parameters:
从压缩数组中检索实例。
Parameters:
array
(Array.<Number>)
压缩数组。
startingIndex
(Number)
(default 0
)
要解包的元素的起始索引。
复制此边界球体实例。
Parameters:
由矢量从边界球的中心到投射到方向上的位置的距离加/减边界球的半径。
如果您设想具有法向的无限多个平面,这将从与边界球体相交的位置计算到最近和最远平面的最小距离。
如果您设想具有法向的无限多个平面,这将从与边界球体相交的位置计算到最近和最远平面的最小距离。
Parameters:
计算从边界球上最近点到点的估计距离平方。
Parameters:
Example
// Sort bounding spheres from back to front
spheres.sort(function(a, b) {
return b.distanceSquaredTo(camera.positionWC) - a.distanceSquaredTo(camera.positionWC);
});
将此boundingsphere与提供的boundingsphere组件进行比较,如果相等,则返回
true
,否则返回false
。
Parameters:
确定球体位于平面的哪一侧。
Parameters:
确定遮挡器是否将球体隐藏在视图中。
Parameters:
计算边界球的半径。