CommonPhysicalProperties.java
/* Copyright 2002-2024 CS GROUP
* Licensed to CS GROUP (CS) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* CS licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.orekit.files.ccsds.ndm;
import org.hipparchus.complex.Quaternion;
import org.orekit.files.ccsds.definitions.FrameFacade;
import org.orekit.files.ccsds.definitions.OrbitRelativeFrame;
import org.orekit.files.ccsds.ndm.cdm.AdditionalParameters;
import org.orekit.files.ccsds.ndm.odm.ocm.OrbitPhysicalProperties;
import org.orekit.files.ccsds.section.CommentsContainer;
import org.orekit.time.AbsoluteDate;
/** Container for common physical properties for both {@link OrbitPhysicalProperties} and {@link AdditionalParameters}.
*
* @author Maxime Journot
* @since 11.3
*/
public class CommonPhysicalProperties extends CommentsContainer {
/** Optimally Enclosing Box parent reference frame. */
private FrameFacade oebParentFrame;
/** Optimally Enclosing Box parent reference frame epoch. */
private AbsoluteDate oebParentFrameEpoch;
/** Quaternion defining Optimally Enclosing Box. */
private final double[] oebQ;
/** Maximum physical dimension of Optimally Enclosing Box. */
private double oebMax;
/** Intermediate physical dimension of Optimally Enclosing Box. */
private double oebIntermediate;
/** Minimum physical dimension of Optimally Enclosing Box. */
private double oebMin;
/** Cross-sectional area of Optimally Enclosing Box when viewed along the maximum OEB direction. */
private double oebAreaAlongMax;
/** Cross-sectional area of Optimally Enclosing Box when viewed along the intermediate OEB direction. */
private double oebAreaAlongIntermediate;
/** Cross-sectional area of Optimally Enclosing Box when viewed along the minimum OEB direction. */
private double oebAreaAlongMin;
/** Typical (50th percentile) radar cross-section. */
private double rcs;
/** Minimum radar cross-section. */
private double minRcs;
/** Maximum radar cross-section. */
private double maxRcs;
/** Typical (50th percentile) visual magnitude. */
private double vmAbsolute;
/** Minimum apparent visual magnitude. */
private double vmApparentMin;
/** Typical (50th percentile) apparent visual magnitude. */
private double vmApparent;
/** Maximum apparent visual magnitude. */
private double vmApparentMax;
/** Typical (50th percentile) coefficient of reflectivity. */
private double reflectance;
/** Simple constructor.
*/
public CommonPhysicalProperties() {
oebParentFrame = new FrameFacade(null, null, OrbitRelativeFrame.RIC, null,
OrbitRelativeFrame.RIC.name());
oebParentFrameEpoch = AbsoluteDate.ARBITRARY_EPOCH;
oebQ = new double[4];
oebMax = Double.NaN;
oebIntermediate = Double.NaN;
oebMin = Double.NaN;
oebAreaAlongMax = Double.NaN;
oebAreaAlongIntermediate = Double.NaN;
oebAreaAlongMin = Double.NaN;
rcs = Double.NaN;
minRcs = Double.NaN;
maxRcs = Double.NaN;
vmAbsolute = Double.NaN;
vmApparentMin = Double.NaN;
vmApparent = Double.NaN;
vmApparentMax = Double.NaN;
reflectance = Double.NaN;
}
/** {@inheritDoc} */
@Override
public void validate(final double version) {
super.validate(version);
}
/** Get the Optimally Enclosing Box parent reference frame.
* @return Optimally Enclosing Box parent reference frame
*/
public FrameFacade getOebParentFrame() {
return oebParentFrame;
}
/** Set the Optimally Enclosing Box parent reference frame.
* @param oebParentFrame Optimally Enclosing Box parent reference frame
*/
public void setOebParentFrame(final FrameFacade oebParentFrame) {
refuseFurtherComments();
this.oebParentFrame = oebParentFrame;
}
/** Get the Optimally Enclosing Box parent reference frame epoch.
* @return Optimally Enclosing Box parent reference frame epoch
*/
public AbsoluteDate getOebParentFrameEpoch() {
return oebParentFrameEpoch;
}
/** Set the Optimally Enclosing Box parent reference frame epoch.
* @param oebParentFrameEpoch Optimally Enclosing Box parent reference frame epoch
*/
public void setOebParentFrameEpoch(final AbsoluteDate oebParentFrameEpoch) {
refuseFurtherComments();
this.oebParentFrameEpoch = oebParentFrameEpoch;
}
/** Get the quaternion defining Optimally Enclosing Box.
* @return quaternion defining Optimally Enclosing Box
*/
public Quaternion getOebQ() {
return new Quaternion(oebQ[0], oebQ[1], oebQ[2], oebQ[3]);
}
/** set the component of quaternion defining Optimally Enclosing Box.
* @param i index of the component
* @param qI component of quaternion defining Optimally Enclosing Box
*/
public void setOebQ(final int i, final double qI) {
refuseFurtherComments();
oebQ[i] = qI;
}
/** Get the maximum physical dimension of the OEB.
* @return maximum physical dimension of the OEB.
*/
public double getOebMax() {
return oebMax;
}
/** Set the maximum physical dimension of the OEB.
* @param oebMax maximum physical dimension of the OEB.
*/
public void setOebMax(final double oebMax) {
refuseFurtherComments();
this.oebMax = oebMax;
}
/** Get the intermediate physical dimension of the OEB.
* @return intermediate physical dimension of the OEB.
*/
public double getOebIntermediate() {
return oebIntermediate;
}
/** Set the intermediate physical dimension of the OEB.
* @param oebIntermediate intermediate physical dimension of the OEB.
*/
public void setOebIntermediate(final double oebIntermediate) {
refuseFurtherComments();
this.oebIntermediate = oebIntermediate;
}
/** Get the minimum physical dimension of the OEB.
* @return dimensions the minimum physical dimension of the OEB.
*/
public double getOebMin() {
return oebMin;
}
/** Set the minimum physical dimension of the OEB.
* @param oebMin the minimum physical dimension of the OEB.
*/
public void setOebMin(final double oebMin) {
refuseFurtherComments();
this.oebMin = oebMin;
}
/** Get the cross-sectional area of Optimally Enclosing Box when viewed along the maximum OEB direction.
* @return cross-sectional area of Optimally Enclosing Box when viewed along the maximum OEB direction.
*/
public double getOebAreaAlongMax() {
return oebAreaAlongMax;
}
/** Set the cross-sectional area of Optimally Enclosing Box when viewed along the maximum OEB direction.
* @param oebAreaAlongMax cross-sectional area of Optimally Enclosing Box when viewed along the maximum OEB direction.
*/
public void setOebAreaAlongMax(final double oebAreaAlongMax) {
refuseFurtherComments();
this.oebAreaAlongMax = oebAreaAlongMax;
}
/** Get the cross-sectional area of Optimally Enclosing Box when viewed along the intermediate OEB direction.
* @return cross-sectional area of Optimally Enclosing Box when viewed along the intermediate OEB direction.
*/
public double getOebAreaAlongIntermediate() {
return oebAreaAlongIntermediate;
}
/** Set the cross-sectional area of Optimally Enclosing Box when viewed along the intermediate OEB direction.
* @param oebAreaAlongIntermediate cross-sectional area of Optimally Enclosing Box when viewed along the intermediate OEB direction.
*/
public void setOebAreaAlongIntermediate(final double oebAreaAlongIntermediate) {
refuseFurtherComments();
this.oebAreaAlongIntermediate = oebAreaAlongIntermediate;
}
/** Get the cross-sectional area of Optimally Enclosing Box when viewed along the minimum OEB direction.
* @return cross-sectional area of Optimally Enclosing Box when viewed along the minimum OEB direction.
*/
public double getOebAreaAlongMin() {
return oebAreaAlongMin;
}
/** Set the cross-sectional area of Optimally Enclosing Box when viewed along the minimum OEB direction.
* @param oebAreaAlongMin cross-sectional area of Optimally Enclosing Box when viewed along the minimum OEB direction.
*/
public void setOebAreaAlongMin(final double oebAreaAlongMin) {
refuseFurtherComments();
this.oebAreaAlongMin = oebAreaAlongMin;
}
/** Get the typical (50th percentile) radar cross-section.
* @return typical (50th percentile) radar cross-section
*/
public double getRcs() {
return rcs;
}
/** Set the typical (50th percentile) radar cross-section.
* @param rcs typical (50th percentile) radar cross-section
*/
public void setRcs(final double rcs) {
refuseFurtherComments();
this.rcs = rcs;
}
/** Get the minimum radar cross-section.
* @return minimum radar cross-section
*/
public double getMinRcs() {
return minRcs;
}
/** Set the minimum radar cross-section.
* @param minRcs minimum radar cross-section
*/
public void setMinRcs(final double minRcs) {
refuseFurtherComments();
this.minRcs = minRcs;
}
/** Get the maximum radar cross-section.
* @return maximum radar cross-section
*/
public double getMaxRcs() {
return maxRcs;
}
/** Set the maximum radar cross-section.
* @param maxRcs maximum radar cross-section
*/
public void setMaxRcs(final double maxRcs) {
refuseFurtherComments();
this.maxRcs = maxRcs;
}
/** Get the typical (50th percentile) visual magnitude.
* @return typical (50th percentile) visual magnitude
*/
public double getVmAbsolute() {
return vmAbsolute;
}
/** Set the typical (50th percentile) visual magnitude.
* @param vmAbsolute typical (50th percentile) visual magnitude
*/
public void setVmAbsolute(final double vmAbsolute) {
refuseFurtherComments();
this.vmAbsolute = vmAbsolute;
}
/** Get the minimum apparent visual magnitude.
* @return minimum apparent visual magnitude
*/
public double getVmApparentMin() {
return vmApparentMin;
}
/** Set the minimum apparent visual magnitude.
* @param vmApparentMin minimum apparent visual magnitude
*/
public void setVmApparentMin(final double vmApparentMin) {
refuseFurtherComments();
this.vmApparentMin = vmApparentMin;
}
/** Get the typical (50th percentile) apparent visual magnitude.
* @return typical (50th percentile) apparent visual magnitude
*/
public double getVmApparent() {
return vmApparent;
}
/** Set the typical (50th percentile) apparent visual magnitude.
* @param vmApparent typical (50th percentile) apparent visual magnitude
*/
public void setVmApparent(final double vmApparent) {
refuseFurtherComments();
this.vmApparent = vmApparent;
}
/** Get the maximum apparent visual magnitude.
* @return maximum apparent visual magnitude
*/
public double getVmApparentMax() {
return vmApparentMax;
}
/** Set the maximum apparent visual magnitude.
* @param vmApparentMax maximum apparent visual magnitude
*/
public void setVmApparentMax(final double vmApparentMax) {
refuseFurtherComments();
this.vmApparentMax = vmApparentMax;
}
/** Get the typical (50th percentile) coefficient of reflectance.
* @return typical (50th percentile) coefficient of reflectance
*/
public double getReflectance() {
return reflectance;
}
/** Set the typical (50th percentile) coefficient of reflectance.
* @param reflectance typical (50th percentile) coefficient of reflectance
*/
public void setReflectance(final double reflectance) {
refuseFurtherComments();
this.reflectance = reflectance;
}
}