Browse Source

added getNormalized() (allow inlining of normalization)

Nicolas Cannasse 11 years ago
parent
commit
82fd91c621
1 changed files with 7 additions and 0 deletions
  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);
 		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 ) {
 	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);
 		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;
 		y *= k;
 		z *= 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.) {
 	public function set(x,y,z,w=1.) {
 		this.x = x;
 		this.x = x;