Idris2Doc : Data.NumIdr.Transform.Transform

Data.NumIdr.Transform.Transform

(source)

Definitions

TransType : Type
  A transform type encodes the properties of a transform. There are 8 transform
types, and together with the coersion relation `(:<)` they form a semilattice.

Totality: total
Visibility: export
TTrivial : TransType
Totality: total
Visibility: public export
TTranslation : TransType
Totality: total
Visibility: public export
TRotation : TransType
Totality: total
Visibility: public export
TRigid : TransType
Totality: total
Visibility: public export
TOrthonormal : TransType
Totality: total
Visibility: public export
TLinear : TransType
Totality: total
Visibility: public export
TIsometry : TransType
Totality: total
Visibility: public export
TAffine : TransType
Totality: total
Visibility: public export
(:<) : TransType->TransType->Bool
  Coersion relation for transform types.
`a :< b` is `True` if and only if any transform of type `a` can be cast into
a transform of type `b`.

Totality: total
Visibility: public export
Fixity Declaration: infixl operator, level 7
transMult : TransType->TransType->TransType
  Return the type of transform resulting from multiplying transforms of
the two input types.

Totality: total
Visibility: public export
linearizeType : TransType->TransType
  Return the linearized transform type, i.e. the transform type resulting
from removing the translation component of the original transform.

Totality: total
Visibility: public export
delinearizeType : TransType->TransType
  Return the delinearized transform type, i.e. the transform type resulting
from adding a translation to the original transform.

Totality: total
Visibility: public export
dataTransform : TransType->Nat->Type->Type
  A transform is a wrapper for a homogeneous matrix subject to certain
restrictions, such as a rotation, an isometry, or a rigid transform.
The restriction on the transform is encoded by the transform's *type*.

Transforms have special behavior over matrices when it comes to multiplication.
When a transform is applied to a vector, only the linear part of the transform
is applied, as if `linearize` were called on the transform before the operation.

In order for non-linear transformations to be used, the transform should be
applied to the special wrapper type `Point`. This separates the concepts of
point and vector, which is often useful when working with affine maps.

Totality: total
Visibility: export
Constructor: 
MkTrans : (ty : TransType) ->HMatrix'na->Transformtyna

Hints:
So (t1:<t2) =>Castab=>Cast (Transformt1na) (Transformt2nb)
Numa=>Mult (Transformtyna) (Pointna) (Pointna)
Numa=>Mult (Transformtyna) (Vectorna) (Vectorna)
Numa=>Mult (Transformt1na) (Transformt2na) (Transform (transMultt1t2) na)
FieldCmpa=>MultGroup (Transformtyna)
Numa=>MultMonoid (Transformtyna)
unsafeMkTrans : HMatrix'na->Transformtyna
Totality: total
Visibility: export
getHMatrix : Transformtyna->HMatrix'na
  Unwrap the inner homogeneous matrix from a transform.

Totality: total
Visibility: export
getMatrix : Transformtyna->Matrix'na
  Unwrap the inner matrix from a transform, ignoring the translation component
if one exists.

Totality: total
Visibility: export
convertRep : (rep : Rep) ->RepConstraintrepa=>Transformtyna->Transformtyna
Totality: total
Visibility: export
linearize : Numa=>Transformtyna->Transform (linearizeTypety) na
  Linearize a transform by removing its translation component.
If the transform is already linear, then this function does nothing.

Totality: total
Visibility: export
setTranslation : Numa=>Vectorna->Transformtyna->Transform (delinearizeTypety) na
  Set the translation component of a transform.

`setTranslation v tr == translate v *. linearize tr`

If `tr` is linear:
`setTranslation v tr == translate v *. tr`

Totality: total
Visibility: export
applyInv : FieldCmpa=>Transformtyna->Vectorna->Vectorna
Totality: total
Visibility: export
applyInv : FieldCmpa=>Transformtyna->Pointna->Pointna
Totality: total
Visibility: export