diff --git a/interfaces/Crafter.Math-Intersection.cppm b/interfaces/Crafter.Math-Intersection.cppm index 7bbc90f..370cb9f 100755 --- a/interfaces/Crafter.Math-Intersection.cppm +++ b/interfaces/Crafter.Math-Intersection.cppm @@ -23,36 +23,13 @@ import :MatrixRowMajor; import std; namespace Crafter { - export - constexpr std::array IntersectionTestRayTriangle( - VectorF32<3, 5> vertA0, - VectorF32<3, 5> vertA1, - VectorF32<3, 5> vertA2, - - VectorF32<3, 5> vertB0, - VectorF32<3, 5> vertB1, - VectorF32<3, 5> vertB2, - - VectorF32<3, 5> vertC0, - VectorF32<3, 5> vertC1, - VectorF32<3, 5> vertC2, - - VectorF32<3, 5> rayOrigin, - VectorF32<3, 5> rayDir - ) { - - VectorF32<3, Packing> edgeA1 = vertA1 - vertA0; - VectorF32<3, Packing> edgeA2 = vertA2 - vertA0; - VectorF32<3, Packing> crossA = VectorF32<3, Packing> ::Cross(rayDir, edgeA2); - - VectorF32<3, Packing> edgeB1 = vertB1 - vertB0; - VectorF32<3, Packing> edgeB2 = vertB2 - vertB0; - VectorF32<3, Packing> crossB = VectorF32<3, Packing> ::Cross(rayDir, edgeB2); - - VectorF32<3, Packing> edgeC1 = vertC1 - vertC0; - VectorF32<3, Packing> edgeC2 = vertC2 - vertC0; - VectorF32<3, Packing> crossC = VectorF32<3, Packing> ::Cross(rayDir, edgeC2); + export template + constexpr T IntersectionTestRayTriangle(Vector vert0, Vector vert1, Vector vert2, Vector rayOrigin, Vector rayDir) { + Vector edge1 = vert1 - vert0; + Vector edge2 = vert2 - vert0; + Vector h = Vector::Cross(rayDir, edge2); + T determinant = Vector::Dot(edge1, h); if (determinant <= std::numeric_limits::epsilon()) { return std::numeric_limits::max(); diff --git a/interfaces/Crafter.Math.cppm b/interfaces/Crafter.Math.cppm index 6180d4f..89b47bd 100644 --- a/interfaces/Crafter.Math.cppm +++ b/interfaces/Crafter.Math.cppm @@ -20,6 +20,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA export module Crafter.Math; export import :Basic; +export import :Vector; +export import :MatrixRowMajor; +export import :Intersection; export import :Common; export import :VectorF16; export import :VectorF32; \ No newline at end of file diff --git a/project.json b/project.json index 28cd205..b2a7349 100644 --- a/project.json +++ b/project.json @@ -7,6 +7,9 @@ "interfaces/Crafter.Math-Basic", "interfaces/Crafter.Math", "interfaces/Crafter.Math-Common", + "interfaces/Crafter.Math-Vector", + "interfaces/Crafter.Math-Intersection", + "interfaces/Crafter.Math-MatrixRowMajor", "interfaces/Crafter.Math-VectorF16", "interfaces/Crafter.Math-VectorF32" ],