mirror of
https://github.com/orange-cpp/omath.git
synced 2026-02-13 07:03:25 +00:00
39 lines
829 B
C++
39 lines
829 B
C++
//
|
||
// Created by Orange on 11/13/2024.
|
||
//
|
||
#pragma once
|
||
|
||
#include "omath/Vector3.hpp"
|
||
#include "omath/Triangle.hpp"
|
||
|
||
namespace omath::collision
|
||
{
|
||
class Ray
|
||
{
|
||
public:
|
||
Vector3 start;
|
||
Vector3 end;
|
||
|
||
[[nodiscard]]
|
||
Vector3 DirectionVector() const;
|
||
|
||
[[nodiscard]]
|
||
Vector3 DirectionVectorNormalized() const;
|
||
};
|
||
class LineTracer
|
||
{
|
||
public:
|
||
LineTracer() = delete;
|
||
|
||
|
||
[[nodiscard]]
|
||
static bool CanTraceLine(const Ray& ray, const Triangle<Vector3>& triangle);
|
||
|
||
|
||
// Realization of Möller–Trumbore intersection algorithm
|
||
// https://en.wikipedia.org/wiki/M%C3%B6ller%E2%80%93Trumbore_intersection_algorithm
|
||
[[nodiscard]]
|
||
static Vector3 GetRayHitPoint(const Ray& ray, const Triangle<Vector3>& triangle);
|
||
};
|
||
}
|