Explorar o código

added Point.load(), always normalize rays by default

ncannasse %!s(int64=8) %!d(string=hai) anos
pai
achega
03552d7e97
Modificáronse 2 ficheiros con 11 adicións e 1 borrados
  1. 6 0
      h3d/col/Point.hx
  2. 5 1
      h3d/col/Ray.hx

+ 6 - 0
h3d/col/Point.hx

@@ -126,6 +126,12 @@ class Point {
 		return new Point(x,y,z);
 	}
 
+	public inline function load( p : Point ) {
+		this.x = p.x;
+		this.y = p.y;
+		this.z = p.z;
+	}
+
 	public function toString() {
 		return 'Point{${x.fmt()},${y.fmt()},${z.fmt()}}';
 	}

+ 5 - 1
h3d/col/Ray.hx

@@ -34,8 +34,9 @@ class Ray {
 		lz = r.lz;
 	}
 
-	public function normalize() {
+	function normalize() {
 		var l = lx * lx + ly * ly + lz * lz;
+		if( l == 1. ) return;
 		if( l < Math.EPSILON ) l = 0 else l = Math.invSqrt(l);
 		lx *= l;
 		ly *= l;
@@ -53,6 +54,7 @@ class Ray {
 		lx = l.x;
 		ly = l.y;
 		lz = l.z;
+		normalize();
 	}
 
 	public inline function getPos() {
@@ -140,6 +142,7 @@ class Ray {
 		r.lx = p2.x - p1.x;
 		r.ly = p2.y - p1.y;
 		r.lz = p2.z - p1.z;
+		r.normalize();
 		return r;
 	}
 
@@ -151,6 +154,7 @@ class Ray {
 		r.lx = dx;
 		r.ly = dy;
 		r.lz = dz;
+		r.normalize();
 		return r;
 	}