Source code for fibomat.linalg.transformables.dim_transformable
"""
Provides the :class:`Transformable` class.
"""
from typing import Optional
import abc
from fibomat.linalg.transformables.transformable_base import TransformableBase
from fibomat.linalg.vectors import DimVector, DimVectorLike
from fibomat.linalg.boundingboxes import DimBoundingBox
from fibomat.units import LengthQuantity
[docs]class DimTransformable(TransformableBase[DimVector, LengthQuantity, DimBoundingBox], abc.ABC):
"""
:class:`Transformable` is a base class providing the translate, rotate and uniform scale
transformations.
In order to use this mixin in a child class, the following methods and properties must be implemented:
* :attr:`Transformable.center`
* :meth:`Transformable.translate`
* :meth:`Transformable.simple_rotate`
* :meth:`Transformable.simple_scale`
"""
_VectorClass = DimVector
[docs] def __init__(self, description: Optional[str] = None):
"""
Args:
pivot (VectorLike, optional): if set, the :attr:`Transformable.pivot` is set to `pivot`. If not set,
:attr:`Transformable.center` is used as default.
description (str, optional): optional description
"""
super().__init__(description=description)