Source code for optika.rays._ray_functions

from __future__ import annotations
import dataclasses
import named_arrays as na
import optika
from . import RayVectorArray

__all__ = [
    "AbstractRayFunctionArray",
    "RayFunctionArray",
]


[docs] @dataclasses.dataclass(eq=False, repr=False) class AbstractRayFunctionArray( na.AbstractFunctionArray, ): """An interface describing a function which maps input rays to output rays.""" @property def type_explicit(self) -> type[RayFunctionArray]: return RayFunctionArray
[docs] @dataclasses.dataclass(eq=False, repr=False) class RayFunctionArray( AbstractRayFunctionArray, na.FunctionArray[ optika.vectors.ObjectVectorArray, RayVectorArray, ], ): """A discrete function which maps input rays to output rays."""