geom2d.transform2d

Basic 2D affine transform matrix operations.


geom2d.transform2d.canonicalize_point(p: Sequence[float], origin: Sequence[float], theta: float) tuple[float, float]

Canonicalize the point.

This just rotates then translates the point so that the origin is (0, 0) and axis rotation is zero.

Parameters:
  • p – The point to canonicalize (x, y).

  • origin – The origin offset as a 2-tuple (X, Y).

  • theta – The axis rotation angle.

Returns:

A point as 2-tuple

geom2d.transform2d.compose_transform(m1: tuple[tuple[float, float, float], tuple[float, float, float]], m2: tuple[tuple[float, float, float], tuple[float, float, float]]) tuple[tuple[float, float, float], tuple[float, float, float]]

Combine two matrices by multiplying them.

Parameters:
  • m1 – 2X3 2D transform matrix.

  • m2 – 2X3 2D transform matrix.

Note

m2 is applied before (to) m1

geom2d.transform2d.create_transform(scale: Sequence[float] = (1, 1), offset: Sequence[float] = (0, 0), rotate_angle: float = 0, rotate_origin: Sequence[float] = (0, 0)) TMatrix

Create transform matrix.

geom2d.transform2d.is_identity_transform(m: tuple[tuple[float, float, float], tuple[float, float, float]]) bool

Return True if the matrix is the identity matrix.

geom2d.transform2d.matrix_apply_to_point(m: TMatrix, p: Sequence[float]) tuple[float, float]

Return a copy of p with the transform matrix applied to it.

geom2d.transform2d.matrix_equals(a: tuple[tuple[float, float, float], tuple[float, float, float]], b: tuple[tuple[float, float, float], tuple[float, float, float]]) bool

Return True if the matrix is the identity matrix.

geom2d.transform2d.matrix_rotate(angle: float, origin: Sequence[float] | None = None) TMatrix

Create a transform matrix to rotate about the origin.

Parameters:
  • angle – Rotation angle in radians.

  • origin – Optional rotation origin. Default is (0,0).

Returns:

A transform matrix as 2x3 tuple

geom2d.transform2d.matrix_scale(scale_x: float, scale_y: float, origin: Sequence[float] | None = None) TMatrix

Create a transform matrix to scale.

Parameters:
  • scale_x – X axis scale factor

  • scale_y – Y axis scale factor

  • origin – Optional scale origin. Default is (0,0).

Returns:

A transform matrix as 2x3 tuple

geom2d.transform2d.matrix_scale_translate(scale_x: float, scale_y: float, offset_x: float, offset_y: float) tuple[tuple[float, float, float], tuple[float, float, float]]

Create a transform matrix to scale and translate.

Parameters:
  • scale_x – X axis scale factor

  • scale_y – Y axis scale factor

  • offset_x – translation along X axis

  • offset_y – translation along Y axis

Returns:

A transform matrix as 2x3 tuple

geom2d.transform2d.matrix_skew_x(angle: float) tuple[tuple[float, float, float], tuple[float, float, float]]

Create a transform matrix to skew along X axis by angle.

Parameters:

angle – Angle in radians to skew.

Returns:

A transform matrix as 2x3 tuple

geom2d.transform2d.matrix_skew_y(angle: float) tuple[tuple[float, float, float], tuple[float, float, float]]

Create a transform matrix to skew along Y axis by angle.

Parameters:

angle – Angle in radians to skew.

Returns:

A transform matrix as 2x3 tuple

geom2d.transform2d.matrix_translate(x: float, y: float) tuple[tuple[float, float, float], tuple[float, float, float]]

Create a transform matrix to translate (move).

Parameters:
  • x – translation along X axis

  • y – translation along Y axis

Returns:

A transform matrix as 2x3 tuple