Page
Library
Module
Module type
Parameter
Class
Class type
Source
Archimedes.CoordinateSystems of coordinates (inhomogeneous homotheties) relative to other coordinate systems with automatic updates. The automatic update refers to the fact that, if a coordinate system is upated, all coordinate systems which depend on it (possibly through several intermediate coordinate systems), they will use the updated version.
Current transformation matrix of the backend (to be able to restore it with Coordinate.restore.
After a call to use b c, all backend operations will be performed in the coordinates c. It returns the current coordinate system so one can restore it with Coordinate.restore.
restore b c restore the coordinate transformation matrix ctm for the backend b.
val to_parent : t -> x:float -> y:float -> float * floatto_parent coord x y returns the location of the point (x,y) in parent's coordinates.
val from_parent : t -> x:float -> y:float -> float * floatfrom_child coord x y returns the location of the point (x,y) from parent's coordinates.
val to_device : t -> x:float -> y:float -> float * floatto_device coord x y returns the location of the point (x,y) in device coordinates.
val to_device_distance : t -> dx:float -> dy:float -> float * floatto_device coord dx dy returns the distance (dx,dy) in device coordinates (i.e. the translation in coord is ignored).
val to_coord : t -> x:float -> y:float -> float * floatto_coord coord x y converts the (device) point (x,y) into the corresponding point, expressed in coord coordinates.
val to_coord_distance : t -> dx:float -> dy:float -> float * floatto_coord coord x y converts the (device) distance (dx,dy) into the corresponding distance, expressed in coord coordinates.
val make_root : Matrix.Homothety.t -> tmake_root m make a system of coordinates which, when used, amounts to use m. This coordinate system depends on no other so will never be updated. It can be modified however (the matrix m is copied so no modification will affect m).
make_identity coord defines a new system of coordinates that initially consist in the identity transformation to coord.
make_translate coord x y defines a new coordinate system that consists in moving the origin of coord to the point (x,y) (understood as coordinates in the system coord). If coord is modified, the new system will be updated as well.
make_scale coord x y defines a new coordinate system that consists in dilating axis X and Y of coord by a factor of x and y respectively. If coord is modified, the new system will be updated as well.
val make_from_transform : t -> Matrix.Homothety.t -> tmake_from_transform coord tm defines a new coordinate system that consists first in applying tm and then the tranformation in coord. In other words, tm is the transformation from the desired coordinate system to coord. If coord is modified, the new system will be updated as well.
val translate : t -> x:float -> y:float -> unittranslate coord x y modifies the coordinate system coord translating its origin to the point (x,y) (understood as coordinates in the system coord).
val scale : t -> x:float -> y:float -> unitscale coord x y modifies the coordinate system coord dilating its axis X and Y by a factor of x and y respectively.
transform coord tm modifies the coordinate system coord changing the transformation matrix to its parent (the one it was created from) to tm.
monitor coord creates a new monitor for changes to coord (initially not set).
val reset : monitor -> unitreset m reset the monitor. See Coordinate.changed.
val changed : monitor -> boolchanged m tell whether the coordinate system m is attached to was updated (possibly because of one of the coordinate systems it (transitively) depends on was mofidied) since the last reset.