ソースを参照

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)
 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)
 float ray_disc_intersection(const Vector3& from, const Vector3& dir, const Vector3& center, float radius, const Vector3& normal)