public class ComplexConic extends SensorFieldOfView
The vertex of the volume is located at the origin and the sensor principal direction is along the positive z-axis. Half angles measured from the principal direction are used to define the outer boundary of the volume as well as an interior conical volume of exclusion. Minimum and maximum clock angles measured from the x-axis and about the principal direction are used to further restrict the volume to a sector of the annular cross-section. The range limit measured radially from the origin defines the maximum distance at which the sensor can detect a target, and forms the final bound of the sensor volume.
Constructor and Description |
---|
ComplexConic()
Constructs a volume with a default definition.
|
ComplexConic(double innerHalfAngle,
double outerHalfAngle,
double minimumClockAngle,
double maximumClockAngle)
Constructs a volume of infinite radius with the provided parameters.
|
ComplexConic(double innerHalfAngle,
double outerHalfAngle,
double minimumClockAngle,
double maximumClockAngle,
double radius)
Constructs a volume of limited radius with the provided parameters.
|
Modifier and Type | Method and Description |
---|---|
boolean |
encloses(Cartesian point)
Indicates if the provided point is inside the volume.
|
EnclosureDescriptionCollection |
getEnclosureDescriptions()
Gets the list of descriptions for the enclosure functions for this solid.
|
double |
getInnerHalfAngle()
Gets the inner half angle used to define the interior conical volume of exclusion.
|
boolean |
getIsConnected()
Gets a value indicating whether the figure is connected.
|
double |
getMaximumClockAngle()
Gets the maximum clock angle.
|
double |
getMinimumClockAngle()
Gets the minimum clock angle.
|
double |
getOuterHalfAngle()
Gets the outer half angle used to define the exterior conical boundary of the volume.
|
SensorProjection |
getProjection(Ellipsoid ellipsoid,
KinematicTransformation ellipsoidToSensorTransformation,
SensorProjectionOptions projectionOptions)
Gets the projection of the sensor onto the front surface of a specified ellipsoid and onto a plane at a
specified distance in space.
|
protected void |
onRadiusChanged()
|
void |
setClockAngles(double minimum,
double maximum)
Sets the clock angles, which restrict the volume to a wedge-shaped portion of the annular cross-section.
|
void |
setHalfAngles(double inner,
double outer)
Sets the inner and outer half angles of a sensor volume, which are used to define inner and outer
conical volumes.
|
getProjection, getRadius, getService, setRadius
public ComplexConic()
public ComplexConic(double innerHalfAngle, double outerHalfAngle, double minimumClockAngle, double maximumClockAngle)
innerHalfAngle
- The angle between the principal direction and the boundary of the interior conical volume of exclusion.
Defines the interior conical volume of exclusion.outerHalfAngle
- The angle between the principal direction and the external boundary of the volume of the sensor.
Defines the conical volume of the sensor.minimumClockAngle
- The angle between the positive x-axis and the opening edge of the restricted annular cross-section.
The angle is measured clockwise when looking in the direction of the positive z axis.
In conjunction with the maximumClockAngle
,
restricts sensor volume to a portion of the annular cross-section of a cone.maximumClockAngle
- The angle between the positive x-axis and the closing edge of the restricted annular cross-section.
The angle is measured clockwise when looking in the direction of the positive z axis.
In conjunction with the minimumClockAngle
,
restricts the sensor volume to a portion of the annular cross-section of a cone.public ComplexConic(double innerHalfAngle, double outerHalfAngle, double minimumClockAngle, double maximumClockAngle, double radius)
innerHalfAngle
- The angle between the principal direction and the boundary of the interior conical volume of exclusion.
Defines the interior conical volume of exclusion.outerHalfAngle
- The angle between the principal direction and the external boundary of the volume of the sensor.
Defines the conical volume of the sensor.minimumClockAngle
- The angle between the positive x-axis and the opening edge of the restricted annular cross-section.
The angle is measured clockwise when looking in the direction of the positive z axis.
In conjunction with the maximumClockAngle
,
restricts sensor volume to a portion of the annular cross-section of a cone.maximumClockAngle
- The angle between the positive x-axis and the closing edge of the restricted annular cross-section.
The angle is measured clockwise when looking in the direction of the positive z axis.
In conjunction with the minimumClockAngle
,
restricts the sensor volume to a portion of the annular cross-section of a cone.radius
- The radial limit of the volume.
This is the maximum range at which the sensor can detect a target.public boolean getIsConnected()
getIsConnected
in class Figure
protected void onRadiusChanged()
onRadiusChanged
in class SensorFieldOfView
public final double getInnerHalfAngle()
public final double getOuterHalfAngle()
public final double getMinimumClockAngle()
MaximumClockAngle
(get
), this restricts
volume to only a wedge-shaped portion of the annular cross-section of the sensor cone. The angle is
measured clockwise when looking in the direction of the positive z axis.public final double getMaximumClockAngle()
MinimumClockAngle
(get
), this restricts
volume to only a wedge-shaped portion of the annular cross-section of the sensor cone. The angle is
measured clockwise when looking in the direction of the positive z axis.public final void setHalfAngles(double inner, double outer)
inner
- The angle between the principal direction and the boundary of the interior conical volume of exclusion.
Defines the interior conical volume of exclusion.outer
- The angle between the principal direction and the external boundary of the volume of the sensor.
Defines the conical volume of the sensor.ArgumentOutOfRangeException
- The inner and outer half angles must be in the range from 0 to π radians, not inclusive.ArgumentException
- The inner half angle must be less than the outer half angle.public final void setClockAngles(double minimum, double maximum)
minimum
- The angle between the positive x-axis and the opening edge of the restricted annular cross-section.
The angle is measured clockwise when looking in the direction of the positive z axis.
In conjunction with the maximum
,
restricts sensor volume to a portion of the annular cross-section of a cone.maximum
- The angle between the positive x-axis and the closing edge of the restricted annular cross-section.
The angle is measured clockwise when looking in the direction of the positive z axis.
In conjunction with the minimum
,
restricts the sensor volume to a portion of the annular cross-section of a cone.ArgumentOutOfRangeException
- The minimum
and maximum
clock angles must be in the range from -2π to 2π radians.ArgumentException
- The minimum
clock angle must be less than the maximum
clock angle.public boolean encloses(@Nonnull Cartesian point)
The point
parameter must be expressed in the same coordinate frame
that the volume is defined in.
public EnclosureDescriptionCollection getEnclosureDescriptions()
getEnclosureDescriptions
in class Solid
public SensorProjection getProjection(Ellipsoid ellipsoid, @Nonnull KinematicTransformation ellipsoidToSensorTransformation, SensorProjectionOptions projectionOptions)
getProjection
in class SensorFieldOfView
ellipsoid
- The ellipsoid on which the sensor is to be projected.ellipsoidToSensorTransformation
- The transformation from the reference frame of the ellipsoid to the reference frame of the sensor.projectionOptions
- The options controlling how the sensor is projected, or null
to use defaults.