瀏覽代碼

added Ray.distance(plane)

Nicolas Cannasse 4 年之前
父節點
當前提交
c5cfe4822c
共有 1 個文件被更改,包括 7 次插入0 次删除
  1. 7 0
      h3d/col/Ray.hx

+ 7 - 0
h3d/col/Ray.hx

@@ -73,6 +73,13 @@ class Ray {
 		return "Ray{" + getPos() + "," + getDir() + "}";
 	}
 
+	public inline function distance( p : Plane ) : Float {
+		var d = lx * p.nx + ly * p.ny + lz * p.nz;
+		var nd = p.d - (px * p.nx + py * p.ny + pz * p.nz);
+		// line parallel with plane
+		return Math.abs(d) < Math.EPSILON ? (Math.abs(nd) < Math.EPSILON ? 0. : -1) : nd / d;
+	}
+
 	public inline function intersect( p : Plane ) : Null<Point> {
 		var d = lx * p.nx + ly * p.ny + lz * p.nz;
 		var nd = p.d - (px * p.nx + py * p.ny + pz * p.nz);