public class TriangulatedSensorProjection extends Object
SensorProjection
that has been triangulated for rendering. In order to minimize memory allocations,
an instance of this class can be re-used for multiple projections. Each time that
TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int)
is called, the triangulation is updated.Constructor and Description |
---|
TriangulatedSensorProjection()
Initializes a new instance.
|
Modifier and Type | Method and Description |
---|---|
Cartesian[] |
computeSurfaceBoundaryLines()
Gets the boundary lines of the portions of the sensor that intersected with the surface of the
central body as of the last call to
TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int) . |
double |
getMaximumRadius()
Gets the maximum distance of any position in
MeshVertexPositions (get ) from the
SensorOrigin (get ) as of the last time that TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int) was called. |
int[] |
getMeshOutlineIndices()
Gets the vertex indices defining the outline lines of the mesh.
|
int[] |
getMeshVertexIndices()
Gets the vertex indices definining the triangles of the sensor mesh.
|
Cartesian[] |
getMeshVertexNormals()
Gets the normals of the vertices definining the sensor volume mesh.
|
Cartesian[] |
getMeshVertexPositions()
Gets the positions of the vertices definining the sensor volume mesh.
|
Cartesian |
getSensorOrigin()
Gets the origin of the sensor as of the last time that
TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int) was called. |
BaseCollection<SurfaceTriangulatorResult> |
triangulateSurfaceRegions()
Triangulates the portions of the sensor that intersected with the surface of the central body
as of the last call to
TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int) and returns a SurfaceTriangulatorResult
for each distinct region. |
void |
updateFromNewProjection(CentralBody centralBody,
Cartesian sensorOrigin,
SensorProjection projection,
int approximateSamplesPerBoundary)
Updates the triangulation from a given sensor projection.
|
void |
updateFromNewProjection(CentralBody centralBody,
Cartesian sensorOrigin,
SensorProjection projection,
int approximateSamplesPerBoundary,
boolean triangulateProjectionEndCap)
Updates the triangulation from a given sensor projection.
|
public TriangulatedSensorProjection()
public final int[] getMeshOutlineIndices()
public final Cartesian[] getMeshVertexPositions()
null
.
When TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int)
is called, the content of this array may be modified,
or a new array may be created.public final Cartesian[] getMeshVertexNormals()
null
.
When TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int)
is called, the content of this array may be modified,
or a new array may be created.public final int[] getMeshVertexIndices()
null
.
When TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int)
is called, the content of this array may be modified,
or a new array may be created.public final Cartesian getSensorOrigin()
TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int)
was called.public final double getMaximumRadius()
MeshVertexPositions
(get
) from the
SensorOrigin
(get
) as of the last time that TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int)
was called.public final BaseCollection<SurfaceTriangulatorResult> triangulateSurfaceRegions()
TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int)
and returns a SurfaceTriangulatorResult
for each distinct region. If the sensor has no projection, this property returns an empty collection.public final Cartesian[] computeSurfaceBoundaryLines()
TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int)
. Each pair of positions
in the returned array defines a line segment on the surface. The line segments are not
necessarily all connected. If there are no intersections with the central body, this method
returns an empty array.
When TriangulatedSensorProjection.updateFromNewProjection(CentralBody,Cartesian,SensorProjection,int)
is called, the content of the returned array may be modified.public final void updateFromNewProjection(CentralBody centralBody, @Nonnull Cartesian sensorOrigin, @Nonnull SensorProjection projection, int approximateSamplesPerBoundary)
centralBody
- The central body onto which the sensor is projected.sensorOrigin
- The origin of the sensor, expressed in the
FixedFrame
(get
/ set
) of the
centralBody
.projection
- The new sensor projection.approximateSamplesPerBoundary
- The number of samples to use per sensor projection boundary when triangulating.public final void updateFromNewProjection(CentralBody centralBody, @Nonnull Cartesian sensorOrigin, @Nonnull SensorProjection projection, int approximateSamplesPerBoundary, boolean triangulateProjectionEndCap)
centralBody
- The central body onto which the sensor is projected.sensorOrigin
- The origin of the sensor, expressed in the
FixedFrame
(get
/ set
) of the
centralBody
.projection
- The new sensor projection.approximateSamplesPerBoundary
- The number of samples to use per sensor projection boundary when triangulating.triangulateProjectionEndCap
- Whether or not trianglulations will be performed for an end cap of the projection.