from abc import ABC, abstractmethod
from typing import List
[docs]
class IOrthogonalProject(ABC):
"""
Interface for calculating the orthogonal projection of one vector onto another.
"""
[docs]
@abstractmethod
def orthogonal_project(self, vector_a: List[float], vector_b: List[float]) -> List[float]:
"""
Calculates the orthogonal projection of vector_a onto vector_b.
Args:
vector_a (List[float]): The vector to be projected.
vector_b (List[float]): The vector onto which vector_a is orthogonally projected.
Returns:
List[float]: The orthogonal projection of vector_a onto vector_b.
"""
pass