This commit is contained in:
parent
2a24119501
commit
79caf039ef
19 changed files with 3844 additions and 0 deletions
53
Utils/Libs/Maths/plane.h
Normal file
53
Utils/Libs/Maths/plane.h
Normal file
|
@ -0,0 +1,53 @@
|
|||
#ifndef __PLANE_H__
|
||||
#define __PLANE_H__
|
||||
|
||||
#include "mathtypes.h"
|
||||
#include "vector3.h"
|
||||
|
||||
|
||||
struct Plane
|
||||
{
|
||||
Vector3 m_Normal;
|
||||
real m_Distance;
|
||||
|
||||
inline real GetDistance( Vector3 const &pnt ) const;
|
||||
inline void Normalise( void );
|
||||
|
||||
inline void SetPlane( Vector3 const &p0, Vector3 const &p1 );
|
||||
inline void SetPlane( Vector3 const &p0, Vector3 const &p1, Vector3 const &p2 );
|
||||
};
|
||||
|
||||
inline real Plane::GetDistance( Vector3 const &pnt ) const
|
||||
{
|
||||
real v = (m_Normal * pnt) + m_Distance;
|
||||
return v;
|
||||
}
|
||||
|
||||
inline void Plane::Normalise( void )
|
||||
{
|
||||
real mag = m_Normal.GetLength();
|
||||
real oneomag = 1.f / mag;
|
||||
|
||||
m_Normal.x *= oneomag;
|
||||
m_Normal.y *= oneomag;
|
||||
m_Normal.z *= oneomag;
|
||||
m_Distance *= oneomag;
|
||||
}
|
||||
|
||||
inline void Plane::SetPlane( Vector3 const &v0, Vector3 const &v1 )
|
||||
{
|
||||
m_Normal = v0 ^ v1;
|
||||
m_Normal.Normalise();
|
||||
m_Distance = 0.f;
|
||||
}
|
||||
|
||||
inline void Plane::SetPlane( Vector3 const &p0, Vector3 const &p1, Vector3 const &p2 )
|
||||
{
|
||||
Vector3 v0 = (p1 - p0);
|
||||
Vector3 v1 = (p2 - p0);
|
||||
m_Normal = v0 ^ v1;
|
||||
m_Normal.Normalise();
|
||||
m_Distance = -(p0 * m_Normal);
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue