#pragma once #include #include #include #include #include namespace fesa { using Matrix12 = std::array, 12>; struct BeamFrame final { Vec3 ex; Vec3 ey; Vec3 ez; }; struct BeamFrameResult final { std::optional frame; std::vector diagnostics; }; [[nodiscard]] BeamFrameResult make_beam_frame( const Vec3& first, const Vec3& second, const Vec3& orientation); [[nodiscard]] Matrix12 beam_transformation(const BeamFrame& frame); } // namespace fesa