创建一个OrientedBoundingBox的实例。某个对象的OrientedBoundingBox是一个封闭且凸的长方体。它可以提供比
BoundingSphere
或
AxisAlignedBoundingBox
< /a>在许多情况下。
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.
var center = new LSGlobe.Cartesian3(1.0, 0.0, 0.0);
var halfAxes = LSGlobe.Matrix3.fromScale(new LSGlobe.Cartesian3(1.0, 3.0, 2.0), new LSGlobe.Matrix3());
var obb = new LSGlobe.OrientedBoundingBox(center, halfAxes);
See:
Members
用于将对象打包到数组中的元素数。
center : Cartesian3
盒子的中心。
-
Default Value:
Cartesian3.ZERO
halfAxes : Matrix3
转换矩阵,以将框旋转到正确的位置。
-
Default Value:
Matrix3.ZERO
Methods
static LSGlobe.OrientedBoundingBox.clone (box, result ) → OrientedBoundingBox
复制一个OrientedBoundingBox实例。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 要复制的边界框。 |
result
|
OrientedBoundingBox | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数,或者提供一个新的OrientedBoundingBox实例(如果未提供)。 (如果框未定义,则返回未定义)
static LSGlobe.OrientedBoundingBox.computePlaneDistances (box, position, direction, result ) → Interval
向量从边界框中心到投影到方向的位置计算出的距离。
如果您想象法向方向上的平面数是无限的,这将计算到与边界框相交的位置中最接近和最远的平面。
如果您想象法向方向上的平面数是无限的,这将计算到与边界框相交的位置中最接近和最远的平面。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 计算距离的边界框。 |
position
|
Cartesian3 | 计算距离的位置。 |
direction
|
Cartesian3 | 从位置开始的方向。 |
result
|
Interval | 可选 存储最近距离和最远距离的时间间隔。 |
Returns:
边界框上距方向的最近和最远距离。
计算从边界框上最近的点到点的平方距离的估计值。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 盒子。 |
cartesian
|
Cartesian3 | 要点 |
Returns:
从边界球体到点的估计距离的平方。
Example:
// Sort bounding boxes from back to front
boxes.sort(function(a, b) {
return LSGlobe.OrientedBoundingBox.distanceSquaredTo(b, camera.positionWC) - LSGlobe.OrientedBoundingBox.distanceSquaredTo(a, camera.positionWC);
});
比较提供的OrientedBoundingBox组件并返回如果相等,则为
true
,否则为
false
。
Name | Type | Description |
---|---|---|
left
|
OrientedBoundingBox | 第一个OrientedBoundingBox。 |
right
|
OrientedBoundingBox | 第二个OrientedBoundingBox。 |
Returns:
真正
如果左右相等
假
除此以外。
static LSGlobe.OrientedBoundingBox.fromPoints ( positions , result ) → OrientedBoundingBox
计算给定位置的OrientedBoundingBox的实例。这是使用定向边界框解决方案(PHD论文)实现的Stefan Gottschalk的'碰撞查询'。参考:http://gamma.cs.unc.edu/users/gottschalk/main.pdf
Name | Type | Description |
---|---|---|
positions
|
Array.< Cartesian3 > |
可选
包围框的
Cartesian3
点列表。
|
result
|
OrientedBoundingBox | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数或一个新的OrientedBoundingBox实例(如果未提供)。
Example:
// Compute an object oriented bounding box enclosing two points.
var box = LSGlobe.OrientedBoundingBox.fromPoints([new LSGlobe.Cartesian3(2, 0, 0), new LSGlobe.Cartesian3(-2, 0, 0)]);
static LSGlobe.OrientedBoundingBox.fromRectangle (rectangle, minimumHeight , maximumHeight , ellipsoid , result ) → OrientedBoundingBox
计算一个OrientedBoundingBox,它在
Ellipsoid
的表面上界定
Rectangle
的边界> 。无法保证边界框的方向。
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 :矩形。高度必须在0到pi之间。
-
DeveloperError :椭球必须是旋转的椭球(
radii.x ==半径
)
static LSGlobe.OrientedBoundingBox.intersectPlane (box, plane) → Intersect
确定定向的边界框位于平面的哪一侧。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 要测试的定向边界框。 |
plane
|
Plane | 要测试的飞机。 |
Returns:
确定封堵器是否从视图中隐藏了边界框。
Name | Type | Description |
---|---|---|
box
|
OrientedBoundingBox | 遮挡对象周围的边界框。 |
occluder
|
Occluder | 封堵器。 |
Returns:
真正
如果该框不可见;除此以外
假
。
将提供的实例存储到提供的数组中。
Name | Type | Default | Description |
---|---|---|---|
value
|
OrientedBoundingBox | 要打包的值。 | |
array
|
Array.<Number> | 要打包的数组。 | |
startingIndex
|
Number |
0
|
可选 开始打包元素的数组索引。 |
Returns:
打包到的数组
static LSGlobe.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实例(如果未提供)。
computePlaneDistances (position, direction, result ) → Interval
向量从边界框中心到投影到方向的位置计算出的距离。
如果您想象法向方向上的平面数是无限的,这将计算到与边界框相交的位置中最接近和最远的平面。
如果您想象法向方向上的平面数是无限的,这将计算到与边界框相交的位置中最接近和最远的平面。
Name | Type | Description |
---|---|---|
position
|
Cartesian3 | 计算距离的位置。 |
direction
|
Cartesian3 | 从位置开始的方向。 |
result
|
Interval | 可选 存储最近距离和最远距离的时间间隔。 |
Returns:
边界框上距方向的最近和最远距离。
计算从边界框上最近的点到点的平方距离的估计值。
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:
真正
如果相等,
假
除此以外。
intersectPlane (plane) → Intersect
确定定向的边界框位于平面的哪一侧。
Name | Type | Description |
---|---|---|
plane
|
Plane | 要测试的飞机。 |
Returns:
确定封堵器是否从视图中隐藏了边界框。
Name | Type | Description |
---|---|---|
occluder
|
Occluder | 封堵器。 |
Returns:
真正
如果看不见球体;除此以外
假
。