diff --git a/design/dem-loading-class-diagram.puml b/design/dem-loading-class-diagram.puml index 173c65c14f5e57d7f8b6ca2ffc114429f468299b..dbda0ca2981971c702757595838be5d1f54e6105 100644 --- a/design/dem-loading-class-diagram.puml +++ b/design/dem-loading-class-diagram.puml @@ -35,30 +35,45 @@ interface TileUpdater { +updateTile(φ, λ, UpdatableTile) } - UpdatableTile <-- TileUpdater : updates + TileUpdater --> UpdatableTile : updates } package raster #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 + interface Tile { + + double interpolateElevation(φ, λ) + } + UpdatableTile <|.. Tile + Tile <|-- SimpleTile + TilesCache_T_ "1" o--> "*" Tile + TilesCache_T_ "1" o--> "1" TileUpdater : triggers + TilesCache_T_ "1" o--> "1" TileFactory_T_ : triggers + } + + package intersection.duvenhage #DDEBD8 { + TileFactory_T_ <|-- MinMaxTreeTileFactory + SimpleTile <|-- MinMaxTreeTile + MinMaxTreeTileFactory -left-> MinMaxTreeTile : creates + note left + tile extended with Duvenhage + specific min/max kd-tree + end note } } - package specific.interface #ECEBD8 { + package mission.specific #C4D2C5 { + class MissionSpecificDEM #D5E0D5/E2EBE2 TileUpdater <|-- MissionSpecificDEM + note top #E2EBE2 + user provides DEM loading + by implementing TileUpdater + end note } @enduml