Explorar o código

core: add plane3::transform()

Daniele Bartolini hai 10 meses
pai
achega
b8d3831a07
Modificáronse 1 ficheiros con 16 adicións e 0 borrados
  1. 16 0
      src/core/math/plane3.inl

+ 16 - 0
src/core/math/plane3.inl

@@ -6,6 +6,7 @@
 #pragma once
 #pragma once
 
 
 #include "core/math/vector3.inl"
 #include "core/math/vector3.inl"
+#include "core/math/vector4.inl"
 
 
 namespace crown
 namespace crown
 {
 {
@@ -39,6 +40,21 @@ namespace plane3
 		return dot(p.n, point) - p.d;
 		return dot(p.n, point) - p.d;
 	}
 	}
 
 
+	inline Plane3 transform(const Plane3 &p, const Matrix4x4 &m)
+	{
+		Vector4 n = { p.n.x, p.n.y, p.n.z, 0.0f };
+		Vector4 o = n * p.d;
+		o.w = 1.0f;
+
+		n = n * m;
+		o = o * m;
+
+		Plane3 out;
+		out.n = { n.x, n.y, n.z };
+		out.d = dot(out.n, { o.x, o.y, o.z });
+		return out;
+	}
+
 } // namespace plane3
 } // namespace plane3
 
 
 } // namespace crown
 } // namespace crown