qd-changjing/public/static/Build/Documentation/Occluder.html

1505 lines
68 KiB
HTML
Raw Normal View History

2022-07-05 16:56:29 +08:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Occluder - Cesium Documentation</title>
<!--[if lt IE 9]>
<script src="javascript/html5.js"></script>
<![endif]-->
<link href="styles/jsdoc-default.css" rel="stylesheet">
<link href="styles/prism.css" rel="stylesheet">
</head>
<body>
<div id="main">
<h1 class="page-title">
<a href="index.html"><img src="Images/CesiumLogo.png" class="cesiumLogo"></a>
Occluder
<div class="titleCenterer"></div>
</h1>
<section>
<header>
</header>
<article>
<div class="container-overview">
<div class="nameContainer">
<h4 class="name" id="Occluder">
<a href="#Occluder" class="doc-link"></a>
new Cesium.Occluder<span class="signature">(occluderBoundingSphere, cameraPosition)</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L29">Core/Occluder.js 29</a>
</div>
</h4>
</div>
<div class="description">
Creates an Occluder derived from an object's position and radius, as well as the camera position.
The occluder can be used to determine whether or not other objects are visible or hidden behind the
visible horizon defined by the occluder and camera position.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>occluderBoundingSphere</code></td>
<td class="type">
<span class="param-type"><a href="BoundingSphere.html">BoundingSphere</a></span>
</td>
<td class="description last">
The bounding sphere surrounding the occluder.</td>
</tr>
<tr>
<td class="name"><code>cameraPosition</code></td>
<td class="type">
<span class="param-type"><a href="Cartesian3.html">Cartesian3</a></span>
</td>
<td class="description last">
The coordinate of the viewer/camera.</td>
</tr>
</tbody>
</table>
<dl class="details">
<h5>Example:</h5>
<pre><code class="language-javascript">// Construct an occluder one unit away from the origin with a radius of one.
const cameraPosition = Cesium.Cartesian3.ZERO;
const occluderBoundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1), 1);
const occluder = new Cesium.Occluder(occluderBoundingSphere, cameraPosition);</code></pre>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<div class="nameContainer">
<h4 class="name" id="cameraPosition">
<a href="#cameraPosition" class="doc-link"></a>
cameraPosition<span class="type-signature"> : <a href="Cartesian3.html">Cartesian3</a></span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L81">Core/Occluder.js 81</a>
</div>
</h4>
</div>
<div class="description">
The position of the camera.
</div>
<dl class="details">
</dl>
<div class="nameContainer">
<h4 class="name" id="position">
<a href="#position" class="doc-link"></a>
position<span class="type-signature"> : <a href="Cartesian3.html">Cartesian3</a></span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L59">Core/Occluder.js 59</a>
</div>
</h4>
</div>
<div class="description">
The position of the occluder.
</div>
<dl class="details">
</dl>
<div class="nameContainer">
<h4 class="name" id="radius">
<a href="#radius" class="doc-link"></a>
radius<span class="type-signature"> : Number</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L70">Core/Occluder.js 70</a>
</div>
</h4>
</div>
<div class="description">
The radius of the occluder.
</div>
<dl class="details">
</dl>
<h3 class="subsection-title">Methods</h3>
<div class="nameContainer">
<h4 class="name" id=".computeOccludeePoint">
<a href="#.computeOccludeePoint" class="doc-link"></a>
<span class="type-signature attribute-static">static</span> Cesium.Occluder.computeOccludeePoint<span class="signature">(occluderBoundingSphere, occludeePosition, positions)</span> &rarr; <span class="type-signature returnType">Object</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L407">Core/Occluder.js 407</a>
</div>
</h4>
</div>
<div class="description">
Computes a point that can be used as the occludee position to the visibility functions.
Use a radius of zero for the occludee radius. Typically, a user computes a bounding sphere around
an object that is used for visibility; however it is also possible to compute a point that if
seen/not seen would also indicate if an object is visible/not visible. This function is better
called for objects that do not move relative to the occluder and is large, such as a chunk of
terrain. You are better off not calling this and using the object's bounding sphere for objects
such as a satellite or ground vehicle.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>occluderBoundingSphere</code></td>
<td class="type">
<span class="param-type"><a href="BoundingSphere.html">BoundingSphere</a></span>
</td>
<td class="description last">
The bounding sphere surrounding the occluder.</td>
</tr>
<tr>
<td class="name"><code>occludeePosition</code></td>
<td class="type">
<span class="param-type"><a href="Cartesian3.html">Cartesian3</a></span>
</td>
<td class="description last">
The point where the occludee (bounding sphere of radius 0) is located.</td>
</tr>
<tr>
<td class="name"><code>positions</code></td>
<td class="type">
<span class="param-type">Array.&lt;<a href="Cartesian3.html">Cartesian3</a>></span>
</td>
<td class="description last">
List of altitude points on the horizon near the surface of the occluder.</td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
An object containing two attributes: <code>occludeePoint</code> and <code>valid</code>
which is a boolean value.
</div>
<h5>Throws:</h5>
<ul>
<li>
<div class="param-desc">
<span class="param-type"><a href="DeveloperError.html">DeveloperError</a></span>
: <code>positions</code> must contain at least one element.
</div>
</li>
<li>
<div class="param-desc">
<span class="param-type"><a href="DeveloperError.html">DeveloperError</a></span>
: <code>occludeePosition</code> must have a value other than <code>occluderBoundingSphere.center</code>.
</div>
</li>
</ul>
<dl class="details">
<h5>Example:</h5>
<pre><code class="language-javascript">const cameraPosition = new Cesium.Cartesian3(0, 0, 0);
const occluderBoundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -8), 2);
const occluder = new Cesium.Occluder(occluderBoundingSphere, cameraPosition);
const positions = [new Cesium.Cartesian3(-0.25, 0, -5.3), new Cesium.Cartesian3(0.25, 0, -5.3)];
const tileOccluderSphere = Cesium.BoundingSphere.fromPoints(positions);
const occludeePosition = tileOccluderSphere.center;
const occludeePt = Cesium.Occluder.computeOccludeePoint(occluderBoundingSphere, occludeePosition, positions);</code></pre>
</dl>
<div class="nameContainer">
<h4 class="name" id=".computeOccludeePointFromRectangle">
<a href="#.computeOccludeePointFromRectangle" class="doc-link"></a>
<span class="type-signature attribute-static">static</span> Cesium.Occluder.computeOccludeePointFromRectangle<span class="signature">(rectangle, <span class="optional">ellipsoid</span>)</span> &rarr; <span class="type-signature returnType">Object</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L505">Core/Occluder.js 505</a>
</div>
</h4>
</div>
<div class="description">
Computes a point that can be used as the occludee position to the visibility functions from a rectangle.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>rectangle</code></td>
<td class="type">
<span class="param-type"><a href="Rectangle.html">Rectangle</a></span>
</td>
<td class="default">
</td>
<td class="description last">
The rectangle used to create a bounding sphere.</td>
</tr>
<tr>
<td class="name"><code>ellipsoid</code></td>
<td class="type">
<span class="param-type"><a href="Ellipsoid.html">Ellipsoid</a></span>
</td>
<td class="default">
<code class="language-javascript">Ellipsoid.WGS84</code>
</td>
<td class="description last">
<span class="optional">optional</span>
The ellipsoid used to determine positions of the rectangle.</td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
An object containing two attributes: <code>occludeePoint</code> and <code>valid</code>
which is a boolean value.
</div>
<dl class="details">
</dl>
<div class="nameContainer">
<h4 class="name" id=".fromBoundingSphere">
<a href="#.fromBoundingSphere" class="doc-link"></a>
<span class="type-signature attribute-static">static</span> Cesium.Occluder.fromBoundingSphere<span class="signature">(occluderBoundingSphere, cameraPosition, <span class="optional">result</span>)</span> &rarr; <span class="type-signature returnType"><a href="Occluder.html">Occluder</a></span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L146">Core/Occluder.js 146</a>
</div>
</h4>
</div>
<div class="description">
Creates an occluder from a bounding sphere and the camera position.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>occluderBoundingSphere</code></td>
<td class="type">
<span class="param-type"><a href="BoundingSphere.html">BoundingSphere</a></span>
</td>
<td class="description last">
The bounding sphere surrounding the occluder.</td>
</tr>
<tr>
<td class="name"><code>cameraPosition</code></td>
<td class="type">
<span class="param-type"><a href="Cartesian3.html">Cartesian3</a></span>
</td>
<td class="description last">
The coordinate of the viewer/camera.</td>
</tr>
<tr>
<td class="name"><code>result</code></td>
<td class="type">
<span class="param-type"><a href="Occluder.html">Occluder</a></span>
</td>
<td class="description last">
<span class="optional">optional</span>
The object onto which to store the result.</td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
The occluder derived from an object's position and radius, as well as the camera position.
</div>
<dl class="details">
</dl>
<div class="nameContainer">
<h4 class="name" id="computeVisibility">
<a href="#computeVisibility" class="doc-link"></a>
computeVisibility<span class="signature">(occludeeBS)</span> &rarr; <span class="type-signature returnType"><a href="global.html#Visibility">Visibility</a></span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L307">Core/Occluder.js 307</a>
</div>
</h4>
</div>
<div class="description">
Determine to what extent an occludee is visible (not visible, partially visible, or fully visible).
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>occludeeBS</code></td>
<td class="type">
<span class="param-type"><a href="BoundingSphere.html">BoundingSphere</a></span>
</td>
<td class="description last">
The bounding sphere of the occludee.</td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
Visibility.NONE if the occludee is not visible,
Visibility.PARTIAL if the occludee is partially visible, or
Visibility.FULL if the occludee is fully visible.
</div>
<dl class="details">
<h5>Example:</h5>
<pre><code class="language-javascript">const sphere1 = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1.5), 0.5);
const sphere2 = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -2.5), 0.5);
const cameraPosition = new Cesium.Cartesian3(0, 0, 0);
const occluder = new Cesium.Occluder(sphere1, cameraPosition);
occluder.computeVisibility(sphere2); //returns Visibility.NONE</code></pre>
<h5>See:</h5>
<ul class="see-list">
<li>Occluder#isVisible</li>
</ul>
</dl>
<div class="nameContainer">
<h4 class="name" id="isBoundingSphereVisible">
<a href="#isBoundingSphereVisible" class="doc-link"></a>
isBoundingSphereVisible<span class="signature">(occludee)</span> &rarr; <span class="type-signature returnType">Boolean</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L226">Core/Occluder.js 226</a>
</div>
</h4>
</div>
<div class="description">
Determines whether or not a sphere, the <code>occludee</code>, is hidden from view by the occluder.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>occludee</code></td>
<td class="type">
<span class="param-type"><a href="BoundingSphere.html">BoundingSphere</a></span>
</td>
<td class="description last">
The bounding sphere surrounding the occludee object.</td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
<code>true</code> if the occludee is visible; otherwise <code>false</code>.
</div>
<dl class="details">
<h5>Example:</h5>
<pre><code class="language-javascript">const cameraPosition = new Cesium.Cartesian3(0, 0, 0);
const littleSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1), 0.25);
const occluder = new Cesium.Occluder(littleSphere, cameraPosition);
const bigSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -3), 1);
occluder.isBoundingSphereVisible(bigSphere); //returns true</code></pre>
<h5>See:</h5>
<ul class="see-list">
<li><a href="Occluder.html#computeVisibility">Occluder#computeVisibility</a></li>
</ul>
</dl>
<div class="nameContainer">
<h4 class="name" id="isPointVisible">
<a href="#isPointVisible" class="doc-link"></a>
isPointVisible<span class="signature">(occludee)</span> &rarr; <span class="type-signature returnType">Boolean</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/Occluder.js#L190">Core/Occluder.js 190</a>
</div>
</h4>
</div>
<div class="description">
Determines whether or not a point, the <code>occludee</code>, is hidden from view by the occluder.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>occludee</code></td>
<td class="type">
<span class="param-type"><a href="Cartesian3.html">Cartesian3</a></span>
</td>
<td class="description last">
The point surrounding the occludee object.</td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
<code>true</code> if the occludee is visible; otherwise <code>false</code>.
</div>
<dl class="details">
<h5>Example:</h5>
<pre><code class="language-javascript">const cameraPosition = new Cesium.Cartesian3(0, 0, 0);
const littleSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1), 0.25);
const occluder = new Cesium.Occluder(littleSphere, cameraPosition);
const point = new Cesium.Cartesian3(0, 0, -3);
occluder.isPointVisible(point); //returns true</code></pre>
<h5>See:</h5>
<ul class="see-list">
<li><a href="Occluder.html#computeVisibility">Occluder#computeVisibility</a></li>
</ul>
</dl>
</article>
</section>
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.10</a>
</footer>
</div>
<div class="nav">
<div class="menu">
<input type="text" class="classFilter" id="ClassFilter" placeholder="Search">
<ul id="ClassList"><li data-name="Animation"><a href="Animation.html">Animation</a></li><li data-name="AnimationViewModel"><a href="AnimationViewModel.html">AnimationViewModel</a></li><li data-name="Appearance"><a href="Appearance.html">Appearance</a></li><li data-name="ArcGisMapServerImageryProvider"><a href="ArcGisMapServerImageryProvider.html">ArcGisMapServerImageryProvider</a></li><li data-name="ArcGISTiledElevationTerrainProvider"><a href="ArcGISTiledElevationTerrainProvider.html">ArcGISTiledElevationTerrainProvider</a></li><li data-name="ArcType"><a href="global.html#ArcType">ArcType</a></li><li data-name="AssociativeArray"><a href="AssociativeArray.html">AssociativeArray</a></li><li data-name="Axis"><a href="global.html#Axis">Axis</a></li><li data-name="AxisAlignedBoundingBox"><a href="AxisAlignedBoundingBox.html">AxisAlignedBoundingBox</a></li><li data-name="backFaceCulling"><a href="global.html#backFaceCulling">backFaceCulling</a></li><li data-name="barycentricCoordinates"><a href="global.html#barycentricCoordinates">barycentricCoordinates</a></li><li data-name="BaseLayerPicker"><a href="BaseLayerPicker.html">BaseLayerPicker</a></li><li data-name="BaseLayerPickerViewModel"><a href="BaseLayerPickerViewModel.html">BaseLayerPickerViewModel</a></li><li data-name="Billboard"><a href="Billboard.html">Billboard</a></li><li data-name="BillboardCollection"><a href="BillboardCollection.html">BillboardCollection</a></li><li data-name="BillboardGraphics"><a href="BillboardGraphics.html">BillboardGraphics</a></li><li data-name="BillboardVisualizer"><a href="BillboardVisualizer.html">BillboardVisualizer</a></li><li data-name="binarySearch"><a href="global.html#binarySearch">binarySearch</a></li><li data-name="binarySearchComparator"><a href="global.html#binarySearchComparator">binarySearchComparator</a></li><li data-name="BingMapsGeocoderService"><a href="BingMapsGeocoderService.html">BingMapsGeocoderService</a></li><li data-name="BingMapsImageryProvider"><a href="BingMapsImageryProvider.html">BingMapsImageryProvider</a></li><li data-name="BingMapsStyle"><a href="global.html#BingMapsStyle">BingMapsStyle</a></li><li data-name="BlendEquation"><a href="global.html#BlendEquation">BlendEquation</a></li><li data-name="BlendFunction"><a href="global.html#BlendFunction">BlendFunction</a></li><li data-name="BlendingState"><a href="BlendingState.html">BlendingState</a></li><li data-name="BlendOption"><a href="global.html#BlendOption">BlendOption</a></li><li data-name="BoundingRectangle"><a href="BoundingRectangle.html">BoundingRectangle</a></li><li data-name="BoundingSphere"><a href="BoundingSphere.html">BoundingSphere</a></li><li data-name="boundingSphere"><a href="global.html#boundingSphere">boundingSphere</a></li><li data-name="BoxEmitter"><a href="BoxEmitter.html">BoxEmitter</a></li><li data-name="BoxGeometry"><a href="BoxGeometry.html">BoxGeometry</a></li><li data-name="BoxGeometryUpdater"><a href="BoxGeometryUpdater.html">BoxGeometryUpdater</a></li><li data-name="BoxGraphics"><a href="BoxGraphics.html">BoxGraphics</a></li><li data-name="BoxOutlineGeometry"><a href="BoxOutlineGeometry.html">BoxOutlineGeometry</a></li><li data-name="buildModuleUrl"><a href="global.html#buildModuleUrl">buildModuleUrl</a></li><li data-name="CallbackProperty"><a href="CallbackProperty.html">CallbackProperty</a></li><li data-name="Camera"><a href="Camera.html">Camera</a></li><li data-name="CameraEventAggregator"><a href="CameraEventAggregator.html">CameraEventAggregator</a></li><li data-name="CameraEventType"><a href="global.html#CameraEventType">CameraEventType</a></li><li data-name="cancelAnimationFrame"><a href="global.html#cancelAnimationFrame">cancelAnimationFrame</a></li><li data-name="Cartesian2"><a href="Cartesian2.html">Cartesian2</a></li><li data-name="Cartesian3"><a href="Cartesian3.html">Cartesian3</a></li><li data-name="Cartesian4"><a href="Cartesian4.html">Cartesian4</a></li><li data-name="Cartographic"><a href="Cartographic.html">Cartographic</a></li><li data-name="CartographicGeocoderService"><a href="CartographicGeocoderServic
</div>
</div>
<script>
if (window.frameElement) {
document.body.className = 'embedded';
var ele = document.createElement('a');
ele.className = 'popout';
ele.target = '_blank';
ele.href = window.location.href;
ele.title = 'Pop out';
document.getElementById('main').appendChild(ele);
}
// Set targets on external links. Sandcastle and GitHub shouldn't be embedded in any iframe.
Array.prototype.forEach.call(document.getElementsByTagName('a'), function(a) {
if (/^https?:/i.test(a.getAttribute('href'))) {
a.target='_blank';
}
});
</script>
<script src="javascript/prism.js"></script>
<script src="javascript/cesiumDoc.js"></script>
</body>
</html>