public final class SensorModel extends Object implements PVCoordinatesProvider
SensorProperty
,
Serialized FormThis class is a model for a generic sensor of the assembly : it uses a SensorProperty object. It provides computations using the tree of frames and some measures are available.
Constructor and Description |
---|
SensorModel(Assembly assembly,
String partName)
Constructor for a sensor model.
|
Modifier and Type | Method and Description |
---|---|
void |
addMaskingCelestialBody(BodyShape body)
Adds a celestial body shape to consider in maskings.
|
void |
addOwnMaskingParts(String[] partsNames)
Enables the masking by the considered spacecraft's own parts, by giving the names
of the parts that can cause maskings.
|
void |
addSecondaryMaskingSpacecraft(SecondarySpacecraft spacecraft,
String[] partsNames)
Enables the masking by a secondary spacecraft's parts, by giving the names
of the parts that can cause maskings.
|
double |
celestialBodiesMaskingDistance(AbsoluteDate spacecraftDate,
AbsoluteDate targetDate,
AbstractDetector.PropagationDelayType propagationDelayType,
VisibilityFromStationDetector.LinkType linkType)
Computes the minimal euclidian distance to the celestial body shapes.
|
Assembly |
getAssembly() |
int |
getInhibitionFieldsNumber() |
PVCoordinatesProvider |
getInhibitionTarget(int inhibitionFieldNumber)
Returns inhibition field number #i.
|
double |
getInhibitionTargetAngularRadius(AbsoluteDate inhibitionDate,
AbsoluteDate sensorDate,
int inhibitionFieldNumber,
AbstractDetector.PropagationDelayType propagationDelayType)
Computes the angular radius from the sensor of the main target at a date.
|
double |
getInhibitTargetCenterToFieldAngle(AbsoluteDate date,
int inhibitionFieldNumber)
Computes the angular distance of the CENTER of an inhibition target to the border
of the associated inhibition field
at a date.
|
PVCoordinatesProvider |
getMainTarget()
Returns the main target.
|
double |
getMainTargetAngularRadius(AbsoluteDate targetDate)
Computes the angular radius from the sensor of the main target at a date.
|
PVCoordinatesProvider |
getMaskingBody()
Returns the last masking body.
|
String |
getMaskingBodyName() |
PVCoordinatesProvider |
getMaskingSpacecraft()
Returns the last masking spacecraft.
|
String |
getMaskingSpacecraftName() |
String |
getMaskingSpacecraftPartName() |
Frame |
getNativeFrame(AbsoluteDate date,
Frame frame)
Get the native frame, i.e.
|
Vector3D |
getNormalisedTargetVectorInSensorFrame(AbsoluteDate date)
Computes the target vector at a date in the sensor's frame.
|
PVCoordinates |
getPVCoordinates(AbsoluteDate date,
Frame frame)
Get the
PVCoordinates of the sensor part in the selected frame. |
Vector3D[] |
getReferenceAxis(Frame frame,
AbsoluteDate date)
Computes the reference axis of the sensor in a given frame at a date
|
Vector3D |
getSightAxis(Frame frame,
AbsoluteDate date)
Computes the sight axis of the sensor in a given frame at a date
|
double |
getTargetCenterFOVAngle(AbsoluteDate targetDate)
Computes the angular distance of the CENTER of the main target to the border of the main field
of view at a date.
|
double |
getTargetCenterFOVAngle(AbsoluteDate targetDate,
AbsoluteDate sensorDate)
Computes the angular distance of the CENTER of the main target to the border of the main field of view at
sensor's reception date.
|
double[] |
getTargetDihedralAngles(AbsoluteDate date)
Computes the dihedral angles of the target at a date in the sensor's frame.
|
double |
getTargetRefAxisAngle(AbsoluteDate date,
int axisNumber) |
double |
getTargetRefAxisElevation(AbsoluteDate date,
int axisNumber) |
double |
getTargetSightAxisAngle(AbsoluteDate date) |
double |
getTargetSightAxisElevation(AbsoluteDate date) |
Vector3D |
getTargetVectorInSensorFrame(AbsoluteDate targetDate)
Computes the target vector at a date in the sensor's frame.
|
Vector3D |
getTargetVectorInSensorFrame(AbsoluteDate targetDate,
AbsoluteDate sensorDate)
Computes the target vector in the sensor's frame.
|
boolean |
isMainTargetInField(AbsoluteDate date)
Checks if the main target at least partially is in the field of view at a date
|
boolean |
noInhibition(AbsoluteDate date)
Checks if at least an inhibition target is at least partially in its associated
inhibition field at a date
|
void |
resetProperty()
Resets the sensor property features.
|
void |
setEpsilonSignalPropagation(double epsilon)
Set the epsilon for signal propagation used in
#spacecraftsMaskingDistance(AbsoluteDate, PropagationDelayType, LinkType)) and
#celestialBodiesMaskingDistance(AbsoluteDate) methods. |
void |
setMainTarget(PVCoordinatesProvider target,
ApparentRadiusProvider radius)
Sets the main target of the sensor property.
|
double |
spacecraftsMaskingDistance(AbsoluteDate spacecraftDate,
AbsoluteDate targetDate,
AbstractDetector.PropagationDelayType propagationDelayType,
VisibilityFromStationDetector.LinkType linkType)
Computes the minimal euclidian distance to the spacecraft's shapes (GEOMERTY properties).
|
boolean |
visibilityOk(AbsoluteDate date)
Checks if the main target is in the field of view and no inhibition target in its inhibition field
at a given date.
|
public void resetProperty()
public boolean isMainTargetInField(AbsoluteDate date) throws PatriusException
date
- the date of the computationPatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public boolean noInhibition(AbsoluteDate date) throws PatriusException
date
- the date of the computationPatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public boolean visibilityOk(AbsoluteDate date) throws PatriusException
date
- the date of the computationPatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public double getTargetCenterFOVAngle(AbsoluteDate targetDate) throws PatriusException
targetDate
- the target date of the computation (important in case of PropagationDelayType.LIGHT_SPEED!)PatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public double getTargetCenterFOVAngle(AbsoluteDate targetDate, AbsoluteDate sensorDate) throws PatriusException
targetDate
- target's datesensorDate
- sensor's datePatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public double getInhibitTargetCenterToFieldAngle(AbsoluteDate date, int inhibitionFieldNumber) throws PatriusException
date
- the date of the computationinhibitionFieldNumber
- number of the inhibition field to consider (first is 1)PatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public Vector3D getSightAxis(Frame frame, AbsoluteDate date) throws PatriusException
frame
- the frame of expressiondate
- the date of the computationPatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public Vector3D[] getReferenceAxis(Frame frame, AbsoluteDate date) throws PatriusException
frame
- the frame of expressiondate
- the date of the computationPatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public Vector3D getTargetVectorInSensorFrame(AbsoluteDate targetDate) throws PatriusException
targetDate
- the target computation datePatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public Vector3D getTargetVectorInSensorFrame(AbsoluteDate targetDate, AbsoluteDate sensorDate) throws PatriusException
targetDate
- the target datesensorDate
- the sensor datePatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public Vector3D getNormalisedTargetVectorInSensorFrame(AbsoluteDate date) throws PatriusException
date
- the computation datePatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public double[] getTargetDihedralAngles(AbsoluteDate date) throws PatriusException
date
- the computation datePatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public double getTargetSightAxisAngle(AbsoluteDate date) throws PatriusException
date
- the date of computationPatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public double getTargetRefAxisAngle(AbsoluteDate date, int axisNumber) throws PatriusException
date
- the date of computationaxisNumber
- the number of the reference axis for this computation (first is 1)PatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public double getTargetSightAxisElevation(AbsoluteDate date) throws PatriusException
date
- the date of computationPatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public double getTargetRefAxisElevation(AbsoluteDate date, int axisNumber) throws PatriusException
date
- the date of computationaxisNumber
- the number of the reference axis for this computation (first is 1)PatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public Assembly getAssembly()
public int getInhibitionFieldsNumber()
public void setMainTarget(PVCoordinatesProvider target, ApparentRadiusProvider radius)
target
- the new main target centerradius
- the target's radiuspublic double getMainTargetAngularRadius(AbsoluteDate targetDate) throws PatriusException
targetDate
- the target date of the computation (important in case of PropagationDelayType.LIGHT_SPEED!)PatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public double getInhibitionTargetAngularRadius(AbsoluteDate inhibitionDate, AbsoluteDate sensorDate, int inhibitionFieldNumber, AbstractDetector.PropagationDelayType propagationDelayType) throws PatriusException
inhibitionDate
- the date at which the signal passes at the inhibition targetsensorDate
- the date at which the sensor receives the signalinhibitionFieldNumber
- number of the inhibition field to consider (first is 1)propagationDelayType
- propagation delay typePatriusException
- if some frame transformation problem occurs
(if the assembly is not linked to the tree of frame in witch the target is defined)public PVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame) throws PatriusException
PVCoordinates
of the sensor part in the selected frame.getPVCoordinates
in interface PVCoordinatesProvider
date
- current dateframe
- the frame where to define the positionPatriusException
- if position cannot be computed in given frame : occurs
if the assembly is not correctly linked to the main tree of frames.public Frame getNativeFrame(AbsoluteDate date, Frame frame) throws PatriusException
getNativeFrame
in interface PVCoordinatesProvider
date
- a dateframe
- a framePatriusException
- thrown if native frame is undefined or unknownpublic double spacecraftsMaskingDistance(AbsoluteDate spacecraftDate, AbsoluteDate targetDate, AbstractDetector.PropagationDelayType propagationDelayType, VisibilityFromStationDetector.LinkType linkType) throws PatriusException
spacecraftDate
- spacecraft datetargetDate
- the current target date (currently unused)propagationDelayType
- propagation delay typelinkType
- link type (uplink or downlink)PatriusException
- if a problem occurs in frames transformationspublic double celestialBodiesMaskingDistance(AbsoluteDate spacecraftDate, AbsoluteDate targetDate, AbstractDetector.PropagationDelayType propagationDelayType, VisibilityFromStationDetector.LinkType linkType) throws PatriusException
spacecraftDate
- spacecraft datetargetDate
- the current target date (currently unused)propagationDelayType
- propagation delay typelinkType
- link type (uplink or downlink)PatriusException
- if a problem occurs in frames transformationspublic String getMaskingSpacecraftName()
public String getMaskingSpacecraftPartName()
public String getMaskingBodyName()
public PVCoordinatesProvider getMaskingSpacecraft()
public PVCoordinatesProvider getMaskingBody()
public void addOwnMaskingParts(String[] partsNames)
partsNames
- the names of the considered partspublic void addSecondaryMaskingSpacecraft(SecondarySpacecraft spacecraft, String[] partsNames)
spacecraft
- the secondary masking spacecraftpartsNames
- partsNames the names of the considered partspublic void addMaskingCelestialBody(BodyShape body)
body
- the celestial body shape to considerpublic PVCoordinatesProvider getMainTarget()
public PVCoordinatesProvider getInhibitionTarget(int inhibitionFieldNumber)
inhibitionFieldNumber
- number of the inhibition field to consider (first is 1)public void setEpsilonSignalPropagation(double epsilon)
#spacecraftsMaskingDistance(AbsoluteDate, PropagationDelayType, LinkType))
and
#celestialBodiesMaskingDistance(AbsoluteDate)
methods.
This epsilon (in s) directly reflect the accuracy of signal propagation (1s of accuracy = 3E8m of accuracy on
distance between emitter and receiver)epsilon
- epsilon for signal propagationCopyright © 2023 CNES. All rights reserved.