diff --git a/.gitignore b/.gitignore index 27d78901fa76701d9b603985f3e2fca7ac4533ef..4ec3c9ac29b8bd724c795947511a89492fdf84cc 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ bin .classpath .project .settings +target rugged-api/target rugged-core/target rugged-geotiff/target diff --git a/design/dem-loading-class-diagram.puml b/design/dem-loading-class-diagram.puml new file mode 100644 index 0000000000000000000000000000000000000000..3e0001c5620452d5505e4f8463c1557784332abb --- /dev/null +++ b/design/dem-loading-class-diagram.puml @@ -0,0 +1,64 @@ +' Copyright 2013-2014 CS Systèmes d'Information +' Licensed to CS Systèmes d'Information (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/CCC9C5 + skinparam ClassArrowColor #691616 + skinparam ClassBorderColor #691616 + skinparam NoteBackgroundColor #F3EFEB + skinparam NoteBorderColor #691616 + skinparam NoteFontColor #691616 + skinparam ClassFontSize 11 + + package fr.cs.rugged #ECEBD8 + + package api #DDEBD8 + interface UpdatableTile { + +setGeometry(φref, λref, δφ, δλ, rows, columns) + +setElevation(i, j, h) + } + interface TileUpdater { + +updateTile(φ, λ, UpdatableTile) + } + UpdatableTile <-- TileUpdater : updates + end package + + package dem #DDEBD8 + interface Tile + class SpecializedTile + interface "TileFactory<T extends Tile>" as TileFactory_T_ { + +T createTile() + } + class "TilesCache<T extends Tile>" as TilesCache_T_ { + + T getTile(φ, λ) + } + Tile --|> UpdatableTile + Tile <|-- SpecializedTile + SpecializedTile "*" <--o "1" TilesCache_T_ + TileUpdater "1" <--o "1" TilesCache_T_ : triggers + TileFactory_T_ "1" <--o "1" TilesCache_T_ : triggers + TileFactory_T_ --> SpecializedTile : creates + end package + + end package + + package specific.interface #ECEBD8 + TileUpdater <|-- MissionSpecificDEM + end package + +@enduml diff --git a/design/direct-localization-sequence-diagram.puml b/design/direct-localization-sequence-diagram.puml new file mode 100644 index 0000000000000000000000000000000000000000..1cfc5b36562214aa413044da0cab5e6e5a3d0a25 --- /dev/null +++ b/design/direct-localization-sequence-diagram.puml @@ -0,0 +1,70 @@ +' Copyright 2013-2014 CS Systèmes d'Information +' Licensed to CS Systèmes d'Information (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 #F3EFEB/CCC9C5 + skinparam SequenceParticipantBorderColor #6A584B + skinparam SequenceLifeLineBackgroundColor #CCC9C5/F3EFEB + skinparam SequenceLifeLineBorderColor #6A584B + skinparam SequenceArrowColor #6A584B + skinparam SequenceBorderColor #6A584B + skinparam SequenceFontSize 11 + + hide footbox + + participant "Application" as A + participant "Interface" as I + participant "Rugged" as R + participant "Orekit" as O + + activate A + A -> I : directLocalization(line) + activate I + I -> R : directLocalization(line) + activate R + R -> R : apply time stamping model + R -> R : apply combined transform provider at date + R -> R : loop over line pixels pₖ + activate R + R -> O : convert(line-of-sight) + activate O + O --> R : line-of-sight in Earth frame + deactivate O + R -> O : intersection(ellipsoid, line-of-sight) + activate O + O --> R : geodetic point + deactivate O + R -> R : DEM intersection + activate R + R -> I : DEM callback + I --> R : DEM raw data cell + R --> R : φₖ, λₖ, hₖ + deactivate R + R --> R : list(φₖ, λₖ, hₖ) + deactivate R + R --> I : list(φₖ, λₖ, hₖ) + deactivate R + I --> A : list(φₖ, λₖ, hₖ) + deactivate I + deactivate A + +@enduml diff --git a/design/geometry-at-date-sequence-diagram.puml b/design/geometry-at-date-sequence-diagram.puml new file mode 100644 index 0000000000000000000000000000000000000000..b63cf471f49697dc855a9cd167d9a1586c2ee232 --- /dev/null +++ b/design/geometry-at-date-sequence-diagram.puml @@ -0,0 +1,57 @@ +' Copyright 2013-2014 CS Systèmes d'Information +' Licensed to CS Systèmes d'Information (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 #F3EFEB/CCC9C5 + skinparam SequenceParticipantBorderColor #6A584B + skinparam SequenceLifeLineBackgroundColor #CCC9C5/F3EFEB + skinparam SequenceLifeLineBorderColor #6A584B + skinparam SequenceArrowColor #6A584B + skinparam SequenceBorderColor #6A584B + skinparam SequenceFontSize 11 + + hide footbox + + participant "Caller" as C + participant "Rugged" as R + participant "Orekit" as O + + activate C + C -> R : compute geometry at date + activate R + R -> O : interpolate(date) + activate O + O --> R : orbite/attitude + deactivate O + R -> O : getTransform(date) + activate O + O --> R : Earth to inertial transform + deactivate O + R -> O : compose transforms + activate O + O --> R : spacecraft to Earth transform + deactivate O + R --> C : spacecraft to Earth transform + deactivate R + deactivate C + +@enduml diff --git a/design/initialization-sequence-diagram.puml b/design/initialization-sequence-diagram.puml new file mode 100644 index 0000000000000000000000000000000000000000..60b238bad97fb3720e7dd1695f266881f76d07d4 --- /dev/null +++ b/design/initialization-sequence-diagram.puml @@ -0,0 +1,70 @@ +' Copyright 2013-2014 CS Systèmes d'Information +' Licensed to CS Systèmes d'Information (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 #F3EFEB/CCC9C5 + skinparam SequenceParticipantBorderColor #6A584B + skinparam SequenceLifeLineBackgroundColor #CCC9C5/F3EFEB + skinparam SequenceLifeLineBorderColor #6A584B + skinparam SequenceArrowColor #6A584B + skinparam SequenceBorderColor #6A584B + skinparam SequenceFontSize 11 + + hide footbox + + participant "Application" as A + participant "Interface" as I + participant "Rugged" as R + participant "Orekit" as O + + activate A + A -> I : init + activate I + I -> I : loadModels + I -> R : initiliaze(sensors, ephemeris) + activate R + R -> R : unfoldOpticalPath(sensors) + activate R + R -> O : composeTransforms + activate O + O --> R : sensors transforms + deactivate O + deactivate R + R -> O : createPropagator(ephemeris) + activate O + O --> R : interpolating propagator + deactivate O + R -> O : createTransformProvider(sensors transforms, propagator) + activate O + O --> R : combined TransformProvider with caching feature + deactivate O + deactivate R + I -> R : registerLineTimeStampingModel + activate R + deactivate R + I -> R : registerDEMCallback + activate R + deactivate R + deactivate I + deactivate A + +@enduml diff --git a/design/inverse-localization-sequence-diagram.puml b/design/inverse-localization-sequence-diagram.puml new file mode 100644 index 0000000000000000000000000000000000000000..c068f9961beb28e72b99649a982b31708d71d905 --- /dev/null +++ b/design/inverse-localization-sequence-diagram.puml @@ -0,0 +1,87 @@ +' Copyright 2013-2014 CS Systèmes d'Information +' Licensed to CS Systèmes d'Information (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 #F3EFEB/CCC9C5 + skinparam SequenceParticipantBorderColor #6A584B + skinparam SequenceLifeLineBackgroundColor #CCC9C5/F3EFEB + skinparam SequenceLifeLineBorderColor #6A584B + skinparam SequenceArrowColor #6A584B + skinparam SequenceBorderColor #6A584B + skinparam SequenceFontSize 11 + + hide footbox + + participant "Application" as A + participant "Interface" as I + participant "Rugged" as R + participant "Orekit" as O + participant "Math" as M + + activate A + A -> I : inverseLocalization(φ, λ) + activate I + I -> R : inverseLocalization(φ, λ) + activate R + R -> R : elevation(φ, λ) + activate R + R -> I : DEM callback + I --> R : DEM raw data cell + R --> R : h(φ, λ) + deactivate R + R -> O : convert(ellipsoid, φ, λ, h) + activate O + O --> R : P(φ, λ, h) in Earth frame + deactivate O + R -> R : createSwathOffset(P, interpolator) + activate R + R --> R : function f(t) + deactivate R + R -> M : solve f(t₀) = 0 + activate M + M --> R : evaluate f(t) + activate R + R -> R : apply combined transform provider at date + R --> M : f(t) + deactivate R + M --> R : evaluate f(t) + activate R + R -> R : apply combined transform provider at date + R --> M : f(t) + deactivate R + M --> R : evaluate f(t) + activate R + R -> R : apply combined transform provider at date + R --> M : f(t) + deactivate R + M --> R : t₀ + deactivate M + R -> R : apply combined transform provider at date + R -> R : apply inverse time stamping model + R -> R : locate pixel in line for solved geometry + R --> I : pixel coordinates + deactivate R + I --> A : pixel coordinates + deactivate I + deactivate A + +@enduml diff --git a/design/rugged-design.odt b/design/rugged-design.odt new file mode 100644 index 0000000000000000000000000000000000000000..5eb86e94c5bcc23ce0151eab286a49f4b946a8ef Binary files /dev/null and b/design/rugged-design.odt differ diff --git a/pom.xml b/pom.xml index b08887e7a7b41e22d2c1718dceeea7583dbcea3f..02bbf2ad9158359899ea45d50d6055ffb11588cc 100644 --- a/pom.xml +++ b/pom.xml @@ -121,6 +121,39 @@ </execution> </executions> </plugin> + <plugin> + <groupId>com.github.jeluard</groupId> + <artifactId>maven-plantuml-plugin</artifactId> + <version>7940</version> + <configuration> + <sourceFiles> + <directory>${basedir}</directory> + <includes> + <include> + 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>7986</version> + </dependency> + </dependencies> + </plugin> </plugins> </build> @@ -205,7 +238,7 @@ <artifactId>maven-javadoc-plugin</artifactId> <version>2.8</version> <configuration> - <overview>${basedir}/src/main/java/org/orekit/strata/overview.html</overview> + <overview>${basedir}/src/main/java/org/orekit/rugged/overview.html</overview> <links> <link>http://download.oracle.com/javase/1.6.0/docs/api/</link> <link>http://commons.apache.org/math/apidocs/</link>