Prechádzať zdrojové kódy

added getNormalized() (allow inlining of normalization)

Nicolas Cannasse 11 rokov pred
rodič
commit
82fd91c621
1 zmenil súbory, kde vykonal 7 pridanie a 0 odobranie
  1. 7 0
      h3d/Vector.hx

+ 7 - 0
h3d/Vector.hx

@@ -34,6 +34,7 @@ class Vector {
 		return new Vector(x + v.x, y + v.y, z + v.z, w + v.w);
 	}
 
+	// note : cross product is left-handed
 	public inline function cross( v : Vector ) {
 		return new Vector(y * v.z - z * v.y, z * v.x - x * v.z,  x * v.y - y * v.x, 1);
 	}
@@ -66,6 +67,12 @@ class Vector {
 		y *= k;
 		z *= k;
 	}
+	
+	public inline function getNormalized() {
+		var k = lengthSq();
+		if( k < hxd.Math.EPSILON ) k = 0 else k = k.invSqrt();
+		return new Vector(x * k, y * k, z * k);
+	}
 
 	public function set(x,y,z,w=1.) {
 		this.x = x;