Commit d310347b authored by Luc Maisonobe's avatar Luc Maisonobe

Updated design and documentation, with new UML diagrams.

For diagrams creation, we have switched to PlantUML, which can be
directly integrated into the maven build and eclipse and allow very
simple diagram creation and update without heavy tools.
parent bd3c53e6
......@@ -224,6 +224,39 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.jeluard</groupId>
<artifactId>maven-plantuml-plugin</artifactId>
<version>7232</version>
<configuration>
<sourceFiles>
<directory>${basedir}</directory>
<includes>
<include>
src/design/**/*.puml
</include>
</includes>
</sourceFiles>
<outputDirectory>
${basedir}/target/site/images/design
</outputDirectory>
</configuration>
<executions>
<execution>
<phase>pre-site</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>net.sourceforge.plantuml</groupId>
<artifactId>plantuml</artifactId>
<version>7707</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
......
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>OrekitDesign</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>
<?xml version="1.0" encoding="ASCII"?>
<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
<pageList>
<availablePage>
<emfPageIdentifier href="OrekitModel.notation#_uRpPoJDUEd-mnrQsxLbwPw"/>
</availablePage>
<availablePage>
<emfPageIdentifier href="OrekitModel.notation#_CVmRgJf5Ed-F0fTF1bLqfA"/>
</availablePage>
</pageList>
<sashModel currentSelection="//@sashModel/@windows.0/@children.0">
<windows>
<children xsi:type="di:TabFolder">
<children>
<emfPageIdentifier href="OrekitModel.notation#_uRpPoJDUEd-mnrQsxLbwPw"/>
</children>
<children>
<emfPageIdentifier href="OrekitModel.notation#_CVmRgJf5Ed-F0fTF1bLqfA"/>
</children>
</children>
</windows>
</sashModel>
</di:SashWindowsMngr>
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
' Copyright 2002-2012 CS Communication & Systèmes
' Licensed to CS Communication & Systèmes (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.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
package org.orekit #ECEBD8
package utils #DDEBD8
interface PVCoordinatesProvider {
+PVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame)
}
end package
package propagation #DDEBD8
interface Propagator {
+int getMode()
+void setSlaveMode()
+void setMasterMode(double h, OrekitFixedStepHandler handler)
+void setMasterMode(OrekitStepHandler handler)
+void setEphemerisMode()
+BoundedPropagator getGeneratedEphemeris()
+SpacecraftState getInitialState()
+void resetInitialState(SpacecraftState state)
+void addEventDetector(EventDetector detector)
+Collection<EventDetector> getEventsDetectors()
+void clearEventsDetectors()
+AttitudeProvider getAttitudeProvider()
+void setAttitudeProvider(AttitudeProvider attitudeProvider)
+Frame getFrame()
+SpacecraftState propagate(AbsoluteDate target)
+SpacecraftState propagate(AbsoluteDate start, AbsoluteDate target)
}
interface BoundedPropagator {
+AbsoluteDate getMinDate()
+AbsoluteDate getMaxDate()
}
Propagator <|.. BoundedPropagator
abstract class AbstractPropagator {
+PVCoordinatesProvider getPvProvider()
+SpacecraftState getInitialState()
+void addAdditionalStateProvider(AdditionalStateProvider additionalStateProvider)
}
package analytical #DDDBD8
AbstractPropagator <|-- AdapterPropagator
AbstractPropagator <|-- EcksteinHechlerPropagator
AbstractPropagator <|-- KeplerianPropagator
package tle
AbstractPropagator <|-- TLEPropagator
end package
end package
package semianalytical #DDDBD8
package dsst #DDDBC8
AbstractPropagator <|-- DSSTPropagator
end package
end package
package numerical #DDDBD8
Propagator <|-- NumericalPropagator
end package
package precomputed #DDDBD8
AbstractPropagator <|-- Ephemeris
BoundedPropagator <|.. Ephemeris
BoundedPropagator <|.. IntegratedEphemeris
NumericalPropagator o-down-> IntegratedEphemeris : creates
end package
PVCoordinatesProvider <|.down. Propagator
Propagator <|.right. AbstractPropagator
end package
@enduml
' Copyright 2002-2012 CS Communication & Systèmes
' Licensed to CS Communication & Systèmes (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.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
package org.orekit.bodies #ECEBD8
class GeodeticPoint {
+double getLatitude()
+double getLongitude()
+double getAltitude()
+Vector3D getZenith()
+Vector3D getNadir()
+Vector3D getNorth()
+Vector3D getSouth()
+Vector3D getEast()
+Vector3D getWest()
}
interface BodyShape {
+Frame getBodyFrame()
+GeodeticPoint getIntersectionPoint(Line line, Vector3D close, Frame frame, AbsoluteDate date)
+GeodeticPoint transform(Vector3D point, Frame frame, AbsoluteDate date)
+Vector3D transform(GeodeticPoint point)
}
class OneAxisEllipsoid
BodyShape <|-- OneAxisEllipsoid
BodyShape --> GeodeticPoint
end package
@enduml
' Copyright 2002-2012 CS Communication & Systèmes
' Licensed to CS Communication & Systèmes (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.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
package org.orekit #ECEBD8
package utils #DDEBD8
interface PVCoordinatesProvider {
+PVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame)
}
end package
package data #DDEBD8
interface DataLoader {
+boolean stillAcceptsData()
+void loadData(InputStream input, String name)
}
end package
package frames #DDEBD8
class Frame
end package
package bodies #DDEBD8
interface CelestialBody {
+Frame getFrame()
+Frame getInertiallyOrientedFrame()
+Frame getBodyOrientedFrame()
+String getName()
+double getGM()
}
class CelestialBodyFactory {
+CelestialBody getSolarSystemBarycenter()
+CelestialBody getSun()
+CelestialBody getMercury()
+CelestialBody getVenus()
+CelestialBody getEarthMoonBarycenter()
+CelestialBody getEarth()
+CelestialBody getMoon()
+CelestialBody getMars()
+CelestialBody getJupiter()
+CelestialBody getSaturn()
+CelestialBody getUranus()
+CelestialBody getNeptune()
+CelestialBody getPluto()
+CelestialBody getBody(String name)
}
interface CelestialBodyLoader {
+CelestialBody loadCelestialBody(String name)
}
class JPLEphemeridesLoader
interface IAUPole {
+Vector3D getPole(AbsoluteDate date)
+double getPrimeMeridianAngle(AbsoluteDate date)
}
class IAUPoleFactory {
+IAUPole getIAUPole(JPLEphemeridesLoader.EphemerisType body)
}
abstract class AbstractCelestialBody
CelestialBodyLoader ..|> DataLoader
CelestialBodyLoader <|-- JPLEphemeridesLoader
CelestialBody "*" <--o "1" CelestialBodyFactory
CelestialBodyLoader "*" <-left-o "1" CelestialBodyFactory
PVCoordinatesProvider <|.. CelestialBody
CelestialBody -up-> Frame
CelestialBody <|-- AbstractCelestialBody
IAUPoleFactory "1" *--> "*" IAUPole : creates
AbstractCelestialBody "1" *--> IAUPole
AbstractCelestialBody <-left- JPLEphemeridesLoader : creates
end package
end package
@enduml
' Copyright 2002-2012 CS Communication & Systèmes
' Licensed to CS Communication & Systèmes (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.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
package org.orekit.propagation #ECEBD8
interface Propagator {
+void addEventDetector(EventDetector detector)
+Collection<EventDetector> getEventsDetectors()
+void clearEventsDetectors()
}
package events #DDEBD8
interface EventDetector {
+void init(SpacecraftState s0, AbsoluteDate t)
+double g(SpacecraftState s)
+Action eventOccurred(SpacecraftState s, boolean increasing)
+SpacecraftState resetState(SpacecraftState oldState)
+double getThreshold()
+double getMaxCheckInterval()
+int getMaxIterationCount()
}
enum EventDetector.Action {
+STOP
+RESET_STATE
+RESET_DERIVATIVES
+CONTINUE
}
EventDetector "*" <-down- "1" Propagator : detectors
EventDetector.Action <-down- EventDetector
end package
end package
@enduml
' Copyright 2002-2012 CS Communication & Systèmes
' Licensed to CS Communication & Systèmes (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.
@startuml
skinparam svek true
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam SequenceActorBorderColor #6A584B
skinparam SequenceParticipantBackgroundColor #EDF7C8
skinparam SequenceParticipantBorderColor #6A584B
skinparam SequenceLifeLineBackgroundColor #EDF7C8
skinparam SequenceLifeLineBorderColor #6A584B
skinparam SequenceArrowColor #6A584B
skinparam SequenceBorderColor #6A584B
skinparam SequenceFontSize 11
hide footbox
box "User application" #ECEBD8
participant "Main" as U
participant "Event detector" as E
participant "Logger" as L
end box
participant Propagator
activate U
U -> Propagator : propagate
activate Propagator
Propagator -> E : init
activate E
deactivate E
Propagator -> Propagator : compute one step
activate Propagator
Propagator -> E : g
activate E
deactivate E
deactivate Propagator
Propagator -> Propagator : compute one step
activate Propagator
Propagator -> E : g
activate E
Propagator -> E : g
note right of E
trying to find the exact date
at which g sign changes
end note
Propagator -> E : g
Propagator -> E : g
Propagator -> E : eventOccurred
E -> L : log discrete event
activate L
deactivate L
E --> Propagator : action = CONTINUE
deactivate E
deactivate Propagator
Propagator --> U : final state
deactivate Propagator
deactivate U
@enduml
' Copyright 2002-2012 CS Communication & Systèmes
' Licensed to CS Communication & Systèmes (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.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
package org.orekit.frames #ECEBD8
class Transform {
+Transform IDENTITY
+Transform getInverse()
+Transform freeze()
+Vector3D transformPosition(Vector3D position)
+Vector3D transformVector(Vector3D vector)
+Line transformLine(Line line)
+PVCoordinates transformPVCoordinates(PVCoordinates pv)
+void getJacobian(double[][] jacobian)
+Vector3D getTranslation()
+Vector3D getVelocity()
+Rotation getRotation()
+Vector3D getRotationRate()
}
class Frame {
+String getName()
+boolean isPseudoInertial()
+Frame getParent()
+Transform getTransformTo(Frame destination, AbsoluteDate date)
+Frame getFrozenFrame(Frame reference, AbsoluteDate freezingDate, String frozenName)
#void updateFrame(AbsoluteDate date)
#Frame getRoot()
}
note bottom
the implementations shown here are only
a subset of available frames
end note
class FramesFactory {
+Frame getGCRF()
+Frame getICRF()
+FactoryManagedFrame getEME2000()
+FactoryManagedFrame get...()
+Frame getFrame(Predefined factoryKey)
}
enum Predefined {
+GCRF
+ICRF
+EME2000
+ITRF_2008_WITHOUT_TIDAL_EFFECTS
+ITRF_2008_WITH_TIDAL_EFFECTS
+ITRF_2005_WITHOUT_TIDAL_EFFECTS
+ITRF_...
+ITRF_EQUINOX
+TIRF_2000_WITHOUT_TIDAL_EFFECTS
+TIRF_2000_WITH_TIDAL_EFFECTS
+CIRF_2000
+VEIS_1950
+GTOD_WITHOUT_EOP_CORRECTIONS
+GTOD_WITH_EOP_CORRECTIONS
+TOD_WITHOUT_EOP_CORRECTIONS
+TOD_WITH_EOP_CORRECTIONS
+MOD_WITHOUT_EOP_CORRECTIONS
+MOD_WITH_EOP_CORRECTIONS
+TEME
}
class EME2000Frame
class ITRFFrame
class MODFrame
class LOFFrame
class TopocentricFrame
FactoryManagedFrame -down-|> Frame
FactoryManagedFrame *-down-> Predefined
FramesFactory *-right-> FactoryManagedFrame
Frame <|-- EME2000Frame
Frame <|-- ITRFFrame
Frame <|-- MODFrame
Frame <|-- LOFFrame
Frame <|-- TopocentricFrame
FramesFactory *--> Frame : predefined frames
Frame o--> Frame : parent
Frame o-up-> Transform : transform from parent
end package
@enduml
' Copyright 2002-2012 CS Communication & Systèmes
' Licensed to CS Communication & Systèmes (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.
@startuml
skinparam svek true
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam SequenceActorBorderColor #6A584B
skinparam SequenceParticipantBackgroundColor #EDF7C8
skinparam SequenceParticipantBorderColor #6A584B
skinparam SequenceLifeLineBackgroundColor #EDF7C8
skinparam SequenceLifeLineBorderColor #6A584B
skinparam SequenceArrowColor #6A584B
skinparam SequenceBorderColor #6A584B
skinparam SequenceFontSize 11
hide footbox
box "User application" #ECEBD8
participant "Main" as U
participant "Step handler" as H
participant "Display" as D
end box
participant Propagator
participant StepInterpolator
activate U
U -> Propagator : propagate
activate Propagator
Propagator -> H : init
activate H
deactivate H
Propagator -> Propagator : compute one step
activate Propagator
Propagator -> StepInterpolator : update
activate StepInterpolator
Propagator -> H : handleStep
activate H
H -> StepInterpolator : getInterpolatedStep
H -> D : display current state
activate D
deactivate D
deactivate H
deactivate StepInterpolator
deactivate Propagator
Propagator -> Propagator : compute one step
activate Propagator
Propagator -> StepInterpolator : update
activate StepInterpolator
Propagator -> H : handleStep
activate H
H -> StepInterpolator : getInterpolatedStep
H -> D : display current state
activate D
deactivate D
deactivate H
deactivate StepInterpolator
deactivate Propagator
Propagator -> U : final state
deactivate Propagator
deactivate U
@enduml
' Copyright 2002-2012 CS Communication & Systèmes
' Licensed to CS Communication & Systèmes (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.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
package org.orekit #ECEBD8
package frames #DDEBD8
class Frame
end package
package time #DDEBD8