52 lines
		
	
	
		
			784 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			784 B
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef BLUECORE_PLANE_H
 | ||
|  | #define BLUECORE_PLANE_H
 | ||
|  | 
 | ||
|  | #include "Scalar.h"
 | ||
|  | #include "Vector.h"
 | ||
|  | 
 | ||
|  | namespace BlueCore | ||
|  | { | ||
|  | 	template <class T> | ||
|  | 	class PlaneTemplate | ||
|  | 	{ | ||
|  | 	public: | ||
|  | 		Vector3Template<T> _n; | ||
|  | 		T _d; | ||
|  | 
 | ||
|  | 		/**
 | ||
|  | 		 * contructor | ||
|  | 		 */ | ||
|  | 		inline PlaneTemplate() : _d( 0. ) | ||
|  | 		{ | ||
|  | 		} | ||
|  | 		 | ||
|  | 
 | ||
|  | 		/**
 | ||
|  | 		 * contructor | ||
|  | 		 */ | ||
|  | 		inline PlaneTemplate( | ||
|  | 			Vector3Template<T> a, | ||
|  | 			Vector3Template<T> b, | ||
|  | 			Vector3Template<T> c ) | ||
|  | 		{ | ||
|  | 			_n = (a - b).cross(a - c).normalized();  | ||
|  | 			_d = _n.dot( a ); | ||
|  | 		} | ||
|  | 		 | ||
|  | 
 | ||
|  | 		/**
 | ||
|  | 		 * distance | ||
|  | 		 */ | ||
|  | 		inline T distance( const Vector3Template<T> a ) | ||
|  | 		{ | ||
|  | 			return _n.dot( a ) - _d; | ||
|  | 		} | ||
|  | 	}; | ||
|  | 	 | ||
|  | 	typedef PlaneTemplate<float> PlaneFloat; | ||
|  | 	typedef PlaneTemplate<double> PlaneDouble; | ||
|  | 	typedef PlaneTemplate<Scalar> Plane; | ||
|  | } | ||
|  | 
 | ||
|  | #endif
 |