Browse Source

Added multiplication operator

Christophe Riccio 15 years ago
parent
commit
5b2e2e2285
2 changed files with 19 additions and 0 deletions
  1. 5 0
      glm/gtc/quaternion.hpp
  2. 14 0
      glm/gtc/quaternion.inl

+ 5 - 0
glm/gtc/quaternion.hpp

@@ -76,6 +76,11 @@ namespace glm
 		detail::tquat<T> operator- (
 			detail::tquat<T> const & q);
 
+		template <typename T> 
+		detail::tquat<T> operator* ( 
+			detail::tquat<T> const & q, 
+			detail::tquat<T> const & p); 
+
 		template <typename T> 
 		detail::tvec3<T> operator* (
 			detail::tquat<T> const & q, 

+ 14 - 0
glm/gtc/quaternion.inl

@@ -156,6 +156,20 @@ namespace detail{
 		return detail::tquat<T>(-q.w, -q.x, -q.y, -q.z);
 	}
 
+	template <typename T> 
+	inline detail::tquat<T> operator*
+	( 
+		detail::tquat<T> const & q, 
+		detail::tquat<T> const & p
+	) 
+	{ 
+        return detail::tquat<T>(
+            q.w * p.w - q.x * p.x - q.y * p.y - q.z * p.z,
+	        q.w * p.x + q.x * p.w + q.y * p.z - q.z * p.y,
+	        q.w * p.y + q.y * p.w + q.z * p.x - q.x * p.z,
+	        q.w * p.z + q.z * p.w + q.x * p.y - q.y * p.x);
+	} 
+
 	// Transformation
 	template <typename T>
 	inline detail::tvec3<T> operator*