from abc import ABC, abstractmethod
from typing import Tuple, List
from swarmauri.core.vectors.IVector import IVector # Assuming there's a base IVector interface for vector representations
[docs]
class IDecompose(ABC):
"""
Interface for decomposing a vector into components along specified basis vectors.
This operation is essential in expressing a vector in different coordinate systems or reference frames.
"""
[docs]
@abstractmethod
def decompose(self, vector: IVector, basis_vectors: List[IVector]) -> List[IVector]:
"""
Decompose the given vector into components along the specified basis vectors.
Parameters:
- vector (IVector): The vector to be decomposed.
- basis_vectors (List[IVector]): A list of basis vectors along which to decompose the given vector.
Returns:
- List[IVector]: A list of vectors, each representing the component of the decomposed vector along
the corresponding basis vector in the `basis_vectors` list.
"""
pass