template class sophus::RayΒΆ

#include <ray.h>

template <class TScalar, int kN>
class Ray {
public:
    // structs

    struct IntersectionResult;

    // construction

    Ray(
        Eigen::Matrix<TScalar, kN, 1> const& origin,
        UnitVector<TScalar, kN> const& direction
        );

    Ray(Ray const&);

    // methods

    Ray& operator=(Ray const&);
    Eigen::Matrix<TScalar, kN, 1> const& origin() const;
    Eigen::Matrix<TScalar, kN, 1>& origin();
    UnitVector<TScalar, kN> const& direction() const;
    UnitVector<TScalar, kN>& direction();
    Eigen::Matrix<TScalar, kN, 1> pointAt(TScalar lambda) const;
    std::optional<IntersectionResult> intersect(Eigen::Hyperplane<TScalar, kN> const& plane) const;
    Eigen::Matrix<TScalar, kN, 1> projection(Eigen::Matrix<TScalar, kN, 1> const& point) const;
};