Bladeren bron

added hasNaN methods to vec, mat, quat

Alexander Rose 6 jaren geleden
bovenliggende
commit
dc2b0bf3e6

+ 5 - 0
src/mol-math/linear-algebra/3d/mat3.ts

@@ -97,6 +97,11 @@ namespace Mat3 {
         return out;
     }
 
+    export function hasNaN(m: Mat3) {
+        for (let i = 0; i < 9; i++) if (isNaN(m[i])) return true
+        return false
+    }
+
     /**
      * Creates a new Mat3 initialized with values from an existing matrix
      */

+ 5 - 0
src/mol-math/linear-algebra/3d/mat4.ts

@@ -102,6 +102,11 @@ namespace Mat4 {
         return areEqual(m, _id, typeof eps === 'undefined' ? EPSILON.Value : eps);
     }
 
+    export function hasNaN(m: Mat4) {
+        for (let i = 0; i < 16; i++) if (isNaN(m[i])) return true
+        return false
+    }
+
     export function areEqual(a: Mat4, b: Mat4, eps: number) {
         for (let i = 0; i < 16; i++) {
             if (Math.abs(a[i] - b[i]) > eps) return false;

+ 4 - 0
src/mol-math/linear-algebra/3d/quat.ts

@@ -53,6 +53,10 @@ namespace Quat {
         out[3] = 1;
     }
 
+    export function hasNaN(q: Quat) {
+        return isNaN(q[0]) || isNaN(q[1]) || isNaN(q[2]) || isNaN(q[3])
+    }
+
     export function create(x: number, y: number, z: number, w: number) {
         const out = identity();
         out[0] = x;

+ 4 - 0
src/mol-math/linear-algebra/3d/vec2.ts

@@ -40,6 +40,10 @@ namespace Vec2 {
         return out;
     }
 
+    export function hasNaN(a: Vec2) {
+        return isNaN(a[0]) || isNaN(a[1])
+    }
+
     export function toArray(a: Vec2, out: Helpers.NumberArray, offset: number) {
         out[offset + 0] = a[0];
         out[offset + 1] = a[1];

+ 4 - 0
src/mol-math/linear-algebra/3d/vec3.ts

@@ -38,6 +38,10 @@ namespace Vec3 {
         return out;
     }
 
+    export function hasNaN(a: Vec3) {
+        return isNaN(a[0]) || isNaN(a[1]) || isNaN(a[2])
+    }
+
     export function fromObj(v: { x: number, y: number, z: number }): Vec3 {
         return create(v.x, v.y, v.z);
     }

+ 4 - 0
src/mol-math/linear-algebra/3d/vec4.ts

@@ -48,6 +48,10 @@ namespace Vec4 {
         return out;
     }
 
+    export function hasNaN(a: Vec4) {
+        return isNaN(a[0]) || isNaN(a[1]) || isNaN(a[2]) || isNaN(a[3])
+    }
+
     export function toArray(a: Vec4, out: Helpers.NumberArray, offset: number) {
         out[offset + 0] = a[0];
         out[offset + 1] = a[1];