From d7f9a74f75ba0ce2167fa0e529a009becdcee7e3 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sat, 25 Mar 2023 03:06:07 +0900 Subject: Convert a few linear algebra functions to Zig --- src/Models.cpp | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) (limited to 'src/Models.cpp') diff --git a/src/Models.cpp b/src/Models.cpp index ad0f357..e706ebf 100644 --- a/src/Models.cpp +++ b/src/Models.cpp @@ -6,14 +6,11 @@ void Model::CalculateNormals() { - for (int i = 0; i < TriangleNum; ++i) { - CrossProduct(vertex[Triangles[i].vertex[1]] + for (int i = 0; i < TriangleNum; ++i) + normals[i] = normalize(crossProduct(vertex[Triangles[i].vertex[1]] - vertex[Triangles[i].vertex[0]], vertex[Triangles[i].vertex[2]] - - vertex[Triangles[i].vertex[0]], - normals + i); - Normalise(normals + i); - } + - vertex[Triangles[i].vertex[0]])); for (int i = 0; i < TriangleNum; ++i) { vArray[i*27+0]=vertex[Triangles[i].vertex[0]].x; @@ -128,10 +125,7 @@ int Model::LineCheck(XYZ p1,XYZ p2, XYZ *p) int intersecting=0; int firstintersecting=-1; XYZ point; - if(sphere_line_intersection(p1.x,p1.y,p1.z, - p2.x,p2.y,p2.z, - boundingspherecenter.x,boundingspherecenter.y,boundingspherecenter.z, - boundingsphereradius)) + if (segmentIntersectsSphere(p1, p2, boundingspherecenter, boundingsphereradius)) for (j=0;jx,p1->y,p1->z, - p2->x,p2->y,p2->z, - boundingspherecenter.x,boundingspherecenter.y,boundingspherecenter.z, - boundingsphereradius)) + if (segmentIntersectsSphere(*p1, *p2, boundingspherecenter, boundingsphereradius)) for (j=0;j