Various facilities for dealing with vectors, vector spaces and coordinate axies generically.
- class HasSpace x where
- type Point x :: *
- data AxisX = AxisX
- data AxisY = AxisY
- data AxisZ = AxisZ
- data AxisW = AxisW
- class VectorAxis vector axis where
- class Project lo hi where
This class deals with any type that has a spatial dimensionallity. This includes coordinate transforms, bounding boxes, and so on.
Null instances are provided for all the vector types. (E.g.,
Point Vector3 = Vector3.)
The X-axis (first axis).
The Y-axis (second axis).
The Z-axis (third axis).
The W-axis (fourth axis).
Class for generically reading/writing vector coordinates.
Read from the specified coordinate axis.
Replace the existing value of the given coordinate axis.
This class relates two vector types having consecutive sizes.
Reduce number of dimensions by one. (Return the dropped dimension as a
Increase number of dimensions by one. (Supply value for new dimension as a
Perspective-project to N-1 dimensions. (Also return the distance from the camera as a
Inverse-perspective project into N+1 dimension. (Supply the distance from the camera as a