wumpus-basic-0.16.0: Basic objects and system code built on Wumpus-Core.

PortabilityGHC
Stabilityhighly unstable
MaintainerStephen Tetley <stephen.tetley@gmail.com>

Wumpus.Basic.Geometry.Quadrant

Description

Quadrants and trigonometric calculations.

** - WARNING ** - in progress.

Synopsis

Documentation

quadrant :: Radian -> QuadrantSource

quadrant : ang -> Quadrant

Get the quadrant of an angle.

qiModulo :: Radian -> RadianSource

qiModulo : ang -> Radian

Modulo an angle so it lies in quadrant I (north east), i.e. modulo into the range 0..(pi/2).

rectRadialVector :: (Real u, Floating u) => u -> u -> Radian -> Vec2 uSource

rectRadialVector : half_width * half_height * ang -> Vec

Find where a radial line extended from (0,0) with the elevation ang intersects with an enclosing rectangle. The rectangle is centered at (0,0).

Internally the calculation is made in quadrant I (north east), symmetry is used to translate result to the other quadrants.

rectangleQI :: (Real u, Floating u) => u -> u -> Radian -> Vec2 uSource

rectangleQI : width * height * ang -> Vec

Find where a line from (0,0) in direction ang intersects the top or right side of a rectangle in QI (left side is the y-axis, bottom is the x-axis).

 ang must be in the @range 0 < ang <= 90 deg@.

 width and height must be positive.

diamondRadialVector :: (Real u, Floating u) => u -> u -> Radian -> Vec2 uSource

diamondRadialVector : half_width * half_height * ang -> Vec

Find where a radial line extended from (0,0) with the elevation ang intersects with an enclosing diamond. The diamond is centered at (0,0).

Internally the calculation is made in quadrant I (north east), symmetry is used to translate result to the other quadrants.

triangleRadialVector :: (Real u, Floating u) => u -> u -> u -> Radian -> Vec2 uSource

triangleRadialVector : half_base_width * height_minor * height_minor * ang -> Vec

Find where a radial line extended from (0,0) with the elevation ang intersects with an enclosing triangle. The triangle has the centroid at (0,0), so solutions in quadrants I and II are intersections with a simple line. Intersections in quadrants III and IV can intersect either the respective side or the base.

triangleQI :: (Real u, Floating u) => u -> u -> Radian -> Vec2 uSource

triangleQI : width * height * ang -> Vec

Find where a line from (0,0) with elevation ang intersects the hypotenuse a right triangle in QI (the legs of the triangle take the x and y-axes).

 ang must be in the @range 0 < ang <= 90@.

 width and height must be positive.

rightTrapezoidQI :: (Real u, Floating u) => u -> u -> Radian -> Radian -> Vec2 uSource

rightTrapezoidQI : top_width * height * top_right_ang -> Vec

Find where a line from (0,0) with elevation ang intersects the either the lines A_B or B_D in a right trapezoid in QI.

The right trapezoid has a variable right side. Left side is the y-axis (C_A), bottom side is the x-axis (C_D), top side is parallel to the x-axis (A_B).

  A   B
  -----
  |    \
  |     \     
  -------
  C      D
  A      B
  -------
  |     /
  |    /     
  -----
  C   D
 ang must be in the range 0 < ang <= 90.

 top_width and height must be positive.

rightTrapeziumBaseWidth :: Fractional u => u -> u -> Radian -> uSource

rightTrapeziumBaseWidth : top_width * height * top_right_ang -> Length

Find the length of the line C_D:

  A   B
  -----
  |    \
  |     \     
  -------
  C      D
  A      B
  -------
  |     /
  |    /     
  -----
  C   D