Class Transform
from raimad.transform
class Transform
Transformation: container for affine matrix.
def __init__(self) -> None:
"""
Initialize a new Transform as an identity transform.
"""
def reset(self) -> None:
"""
Reset this transform to be an identity transform.
"""
def transform_poly(self, poly: 'rai.typing.Poly') -> 'rai.typing.Poly':
"""
Apply transformation to poly and return new transformed poly.
Parameters
----------
poly : rai.typing.Poly
The Poly to transform
Returns
-------
rai.typing.Poly
The new, transformed, Poly
"""
def transform_point(self, point: 'rai.typing.PointLike') -> 'rai.typing.Point':
"""
Apply this transform to a point, and return the transformed point.
A Point (tuple of two floats) is always returned,
even if a BoundPoint is passed in.
Parameters
----------
point : rai.typing.PointLike
The point to transform.
Returns
-------
rai.typing.Point
The transformed point.
"""
def compose(self, transform: Self) -> Self:
"""
Apply a different transform to this transform.
Parameters
----------
transform : Self
The other transform to apply to this one
Returns
-------
Self
This transform is returned to allow method chaining.
"""
def get_translation(self) -> tuple[float, float]:
"""
Return how much this transform translates the coordinate plane.
Returns
-------
tuple[float, float]
The first item is how much the plane is moved
along the x axis.
The second item is how much the plane is moved
along the y axis.
"""
def get_rotation(self) -> float:
"""
Return how much this transform rotates the coordinate plane.
Returns
-------
float
The angle by which this transform rotates the
coordinate plane (radians, in the positive orientation)
"""
def get_shear(self) -> float:
"""
Return a how much this transform shears the coordinate plane.
Returns
-------
float
A number representing the shear.
"""
def get_scale(self) -> tuple[float, float]:
"""
Return how much this transform scales the x and y axis.
Returns
-------
tuple[float, float]
The first float is the scaling factor along the x axis.
The second float is the scaling factor along
the y axis.
"""
def does_translate(self) -> bool:
"""
Check whether this transform applies a translation.
Returns
-------
bool
True if the transform translates.
False otherwise.
"""
def does_rotate(self) -> bool:
"""
Check whether this transform applies a rotation.
Returns
-------
bool
True if the transform rotates.
False otherwise.
"""
def does_shear(self) -> bool:
"""
Check whether this transform applies a shear.
Returns
-------
bool
True if the transform shears.
False otherwise.
"""
def does_scale(self) -> bool:
"""
Check whether this transform applies a scale.
Returns
-------
bool
True if the transform scales.
False otherwise.
"""
def __repr__(self) -> str:
"""
Return string representation of transform.
Returns
-------
str
A representation of this transform.
"""
def copy(self) -> Self:
"""
Duplicate transform.
Returns
-------
Self
The copied transform.
"""
def move(self, x: float, y: float) -> Self:
"""
Move transform.
Parameters
----------
x : float
Move this many units along x axis.
y : float
Move this many units along y axis.
Returns
-------
Self
This transform is returned to allow chaining methods.
"""
def movex(self, x: float = 0) -> Self:
"""
Move along x axis.
Parameters
----------
x : float
Move this many units along x axis.
Returns
-------
Self
This transform is returned to allow chaining methods.
"""
def movey(self, y: float = 0) -> Self:
"""
Move along y axis.
Parameters
----------
y : float
Move this many units along y axis.
Returns
-------
Self
This transform is returned to allow chaining methods.
"""
def scale(self, x: float, y: float | None = None) -> Self:
"""
Scale a transform.
Parameters
----------
x : float
Factor to scale by along the x axis
y : float
Factor to scale by along the y axis.
If unspecified or None,
use the x scale factor.
Returns
-------
Self
This transform is returned to allow chaining methods.
"""
def rotate(self, angle: float, x: float = 0, y: float = 0) -> Self:
"""
Rotate around a point.
Parameters
----------
angle : float
Angle to rotate by, in radians.
x : float
Rotate around this point (x coordinate)
default: origin
y : float
Rotate around this point (y coordinate)
default: origin
Returns
-------
Self
This transform is returned to allow chaining methods.
"""
def hflip(self, x: float = 0) -> Self:
"""
Flip (mirror) along horizontal axis.
Parameters
----------
x : float
Flip around this horizontal line (y coordinate)
Returns
-------
Self
This transform is returned to allow chaining methods.
"""
def vflip(self, y: float = 0) -> Self:
"""
Flip (mirror) along vertical axis.
Parameters
----------
y : float
Flip around this vertical line (y coordinate)
Returns
-------
Self
This transform is returned to allow chaining methods.
"""
def flip(self, x: float = 0, y: float = 0) -> Self:
"""
Flip (mirror) along both horizontal and vertical axis.
Parameters
----------
x : float
Flip around this point (x coordinate)
y : float
Flip around this point (y coordinate)
Returns
-------
Self
This transform is returned to allow chaining methods.
"""