Files
ViewDesignEngine/include/vde/collision/ray_intersect.h
T

25 lines
655 B
C++
Raw Normal View History

#pragma once
#include "vde/core/point.h"
#include "vde/core/line.h"
#include "vde/core/triangle.h"
#include <optional>
namespace vde::collision {
struct RayTriResult {
double t; // parameter along ray
double u, v; // barycentric
Point3D point;
};
/// MöllerTrumbore ray-triangle intersection
std::optional<RayTriResult> ray_triangle_intersect(
const Point3D& origin, const Vector3D& dir, const Triangle3D& tri);
inline std::optional<RayTriResult> ray_triangle_intersect(
const Ray3Dd& ray, const Triangle3D& tri) {
return ray_triangle_intersect(ray.origin(), ray.direction(), tri);
}
} // namespace vde::collision