readded scalar types
This commit is contained in:
parent
a16f8ffbde
commit
e4bfc0ff19
3 changed files with 12 additions and 29 deletions
|
|
@ -23,36 +23,13 @@ import :MatrixRowMajor;
|
||||||
import std;
|
import std;
|
||||||
|
|
||||||
namespace Crafter {
|
namespace Crafter {
|
||||||
export
|
export template<typename T>
|
||||||
constexpr std::array<float, 15> IntersectionTestRayTriangle(
|
constexpr T IntersectionTestRayTriangle(Vector<T, 3, 0> vert0, Vector<T, 3, 0> vert1, Vector<T, 3, 0> vert2, Vector<T, 3, 0> rayOrigin, Vector<T, 3, 0> rayDir) {
|
||||||
VectorF32<3, 5> vertA0,
|
Vector<T, 3, 0> edge1 = vert1 - vert0;
|
||||||
VectorF32<3, 5> vertA1,
|
Vector<T, 3, 0> edge2 = vert2 - vert0;
|
||||||
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);
|
|
||||||
|
|
||||||
|
Vector<T, 3, 0> h = Vector<T, 3, 0>::Cross(rayDir, edge2);
|
||||||
|
T determinant = Vector<T, 3, 0>::Dot(edge1, h);
|
||||||
|
|
||||||
if (determinant <= std::numeric_limits<T>::epsilon()) {
|
if (determinant <= std::numeric_limits<T>::epsilon()) {
|
||||||
return std::numeric_limits<T>::max();
|
return std::numeric_limits<T>::max();
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
export module Crafter.Math;
|
export module Crafter.Math;
|
||||||
export import :Basic;
|
export import :Basic;
|
||||||
|
export import :Vector;
|
||||||
|
export import :MatrixRowMajor;
|
||||||
|
export import :Intersection;
|
||||||
export import :Common;
|
export import :Common;
|
||||||
export import :VectorF16;
|
export import :VectorF16;
|
||||||
export import :VectorF32;
|
export import :VectorF32;
|
||||||
|
|
@ -7,6 +7,9 @@
|
||||||
"interfaces/Crafter.Math-Basic",
|
"interfaces/Crafter.Math-Basic",
|
||||||
"interfaces/Crafter.Math",
|
"interfaces/Crafter.Math",
|
||||||
"interfaces/Crafter.Math-Common",
|
"interfaces/Crafter.Math-Common",
|
||||||
|
"interfaces/Crafter.Math-Vector",
|
||||||
|
"interfaces/Crafter.Math-Intersection",
|
||||||
|
"interfaces/Crafter.Math-MatrixRowMajor",
|
||||||
"interfaces/Crafter.Math-VectorF16",
|
"interfaces/Crafter.Math-VectorF16",
|
||||||
"interfaces/Crafter.Math-VectorF32"
|
"interfaces/Crafter.Math-VectorF32"
|
||||||
],
|
],
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue