| Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
|---|---|
| License | LGPL-2.1 |
| Maintainer | Iñaki García Etxebarria |
| Safe Haskell | None |
| Language | Haskell2010 |
GI.Graphene.Structs.Matrix
Contents
- Exported types
- Methods
- Overloaded methods
- alloc
- determinant
- equal
- equalFast
- free
- getRow
- getValue
- getXScale
- getXTranslation
- getYScale
- getYTranslation
- getZScale
- getZTranslation
- initFrom2d
- initFromFloat
- initFromMatrix
- initFromVec4
- initFrustum
- initIdentity
- initLookAt
- initOrtho
- initPerspective
- initRotate
- initScale
- initSkew
- initTranslate
- interpolate
- inverse
- is2d
- isBackfaceVisible
- isIdentity
- isSingular
- multiply
- near
- normalize
- perspective
- projectPoint
- projectRect
- projectRectBounds
- rotate
- rotateEuler
- rotateQuaternion
- rotateX
- rotateY
- rotateZ
- scale
- skewXy
- skewXz
- skewYz
- to2d
- transformBounds
- transformBox
- transformPoint
- transformPoint3d
- transformRay
- transformRect
- transformSphere
- transformVec3
- transformVec4
- translate
- transpose
- unprojectPoint3d
- untransformBounds
- untransformPoint
Description
A structure capable of holding a 4x4 matrix.
The contents of the Matrix structure are private and
should never be accessed directly.
Synopsis
- newtype Matrix = Matrix (ManagedPtr Matrix)
- newZeroMatrix :: MonadIO m => m Matrix
- noMatrix :: Maybe Matrix
- matrixAlloc :: (HasCallStack, MonadIO m) => m Matrix
- matrixDeterminant :: (HasCallStack, MonadIO m) => Matrix -> m Float
- matrixEqual :: (HasCallStack, MonadIO m) => Matrix -> Matrix -> m Bool
- matrixEqualFast :: (HasCallStack, MonadIO m) => Matrix -> Matrix -> m Bool
- matrixFree :: (HasCallStack, MonadIO m) => Matrix -> m ()
- matrixGetRow :: (HasCallStack, MonadIO m) => Matrix -> Word32 -> m Vec4
- matrixGetValue :: (HasCallStack, MonadIO m) => Matrix -> Word32 -> Word32 -> m Float
- matrixGetXScale :: (HasCallStack, MonadIO m) => Matrix -> m Float
- matrixGetXTranslation :: (HasCallStack, MonadIO m) => Matrix -> m Float
- matrixGetYScale :: (HasCallStack, MonadIO m) => Matrix -> m Float
- matrixGetYTranslation :: (HasCallStack, MonadIO m) => Matrix -> m Float
- matrixGetZScale :: (HasCallStack, MonadIO m) => Matrix -> m Float
- matrixGetZTranslation :: (HasCallStack, MonadIO m) => Matrix -> m Float
- matrixInitFrom2d :: (HasCallStack, MonadIO m) => Matrix -> Double -> Double -> Double -> Double -> Double -> Double -> m Matrix
- matrixInitFromFloat :: (HasCallStack, MonadIO m) => Matrix -> [Float] -> m Matrix
- matrixInitFromMatrix :: (HasCallStack, MonadIO m) => Matrix -> Matrix -> m Matrix
- matrixInitFromVec4 :: (HasCallStack, MonadIO m) => Matrix -> Vec4 -> Vec4 -> Vec4 -> Vec4 -> m Matrix
- matrixInitFrustum :: (HasCallStack, MonadIO m) => Matrix -> Float -> Float -> Float -> Float -> Float -> Float -> m Matrix
- matrixInitIdentity :: (HasCallStack, MonadIO m) => Matrix -> m Matrix
- matrixInitLookAt :: (HasCallStack, MonadIO m) => Matrix -> Vec3 -> Vec3 -> Vec3 -> m Matrix
- matrixInitOrtho :: (HasCallStack, MonadIO m) => Matrix -> Float -> Float -> Float -> Float -> Float -> Float -> m Matrix
- matrixInitPerspective :: (HasCallStack, MonadIO m) => Matrix -> Float -> Float -> Float -> Float -> m Matrix
- matrixInitRotate :: (HasCallStack, MonadIO m) => Matrix -> Float -> Vec3 -> m Matrix
- matrixInitScale :: (HasCallStack, MonadIO m) => Matrix -> Float -> Float -> Float -> m Matrix
- matrixInitSkew :: (HasCallStack, MonadIO m) => Matrix -> Float -> Float -> m Matrix
- matrixInitTranslate :: (HasCallStack, MonadIO m) => Matrix -> Point3D -> m Matrix
- matrixInterpolate :: (HasCallStack, MonadIO m) => Matrix -> Matrix -> Double -> m Matrix
- matrixInverse :: (HasCallStack, MonadIO m) => Matrix -> m (Bool, Matrix)
- matrixIs2d :: (HasCallStack, MonadIO m) => Matrix -> m Bool
- matrixIsBackfaceVisible :: (HasCallStack, MonadIO m) => Matrix -> m Bool
- matrixIsIdentity :: (HasCallStack, MonadIO m) => Matrix -> m Bool
- matrixIsSingular :: (HasCallStack, MonadIO m) => Matrix -> m Bool
- matrixMultiply :: (HasCallStack, MonadIO m) => Matrix -> Matrix -> m Matrix
- matrixNear :: (HasCallStack, MonadIO m) => Matrix -> Matrix -> Float -> m Bool
- matrixNormalize :: (HasCallStack, MonadIO m) => Matrix -> m Matrix
- matrixPerspective :: (HasCallStack, MonadIO m) => Matrix -> Float -> m Matrix
- matrixPrint :: (HasCallStack, MonadIO m) => Matrix -> m ()
- matrixProjectPoint :: (HasCallStack, MonadIO m) => Matrix -> Point -> m Point
- matrixProjectRect :: (HasCallStack, MonadIO m) => Matrix -> Rect -> m Quad
- matrixProjectRectBounds :: (HasCallStack, MonadIO m) => Matrix -> Rect -> m Rect
- matrixRotate :: (HasCallStack, MonadIO m) => Matrix -> Float -> Vec3 -> m ()
- matrixRotateEuler :: (HasCallStack, MonadIO m) => Matrix -> Euler -> m ()
- matrixRotateQuaternion :: (HasCallStack, MonadIO m) => Matrix -> Quaternion -> m ()
- matrixRotateX :: (HasCallStack, MonadIO m) => Matrix -> Float -> m ()
- matrixRotateY :: (HasCallStack, MonadIO m) => Matrix -> Float -> m ()
- matrixRotateZ :: (HasCallStack, MonadIO m) => Matrix -> Float -> m ()
- matrixScale :: (HasCallStack, MonadIO m) => Matrix -> Float -> Float -> Float -> m ()
- matrixSkewXy :: (HasCallStack, MonadIO m) => Matrix -> Float -> m ()
- matrixSkewXz :: (HasCallStack, MonadIO m) => Matrix -> Float -> m ()
- matrixSkewYz :: (HasCallStack, MonadIO m) => Matrix -> Float -> m ()
- matrixTo2d :: (HasCallStack, MonadIO m) => Matrix -> m (Bool, Double, Double, Double, Double, Double, Double)
- matrixTransformBounds :: (HasCallStack, MonadIO m) => Matrix -> Rect -> m Rect
- matrixTransformBox :: (HasCallStack, MonadIO m) => Matrix -> Box -> m Box
- matrixTransformPoint :: (HasCallStack, MonadIO m) => Matrix -> Point -> m Point
- matrixTransformPoint3d :: (HasCallStack, MonadIO m) => Matrix -> Point3D -> m Point3D
- matrixTransformRay :: (HasCallStack, MonadIO m) => Matrix -> Ray -> m Ray
- matrixTransformRect :: (HasCallStack, MonadIO m) => Matrix -> Rect -> m Quad
- matrixTransformSphere :: (HasCallStack, MonadIO m) => Matrix -> Sphere -> m Sphere
- matrixTransformVec3 :: (HasCallStack, MonadIO m) => Matrix -> Vec3 -> m Vec3
- matrixTransformVec4 :: (HasCallStack, MonadIO m) => Matrix -> Vec4 -> m Vec4
- matrixTranslate :: (HasCallStack, MonadIO m) => Matrix -> Point3D -> m ()
- matrixTranspose :: (HasCallStack, MonadIO m) => Matrix -> m Matrix
- matrixUnprojectPoint3d :: (HasCallStack, MonadIO m) => Matrix -> Matrix -> Point3D -> m Point3D
- matrixUntransformBounds :: (HasCallStack, MonadIO m) => Matrix -> Rect -> Rect -> m Rect
- matrixUntransformPoint :: (HasCallStack, MonadIO m) => Matrix -> Point -> Rect -> m (Bool, Point)
Exported types
Memory-managed wrapper type.
Constructors
| Matrix (ManagedPtr Matrix) |
Methods
Overloaded methods
alloc
Arguments
| :: (HasCallStack, MonadIO m) | |
| => m Matrix | Returns: the newly allocated matrix |
Allocates a new Matrix.
Since: 1.0
determinant
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Float | Returns: the value of the determinant |
Computes the determinant of the given matrix.
Since: 1.0
equal
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Matrix |
|
| -> m Bool | Returns: |
Checks whether the two given Matrix matrices are equal.
Since: 1.10
equalFast
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Matrix |
|
| -> m Bool | Returns: |
Checks whether the two given Matrix matrices are
byte-by-byte equal.
While this function is faster than matrixEqual, it
can also return false negatives, so it should be used in
conjuction with either matrixEqual or
matrixNear. For instance:
C code
if (graphene_matrix_equal_fast (a, b))
{
// matrices are definitely the same
}
else
{
if (graphene_matrix_equal (a, b))
// matrices contain the same values within an epsilon of FLT_EPSILON
else if (graphene_matrix_near (a, b, 0.0001))
// matrices contain the same values within an epsilon of 0.0001
else
// matrices are not equal
}Since: 1.10
free
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m () |
Frees the resources allocated by matrixAlloc.
Since: 1.0
getRow
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Word32 |
|
| -> m Vec4 |
Retrieves the given row vector at index_ inside a matrix.
Since: 1.0
getValue
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Word32 |
|
| -> Word32 |
|
| -> m Float | Returns: the value at the given indices |
Retrieves the value at the given row and col index.
Since: 1.0
getXScale
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Float | Returns: the value of the scaling factor |
Retrieves the scaling factor on the X axis in m.
Since: 1.0
getXTranslation
matrixGetXTranslation Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Float | Returns: the translation component |
Retrieves the translation component on the X axis from m.
Since: 1.10
getYScale
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Float | Returns: the value of the scaling factor |
Retrieves the scaling factor on the Y axis in m.
Since: 1.0
getYTranslation
matrixGetYTranslation Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Float | Returns: the translation component |
Retrieves the translation component on the Y axis from m.
Since: 1.10
getZScale
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Float | Returns: the value of the scaling factor |
Retrieves the scaling factor on the Z axis in m.
Since: 1.0
getZTranslation
matrixGetZTranslation Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Float | Returns: the translation component |
Retrieves the translation component on the Z axis from m.
Since: 1.10
initFrom2d
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Double |
|
| -> Double |
|
| -> Double |
|
| -> Double |
|
| -> Double |
|
| -> Double |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix from the values of an affine
transformation matrix.
The arguments map to the following matrix layout:
plain code
⎛ xx yx ⎞ ⎛ a b 0 ⎞ ⎜ xy yy ⎟ = ⎜ c d 0 ⎟ ⎝ x0 y0 ⎠ ⎝ tx ty 1 ⎠
This function can be used to convert between an affine matrix type
from other libraries and a Matrix.
Since: 1.0
initFromFloat
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> [Float] |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix with the given array of floating
point values.
Since: 1.0
initFromMatrix
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Matrix |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix using the values of the
given matrix.
Since: 1.0
initFromVec4
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Vec4 |
|
| -> Vec4 |
|
| -> Vec4 |
|
| -> Vec4 |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix with the given four row
vectors.
Since: 1.0
initFrustum
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> m Matrix | Returns: the initialized matrix |
initIdentity
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix with the identity matrix.
Since: 1.0
initLookAt
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Vec3 |
|
| -> Vec3 |
|
| -> Vec3 |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix so that it positions the "camera"
at the given eye coordinates towards an object at the center
coordinates. The top of the camera is aligned to the direction
of the up vector.
Since: 1.0
initOrtho
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix with an orthographic projection.
Since: 1.0
initPerspective
matrixInitPerspective Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix with a perspective projection.
Since: 1.0
initRotate
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> Vec3 |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes m to represent a rotation of angle degrees on
the axis represented by the axis vector.
Since: 1.0
initScale
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix with the given scaling factors.
Since: 1.0
initSkew
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> Float |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix with a skew transformation
with the given factors.
Since: 1.0
initTranslate
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Point3D |
|
| -> m Matrix | Returns: the initialized matrix |
Initializes a Matrix with a translation to the
given coordinates.
Since: 1.0
interpolate
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Matrix |
|
| -> Double |
|
| -> m Matrix |
Linearly interpolates the two given Matrix by
interpolating the decomposed transformations separately.
If either matrix cannot be reduced to their transformations then the interpolation cannot be performed, and this function will return an identity matrix.
Since: 1.0
inverse
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m (Bool, Matrix) | Returns: |
Inverts the given matrix.
Since: 1.0
is2d
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Bool | Returns: |
Checks whether the given Matrix is compatible with an
a 2D affine transformation matrix.
Since: 1.0
isBackfaceVisible
matrixIsBackfaceVisible Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Bool | Returns: |
Checks whether a Matrix has a visible back face.
Since: 1.0
isIdentity
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Bool | Returns: |
Checks whether the given Matrix is the identity matrix.
Since: 1.0
isSingular
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Bool | Returns: |
Checks whether a matrix is singular.
Since: 1.0
multiply
Multiplies two Matrix.
Matrix multiplication is not commutative in general; the order of the factors matters.
The product of this multiplication is (a × b)
Since: 1.0
near
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Matrix |
|
| -> Float |
|
| -> m Bool | Returns: |
Compares the two given Matrix matrices and checks
whether their values are within the given epsilon of each
other.
Since: 1.10
normalize
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Matrix |
Normalizes the given Matrix.
Since: 1.0
perspective
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> m Matrix |
Applies a perspective of depth to the matrix.
Since: 1.0
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m () |
Prints the contents of a matrix.
Since: 1.0
projectPoint
Projects a Point using the matrix m.
Since: 1.0
projectRect
Projects a Rect using the given matrix.
Since: 1.2
projectRectBounds
matrixProjectRectBounds Source #
Projects a Rect using the given matrix.
The resulting rectangle is the axis aligned bounding rectangle capable of containing fully the projected rectangle.
Since: 1.0
rotate
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> Vec3 |
|
| -> m () |
Adds a rotation transformation to m, using the given angle
and axis vector.
This is the equivalent of calling matrixInitRotate and
then multiplying the matrix m with the rotation matrix.
Since: 1.0
rotateEuler
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Euler |
|
| -> m () |
Adds a rotation transformation to m, using the given
Euler.
Since: 1.2
rotateQuaternion
matrixRotateQuaternion Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Quaternion |
|
| -> m () |
Adds a rotation transformation to m, using the given
Quaternion.
This is the equivalent of calling quaternionToMatrix and
then multiplying m with the rotation matrix.
Since: 1.2
rotateX
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> m () |
Adds a rotation transformation around the X axis to m, using
the given angle.
See also: matrixRotate
Since: 1.0
rotateY
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> m () |
Adds a rotation transformation around the Y axis to m, using
the given angle.
See also: matrixRotate
Since: 1.0
rotateZ
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> m () |
Adds a rotation transformation around the Z axis to m, using
the given angle.
See also: matrixRotate
Since: 1.0
scale
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> Float |
|
| -> Float |
|
| -> m () |
Adds a scaling transformation to m, using the three
given factors.
This is the equivalent of calling matrixInitScale and then
multiplying the matrix m with the scale matrix.
Since: 1.0
skewXy
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> m () |
Adds a skew of factor on the X and Y axis to the given matrix.
Since: 1.0
skewXz
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> m () |
Adds a skew of factor on the X and Z axis to the given matrix.
Since: 1.0
skewYz
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Float |
|
| -> m () |
Adds a skew of factor on the Y and Z axis to the given matrix.
Since: 1.0
to2d
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m (Bool, Double, Double, Double, Double, Double, Double) | Returns: |
Converts a Matrix to an affine transformation
matrix, if the given matrix is compatible.
The returned values have the following layout:
plain code
⎛ xx yx ⎞ ⎛ a b 0 ⎞ ⎜ xy yy ⎟ = ⎜ c d 0 ⎟ ⎝ x0 y0 ⎠ ⎝ tx ty 1 ⎠
This function can be used to convert between a Matrix
and an affine matrix type from other libraries.
Since: 1.0
transformBounds
matrixTransformBounds Source #
Transforms each corner of a Rect using the given matrix m.
The result is the axis aligned bounding rectangle containing the coplanar quadrilateral.
Since: 1.0
transformBox
Transforms the vertices of a Box using the given matrix m.
The result is the axis aligned bounding box containing the transformed vertices.
Since: 1.2
transformPoint
Transforms the given Point using the matrix m.
Unlike matrixTransformVec3, this function will take into
account the fourth row vector of the Matrix when computing
the dot product of each row vector of the matrix.
See also: graphene_simd4x4f_point3_mul()
Since: 1.0
transformPoint3d
matrixTransformPoint3d Source #
Transforms the given Point3D using the matrix m.
Unlike matrixTransformVec3, this function will take into
account the fourth row vector of the Matrix when computing
the dot product of each row vector of the matrix.
Since: 1.2
transformRay
Transform a Ray using the given matrix m.
Since: 1.4
transformRect
Transforms each corner of a Rect using the given matrix m.
The result is a coplanar quadrilateral.
Since: 1.0
transformSphere
matrixTransformSphere Source #
Transforms a Sphere using the given matrix m. The
result is the bounding sphere containing the transformed sphere.
Since: 1.2
transformVec3
Transforms the given Vec3 using the matrix m.
This function will multiply the X, Y, and Z row vectors of the matrix m
with the corresponding components of the vector v. The W row vector will
be ignored.
See also: graphene_simd4x4f_vec3_mul()
Since: 1.0
transformVec4
translate
Adds a translation transformation to m using the coordinates
of the given Point3D.
This is the equivalent of calling matrixInitTranslate and
then multiplying m with the translation matrix.
Since: 1.0
transpose
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> m Matrix |
Transposes the given matrix.
Since: 1.0
unprojectPoint3d
matrixUnprojectPoint3d Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Matrix |
|
| -> Point3D |
|
| -> m Point3D |
Unprojects the given point using the projection matrix and
a modelview matrix.
Since: 1.2
untransformBounds
matrixUntransformBounds Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Rect |
|
| -> Rect |
|
| -> m Rect |
Undoes the transformation on the corners of a Rect using the
given matrix, within the given axis aligned rectangular bounds.
Since: 1.0
untransformPoint
matrixUntransformPoint Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Matrix |
|
| -> Point |
|
| -> Rect |
|
| -> m (Bool, Point) | Returns: |
Undoes the transformation of a Point using the
given matrix, within the given axis aligned rectangular bounds.
Since: 1.0