瀏覽代碼

Return intersection with back side too

Daniele Bartolini 10 年之前
父節點
當前提交
2d6dfd97f5
共有 1 個文件被更改,包括 5 次插入6 次删除
  1. 5 6
      src/core/math/intersection.cpp

+ 5 - 6
src/core/math/intersection.cpp

@@ -14,14 +14,13 @@ namespace crown
 
 float ray_plane_intersection(const Vector3& from, const Vector3& dir, const Plane& p)
 {
-	const float nd   = dot(dir, p.n);
-	const float orpn = dot(from, p.n);
-	float dist = -1.0f;
+	const float num = dot(from, p.n);
+	const float den = dot(dir, p.n);
 
-	if (nd < 0.0f)
-		dist = (-p.d - orpn) / nd;
+	if (fequal(den, 0.0f))
+		return -1.0f;
 
-	return dist > 0.0f ? dist : -1.0f;
+	return (-p.d - num) / den;
 }
 
 float ray_disc_intersection(const Vector3& from, const Vector3& dir, const Vector3& center, float radius, const Vector3& normal)