| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Imj.Geo.Continuous
Contents
- data Vec2 a = Vec2 {}
- pos2vec :: Coords Pos -> Vec2 Pos
- vec2pos :: Vec2 Pos -> Coords Pos
- speed2vec :: Coords Vel -> Vec2 Vel
- vec2speed :: Vec2 Vel -> Coords Vel
- translatedFullCircle :: Vec2 Pos -> Float -> Float -> Int -> [Vec2 Pos]
- translatedFullCircleFromQuarterArc :: Vec2 Pos -> Float -> Float -> Int -> [Vec2 Pos]
- parabola :: Vec2 Pos -> Vec2 Vel -> Frame -> Vec2 Pos
- polyExtremities :: Vec2 Pos -> Float -> Float -> Int -> [Vec2 Pos]
- sumVec2d :: Vec2 a -> Vec2 a -> Vec2 a
- scalarProd :: Float -> Vec2 a -> Vec2 a
- rotateByQuarters :: Vec2 Pos -> [Vec2 Pos]
- data Pos
- data Vel
- data Acc
Continuous coordinates
Conversion to / from discrete coordinates
Discrete positions are converted to continuous positions by
placing them at the "pixel center", ie by applying an offset of (0.5, 0.5) in
pos2vec.
Then, during the inverse transformation - in vec2pos, coordinates are just
floored.
Discrete speeds are converted with speed2vec. The half-pixel convention is not
applied for speeds. The inverse conversion is vec2speed.
Sampled continuous geometry
Circle
Arguments
| :: Vec2 Pos | Center |
| -> Float | Radius |
| -> Float | The angle corresponding to the first sampled point |
| -> Int | The total number of sampled points |
| -> [Vec2 Pos] |
Samples a circle.
Parabola
parabola :: Vec2 Pos -> Vec2 Vel -> Frame -> Vec2 Pos Source #
Using equation [2] in "Constant linear acceleration in any direction":
\[ \vec r = \vec r_0 + \vec v_0*t + {1 \over 2}* \vec a*t^2 \]
\[ where \]
\[ \vec r = current\;position \]
\[ \vec r_0 = initial\;position \]
\[ \vec v_0 = initial\;velocity \]
\[ \vec a = gravity\;force \]
\[ t = time \]
Polygon extremities
Arguments
| :: Vec2 Pos | Center |
| -> Float | Radius |
| -> Float | Rotation angle |
| -> Int | Number of sides of the polygon. |
| -> [Vec2 Pos] |
Returns the extremities of a polygon. Note that it is equal to translatedFullCircle
Vec2 utilities
rotateByQuarters :: Vec2 Pos -> [Vec2 Pos] Source #
Creates a list of 4 Vec2 from a single one by rotating it successively by pi/2.
Reexports
Phantom type : position
Instances
| DiscreteDistance (Coords Pos) Source # | Using bresenham 2d line algorithm. |
| DiscreteInterpolation (Coords Pos) Source # | Using bresenham 2d line algorithm. |