创建 OrientedBoundingBox 的实例。某个对象的 OrientedBoundingBox 是一个封闭的凸长方体。在许多情况下,它可以提供比
BoundingSphere
或
AxisAlignedBoundingBox
更紧密的包围体。
Name | Type | Default | Description |
---|---|---|---|
center
|
Cartesian3 |
Cartesian3.ZERO
|
可 选框的中心。 |
halfAxes
|
Matrix3 |
Matrix3.ZERO
|
可选 边界框的三个正交半轴。等效地,变换矩阵,旋转和缩放以原点为中心的 0x0x0 立方体。 |
Example:
// Create an OrientedBoundingBox using a transformation matrix, a position where the box will be translated, and a scale.
const center = new Cesium.Cartesian3(1.0, 0.0, 0.0);
const halfAxes = Cesium.Matrix3.fromScale(new Cesium.Cartesian3(1.0, 3.0, 2.0), new Cesium.Matrix3());
const obb = new Cesium.OrientedBoundingBox(center, halfAxes);
See:
Members
用于将对象打包到数组中的元素数。
center : Cartesian3
盒子的中心。
-
Default Value:
Cartesian3.ZERO
halfAxes : Matrix3
变换矩阵,将框旋转到正确的位置。
-
Default Value:
Matrix3.ZERO
Methods
static Cesium.OrientedBoundingBox.clone (box, result ) → OrientedBoundingBox
复制 OrientedBoundingBox 实例。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 要复制的边界框。 |
result
|
OrientedBoundingBox | 可选 存储结果的对象。 |
Returns:
如果未提供修改的结果参数或新的 OrientedBoundingBox 实例。 (如果 box 未定义,则返回 undefined)
static Cesium.OrientedBoundingBox.computeCorners (box, result ) → Array.< Cartesian3 >
计算定向边界框的八个角。角按 (-X, -Y, -Z), (-X, -Y, +Z), (-X, +Y, -Z), (-X, +Y, +Z), ( +X, -Y, -Z), (+X, -Y, +Z), (+X, +Y, -Z), (+X, +Y, +Z)。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 定向边界框。 |
result
|
Array.< Cartesian3 > |
可选
存储角点的八个
Cartesian3
实例的数组。
|
Returns:
如果未提供修改的结果参数或新数组。
static Cesium.OrientedBoundingBox.computePlaneDistances (box, position, direction, result ) → Interval
由向量计算的从边界框中心到投影到方向上的位置的距离。
如果您想象无限数量的具有法线方向的平面,这将计算与边界框相交的位置到最近和最远平面的最小距离。
如果您想象无限数量的具有法线方向的平面,这将计算与边界框相交的位置到最近和最远平面的最小距离。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 计算距离的边界框。 |
position
|
Cartesian3 | 计算距离的位置。 |
direction
|
Cartesian3 | 从位置的方向。 |
result
|
Interval | 可选 用于存储最近和最远距离的间隔。 |
Returns:
边界框上从位置到方向的最近和最远距离。
static Cesium.OrientedBoundingBox.computeTransformation (box, result) → Matrix4
从定向边界框计算变换矩阵。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 定向边界框。 |
result
|
Matrix4 | 存储结果的对象。 |
Returns:
如果未提供修改的结果参数或新的
Matrix4
实例。
计算从边界框上的最近点到点的估计距离平方。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 盒子。 |
cartesian
|
Cartesian3 | 重点 |
Returns:
从定向边界框到该点的距离平方。如果点在框内,则返回 0。
Example:
// Sort bounding boxes from back to front
boxes.sort(function(a, b) {
return Cesium.OrientedBoundingBox.distanceSquaredTo(b, camera.positionWC) - Cesium.OrientedBoundingBox.distanceSquaredTo(a, camera.positionWC);
});
比较提供的 OrientedBoundingBox 组件,如果它们相等则返回
true
,否则返回
false
。
Name | Type | Description |
---|---|---|
left
|
OrientedBoundingBox | 第一个 OrientedBoundingBox。 |
right
|
OrientedBoundingBox | 第二个OrientedBoundingBox。 |
Returns:
如果左右相等,则为
true
,否则为
false
。
static Cesium.OrientedBoundingBox.fromPoints ( positions , result ) → OrientedBoundingBox
计算给定位置的 OrientedBoundingBox 的实例。这是使用定向边界框解决方案(博士论文)的 Stefan Gottschalk 的碰撞查询的实现。参考:http://gamma.cs.unc.edu/users/gottschalk/main.pdf
Name | Type | Description |
---|---|---|
positions
|
Array.< Cartesian3 > |
可选
边界框将包围的
Cartesian3
3点列表。
|
result
|
OrientedBoundingBox | 可选 存储结果的对象。 |
Returns:
修改后的结果参数或新的 OrientedBoundingBox 实例(如果未提供)。
Example:
// Compute an object oriented bounding box enclosing two points.
const box = Cesium.OrientedBoundingBox.fromPoints([new Cesium.Cartesian3(2, 0, 0), new Cesium.Cartesian3(-2, 0, 0)]);
static Cesium.OrientedBoundingBox.fromRectangle (rectangle, minimumHeight , maximumHeight , ellipsoid , result ) → OrientedBoundingBox
Name | Type | Default | Description |
---|---|---|---|
rectangle
|
Rectangle | 椭球表面上的制图矩形。 | |
minimumHeight
|
Number |
0.0
|
可选 瓦片内的最小高度(海拔)。 |
maximumHeight
|
Number |
0.0
|
可选 瓦片内的最大高度(海拔)。 |
ellipsoid
|
Ellipsoid |
Ellipsoid.WGS84
|
可选 定义矩形的椭球体。 |
result
|
OrientedBoundingBox | 可选 存储结果的对象。 |
Returns:
如果未提供修改的结果参数或新的 OrientedBoundingBox 实例。
Throws:
-
DeveloperError : rectangle.width 必须介于 0 和 pi 之间。
-
DeveloperError : rectangle.height 必须介于 0 和 pi 之间。
-
DeveloperError : 椭球必须是旋转椭球 (
radii.x == radii.y
)
static Cesium.OrientedBoundingBox.fromTransformation (transformation, result ) → OrientedBoundingBox
计算限定仿射变换的 OrientedBoundingBox。
Name | Type | Description |
---|---|---|
transformation
|
Matrix4 | 仿射变换。 |
result
|
OrientedBoundingBox | 可选 存储结果的对象。 |
Returns:
如果未提供修改的结果参数或新的 OrientedBoundingBox 实例。
static Cesium.OrientedBoundingBox.intersectPlane (box, plane) → Intersect
确定定向边界框位于平面的哪一侧。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 要测试的定向边界框。 |
plane
|
Plane | 要测试的飞机。 |
Returns:
如果整个盒子在法线指向的平面的一侧,则
Intersect.INSIDE
,如果整个盒子在另一侧,则
Intersect.OUTSIDE
,如果盒子与平面相交,则
Intersect.INTERSECTING
。
确定边界框是否被遮挡物从视图中隐藏。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 被遮挡对象周围的边界框。 |
occluder
|
Occluder | 封堵器。 |
Returns:
如果该框不可见,则为
true
;否则
false
。
将提供的实例存储到提供的数组中。
Name | Type | Default | Description |
---|---|---|---|
value
|
OrientedBoundingBox | 要打包的值。 | |
array
|
Array.<Number> | 要打包的数组。 | |
startingIndex
|
Number |
0
|
可选 开始打包元素的数组索引。 |
Returns:
装入的数组
static Cesium.OrientedBoundingBox.unpack (array, startingIndex , result ) → OrientedBoundingBox
从打包数组中检索实例。
Name | Type | Default | Description |
---|---|---|---|
array
|
Array.<Number> | 打包的数组。 | |
startingIndex
|
Number |
0
|
可选 要解包的元素的起始索引。 |
result
|
OrientedBoundingBox | 可选 存储结果的对象。 |
Returns:
修改后的结果参数或新的 OrientedBoundingBox 实例(如果未提供)。
clone ( result ) → OrientedBoundingBox
复制此 OrientedBoundingBox 实例。
Name | Type | Description |
---|---|---|
result
|
OrientedBoundingBox | 可选 存储结果的对象。 |
Returns:
修改后的结果参数或新的 OrientedBoundingBox 实例(如果未提供)。
computeCorners ( result ) → Array.< Cartesian3 >
计算定向边界框的八个角。角按 (-X, -Y, -Z), (-X, -Y, +Z), (-X, +Y, -Z), (-X, +Y, +Z), ( +X, -Y, -Z), (+X, -Y, +Z), (+X, +Y, -Z), (+X, +Y, +Z)。
Name | Type | Description |
---|---|---|
result
|
Array.< Cartesian3 > |
可选
存储角点的八个
Cartesian3
实例的数组。
|
Returns:
如果未提供修改的结果参数或新数组。
computePlaneDistances (position, direction, result ) → Interval
由向量计算的从边界框中心到投影到方向上的位置的距离。
如果您想象无限数量的具有法线方向的平面,这将计算与边界框相交的位置到最近和最远平面的最小距离。
如果您想象无限数量的具有法线方向的平面,这将计算与边界框相交的位置到最近和最远平面的最小距离。
Name | Type | Description |
---|---|---|
position
|
Cartesian3 | 计算距离的位置。 |
direction
|
Cartesian3 | 从位置的方向。 |
result
|
Interval | 可选 用于存储最近和最远距离的间隔。 |
Returns:
边界框上从位置到方向的最近和最远距离。
computeTransformation (result) → Matrix4
从定向边界框计算变换矩阵。
Name | Type | Description |
---|---|---|
result
|
Matrix4 | 存储结果的对象。 |
Returns:
如果未提供修改的结果参数或新的
Matrix4
实例。
计算从边界框上的最近点到点的估计距离平方。
Name | Type | Description |
---|---|---|
cartesian
|
Cartesian3 | 重点 |
Returns:
从边界球到该点的估计距离平方。
Example:
// Sort bounding boxes from back to front
boxes.sort(function(a, b) {
return b.distanceSquaredTo(camera.positionWC) - a.distanceSquaredTo(camera.positionWC);
});
将此 OrientedBoundingBox 与提供的 OrientedBoundingBox 组件进行比较,如果它们相等则返回
true
,否则返回
false
。
Name | Type | Description |
---|---|---|
right
|
OrientedBoundingBox | 可选 右手边的 OrientedBoundingBox。 |
Returns:
如果它们相等,则为
true
,否则为
false
。
intersectPlane (plane) → Intersect
确定定向边界框位于平面的哪一侧。
Name | Type | Description |
---|---|---|
plane
|
Plane | 要测试的飞机。 |
Returns:
如果整个盒子在法线指向的平面的一侧,则
Intersect.INSIDE
,如果整个盒子在另一侧,则
Intersect.OUTSIDE
,如果盒子与平面相交,则
Intersect.INTERSECTING
。
确定边界框是否被遮挡物从视图中隐藏。
Name | Type | Description |
---|---|---|
occluder
|
Occluder | 封堵器。 |
Returns:
如果球体不可见,则为
true
;否则
false
。