main.cesium.Occluder.kt Maven / Gradle / Ivy
The newest version!
// Automatically generated - do not modify!
@file:JsModule("cesium")
@file:Suppress(
"EXTERNAL_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER",
)
package cesium
/**
* 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.
* ```
* // Construct an occluder one unit away from the origin with a radius of one.
* const cameraPosition = Cartesian3.ZERO;
* const occluderBoundingSphere = new BoundingSphere(new Cartesian3(0, 0, -1), 1);
* const occluder = new Occluder(occluderBoundingSphere, cameraPosition);
* ```
* @see Online Documentation
*
* @constructor
* @param [occluderBoundingSphere] The bounding sphere surrounding the occluder.
* @property [cameraPosition] The coordinate of the viewer/camera.
* @see Online Documentation
*/
external class Occluder(
occluderBoundingSphere: BoundingSphere,
var cameraPosition: Cartesian3,
) {
/**
* The position of the occluder.
* @see Online Documentation
*/
var position: Cartesian3
/**
* The radius of the occluder.
* @see Online Documentation
*/
var radius: Double
/**
* Determines whether or not a point, the `occludee`, is hidden from view by the occluder.
* ```
* const cameraPosition = new Cartesian3(0, 0, 0);
* const littleSphere = new BoundingSphere(new Cartesian3(0, 0, -1), 0.25);
* const occluder = new Occluder(littleSphere, cameraPosition);
* const point = new Cartesian3(0, 0, -3);
* occluder.isPointVisible(point); //returns true
* ```
* @param [occludee] The point surrounding the occludee object.
* @return `true` if the occludee is visible; otherwise `false`.
* @see Online Documentation
*/
fun isPointVisible(occludee: Cartesian3): Boolean
/**
* Determines whether or not a sphere, the `occludee`, is hidden from view by the occluder.
* ```
* const cameraPosition = new Cartesian3(0, 0, 0);
* const littleSphere = new BoundingSphere(new Cartesian3(0, 0, -1), 0.25);
* const occluder = new Occluder(littleSphere, cameraPosition);
* const bigSphere = new BoundingSphere(new Cartesian3(0, 0, -3), 1);
* occluder.isBoundingSphereVisible(bigSphere); //returns true
* ```
* @param [occludee] The bounding sphere surrounding the occludee object.
* @return `true` if the occludee is visible; otherwise `false`.
* @see Online Documentation
*/
fun isBoundingSphereVisible(occludee: BoundingSphere): Boolean
/**
* Determine to what extent an occludee is visible (not visible, partially visible, or fully visible).
* ```
* const sphere1 = new BoundingSphere(new Cartesian3(0, 0, -1.5), 0.5);
* const sphere2 = new BoundingSphere(new Cartesian3(0, 0, -2.5), 0.5);
* const cameraPosition = new Cartesian3(0, 0, 0);
* const occluder = new Occluder(sphere1, cameraPosition);
* occluder.computeVisibility(sphere2); //returns Visibility.NONE
* ```
* @param [occludeeBS] The bounding sphere of the occludee.
* @return 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.
* @see Online Documentation
*/
fun computeVisibility(occludeeBS: BoundingSphere): Visibility
companion object {
/**
* Creates an occluder from a bounding sphere and the camera position.
* @param [occluderBoundingSphere] The bounding sphere surrounding the occluder.
* @param [cameraPosition] The coordinate of the viewer/camera.
* @param [result] The object onto which to store the result.
* @return The occluder derived from an object's position and radius, as well as the camera position.
* @see Online Documentation
*/
fun fromBoundingSphere(
occluderBoundingSphere: BoundingSphere,
cameraPosition: Cartesian3,
result: Occluder? = definedExternally,
): Occluder
/**
* 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.
* ```
* const cameraPosition = new Cartesian3(0, 0, 0);
* const occluderBoundingSphere = new BoundingSphere(new Cartesian3(0, 0, -8), 2);
* const occluder = new Occluder(occluderBoundingSphere, cameraPosition);
* const positions = [new Cartesian3(-0.25, 0, -5.3), new Cartesian3(0.25, 0, -5.3)];
* const tileOccluderSphere = BoundingSphere.fromPoints(positions);
* const occludeePosition = tileOccluderSphere.center;
* const occludeePt = Occluder.computeOccludeePoint(occluderBoundingSphere, occludeePosition, positions);
* ```
* @param [occluderBoundingSphere] The bounding sphere surrounding the occluder.
* @param [occludeePosition] The point where the occludee (bounding sphere of radius 0) is located.
* @param [positions] List of altitude points on the horizon near the surface of the occluder.
* @return An object containing two attributes: `occludeePoint` and `valid`
* which is a boolean value.
* @see Online Documentation
*/
fun computeOccludeePoint(
occluderBoundingSphere: BoundingSphere,
occludeePosition: Cartesian3,
positions: Array,
): Any
/**
* Computes a point that can be used as the occludee position to the visibility functions from a rectangle.
* @param [rectangle] The rectangle used to create a bounding sphere.
* @param [ellipsoid] The ellipsoid used to determine positions of the rectangle.
* Default value - [Ellipsoid.WGS84]
* @return An object containing two attributes: `occludeePoint` and `valid`
* which is a boolean value.
* @see Online Documentation
*/
fun computeOccludeePointFromRectangle(
rectangle: Rectangle,
ellipsoid: Ellipsoid? = definedExternally,
): Any
}
}