Simple Ray class

This commit is contained in:
2026-06-14 13:18:11 -07:00
parent f9065a591c
commit 9631e860c5
3 changed files with 43 additions and 1 deletions
+5 -1
View File
@@ -3,8 +3,12 @@ set(target project_core)
add_library(${target} add_library(${target}
core.cpp core.cpp
core.hpp core.hpp
Ray.cpp
Ray.hpp
) )
target_compile_features(${target} PRIVATE cxx_std_23) target_compile_features(${target} PRIVATE cxx_std_23)
# target_link_libraries(${target} PRIVATE) target_include_directories(${target} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(${target} PUBLIC Eigen3::Eigen)
+12
View File
@@ -0,0 +1,12 @@
#include "Ray.hpp"
core::Ray::Ray(const Eigen::Vector3d &origin, const Eigen::Vector3d &direction)
: origin_(origin), direction_(direction) {}
const Eigen::Vector3d &core::Ray::origin() const { return origin_; }
const Eigen::Vector3d &core::Ray::direction() const { return direction_; }
Eigen::Vector3d core::Ray::pointAt(const double t) const {
return origin_ + (t * direction_);
}
+26
View File
@@ -0,0 +1,26 @@
#ifndef RAY_HPP
#define RAY_HPP
#include <Eigen/Dense>
namespace core {
class Ray {
public:
Ray(const Eigen::Vector3d &origin, const Eigen::Vector3d &direction);
~Ray() = default;
const Eigen::Vector3d &origin() const;
const Eigen::Vector3d &direction() const;
Eigen::Vector3d pointAt(const double t) const;
private:
Eigen::Vector3d origin_;
Eigen::Vector3d direction_;
};
} // namespace core
#endif