29 lines
743 B
Plaintext
29 lines
743 B
Plaintext
@startuml
|
|
title Конвейер координат: Local -> World -> Canvas -> Buffer
|
|
|
|
skinparam rectangle {
|
|
RoundCorner 10
|
|
}
|
|
|
|
rectangle "Local coords\n(object space)" as L
|
|
rectangle "World coords\n(document space)" as W
|
|
rectangle "Canvas coords\n(scaled document)" as C
|
|
rectangle "Buffer coords\n(visible rect origin)" as B
|
|
|
|
L --> W : localToWorld()\nrotate + scale + translate
|
|
W --> C : world * scale_x/scale_y
|
|
C --> B : subtract visible_rect.(x,y)
|
|
|
|
B --> C : + visible_rect.(x,y)
|
|
C --> W : divide by scale_x/scale_y
|
|
W --> L : worldToLocal()\ntranslate^-1 + rotate^-1 + scale^-1
|
|
|
|
note right of B
|
|
All raster tests are done
|
|
in buffer coords (integer pixels).
|
|
Shape analytics often done
|
|
in local coords after inverse map.
|
|
end note
|
|
|
|
@enduml
|