Epsilon : Double- Totality: total
Visibility: public export TwoPi : Double- Totality: total
Visibility: export normalize : Double -> Double Convert a floating point number to an angle
in the interval [0, 2 * pi).
Totality: total
Visibility: exportrecord Angle : Type A normalized angle in the range [0,2 * pi).
Totality: total
Visibility: public export
Constructor: A : (value : Double) -> (0 org : Double) -> {auto 0 _ : value = normalize org} -> Angle
Projections:
0 .org : Angle -> Double The original floating point number from which the angle
was created.
0 .prf : ({rec:0} : Angle) -> value {rec:0} = normalize (org {rec:0}) Proof that we did not forget the normalization step.
.value : Angle -> Double The normalized value
Hints:
Eq Angle Ord Angle Show Angle
.value : Angle -> Double The normalized value
Totality: total
Visibility: public exportvalue : Angle -> Double The normalized value
Totality: total
Visibility: public export0 .org : Angle -> Double The original floating point number from which the angle
was created.
Totality: total
Visibility: public export0 org : Angle -> Double The original floating point number from which the angle
was created.
Totality: total
Visibility: public export0 .prf : ({rec:0} : Angle) -> value {rec:0} = normalize (org {rec:0}) Proof that we did not forget the normalization step.
Totality: total
Visibility: public export0 prf : ({rec:0} : Angle) -> value {rec:0} = normalize (org {rec:0}) Proof that we did not forget the normalization step.
Totality: total
Visibility: public exportangle : Double -> Angle Convenience constructor for angles.
It is safe to invoke `A` directly, but one has to deal
with the proofing stuff.
Totality: total
Visibility: exporthalfPi : Angle- Totality: total
Visibility: export twoThirdPi : Angle- Totality: total
Visibility: export threeHalfPi : Angle- Totality: total
Visibility: export pi : Angle- Totality: total
Visibility: export zero : Angle- Totality: total
Visibility: export fullSteps : Nat -> Angle- Totality: total
Visibility: export delta : Angle -> Angle -> Angle Returns the absolute distance between two angles
Unlike `minDelta`, this just subtracts the smaller angle
from the larger one. Therefore, `delta zero halfPi = halfPi`
and `delta zero threeHalfPi = threeHalfPi`.
Totality: total
Visibility: export(+) : Angle -> Angle -> Angle Addition of two angles
Totality: total
Visibility: export
Fixity Declaration: infixl operator, level 8negate : Neg ty => ty -> ty The underlying of unary minus. `-5` desugars to `negate (fromInteger 5)`.
Totality: total
Visibility: public export
Fixity Declaration: prefix operator, level 10(-) : Angle -> Angle -> Angle Difference between two angles
Totality: total
Visibility: export
Fixity Declarations:
infixl operator, level 8
prefix operator, level 10negate : Angle -> Angle The inverse of an angle so that `x + negate x == 0`
(modulo rounding errors).
Totality: total
Visibility: export
Fixity Declaration: prefix operator, level 10(*) : Double -> Angle -> Angle Multiplication of an angle with a constant factor
Totality: total
Visibility: export
Fixity Declaration: infixl operator, level 9divide : Nat -> Angle -> Angle Divides an angle into `n` equal part.
Returns the angle unmodified in case `n` equals zero.
Totality: total
Visibility: exportminDelta : Angle -> Angle -> Angle Returns the shortest distance between two angles.
(either clockwise or counterclockwise.)
Unlike `delta`, this computes the *smaller* angle
between the two input values.
Therefore, `minDelta zero halfPi = minDelta zero threeHalfPi = halfPi`.
Totality: total
Visibility: exporttoDegree : Angle -> Double Convert and angle to centigrees
Totality: total
Visibility: exportfromDegree : Double -> Angle Convert an angle in centigrees to one in radians
Totality: total
Visibility: exportbisector : Angle -> Angle -> Angle Angle bisector counterclockwise
Totality: total
Visibility: exportclosestAngle : Angle -> List Angle -> Maybe Angle From a list of angles, returns the one closest to the given angle
Totality: total
Visibility: exportenclosingAngles : Angle -> List Angle -> Maybe (Angle, Angle) Given an angle `phi` plus a list of angles, returns from the
list two angles `a` and `b`, so that `phi` lies between `a` and `b`
with no other angle closer to `phi`.
Note: In case of this being successful, `phi` will always lie counter
clockwise of the first returned angle and the second returned
angle will lie counter-clockwise of `phi`.
Totality: total
Visibility: exportlargestBisector : List Angle -> Angle- Totality: total
Visibility: export record Arc : Type An arc of `segs` segments connecting two existing nodes.
Used for creating rings and bridges when placing molecules.
Totality: total
Visibility: public export
Constructor: MkArc : Angle -> Angle -> Double -> Double -> Arc
Projections:
.angle : Arc -> Angle Total angle of the arc
.distance : Arc -> Double Distance between the center of the arc and the middle
of a segment.
.radius : Arc -> Double Radius of the arc
.step : Arc -> Angle Angle of a single segment of the arc
Hints:
Eq Arc Show Arc
.angle : Arc -> Angle Total angle of the arc
Totality: total
Visibility: public exportangle : Arc -> Angle Total angle of the arc
Totality: total
Visibility: public export.step : Arc -> Angle Angle of a single segment of the arc
Totality: total
Visibility: public exportstep : Arc -> Angle Angle of a single segment of the arc
Totality: total
Visibility: public export.radius : Arc -> Double Radius of the arc
Totality: total
Visibility: public exportradius : Arc -> Double Radius of the arc
Totality: total
Visibility: public export.distance : Arc -> Double Distance between the center of the arc and the middle
of a segment.
Totality: total
Visibility: public exportdistance : Arc -> Double Distance between the center of the arc and the middle
of a segment.
Totality: total
Visibility: public exportngonAngle : (n : Nat) -> {auto 0 _ : LTE 3 n} -> Angle Angle at the corner of a regular n-gon
Totality: total
Visibility: exportngonRadius : Double -> (n : Nat) -> {auto 0 _ : LTE 3 n} -> Double Radius of a regular n-gon with side length `side`.
This is the distance from the center of the n-gon to one of its
corners.
Totality: total
Visibility: exportngonDistance : Double -> (n : Nat) -> {auto 0 _ : LTE 3 n} -> Double Distance from the center of a regular n-gon with side length `side`
to the middle of one of its sides.
Totality: total
Visibility: exportngon : Double -> (n : Nat) -> {auto 0 _ : LTE 3 n} -> Arc- Totality: total
Visibility: export arc : (n : Nat) -> {auto 0 _ : IsSucc n} -> Double -> Double -> Arc Computes the dimensions of an arc that connects two
existing nodes (with a distance of `d` between the nodes)
by inserting `n` additional nodes between them.
The arc is optimized in such a way that the distance between two
adjacent nodes is as close to `len` as possible.
Note: If `len` is too short, that is `(n+1) * len < d`, this returns
close to - but not exactly - a straight line. Client code is
responsible to choose `len` in such a manner, that an arc
with a reasonable minimal curvature is constructed,
for instance by setting the minimal `len`
at `(1+delta)*d / (n+1)` with `delta > 0`.
Totality: total
Visibility: export