12 #include "../Math/cVector.h"
13 #include "../Math/cMatrix.h"
58 InitPlanePoints(v1, v2, v3);
62 InitPointNormal(vPoint, vNormal);
65 #if defined(USE_DXM) || defined(USE_DX)
75 ref_Normal() = vNormal;
76 m_a[3] = fDistFromOrigin;
82 *
this = ::XMPlaneFromPointNormal((XMVECTOR)vPoint, (XMVECTOR)vNormal);
84 ref_Normal() = vNormal;
103 InitPointNormal(v1, vNormalN);
111 ::D3DXPlaneTransform((D3DXPLANE*)
this, (D3DXPLANE*)&plane, (
const XMFLOAT4X4*)&m1);
113 this->m_x = m1.
m[0][0] * plane.
m_x + m1.
m[1][0] * plane.
m_y + m1.
m[2][0] * plane.
m_z + m1.
m[3][0] * plane.
w;
114 this->m_y = m1.
m[0][1] * plane.
m_x + m1.
m[1][1] * plane.
m_y + m1.
m[2][1] * plane.
m_z + m1.
m[3][1] * plane.
w;
115 this->m_z = m1.
m[0][2] * plane.
m_x + m1.
m[1][2] * plane.
m_y + m1.
m[2][2] * plane.
m_z + m1.
m[3][2] * plane.
w;
116 this->m_w = m1.
m[0][3] * plane.
m_x + m1.
m[1][3] * plane.
m_y + m1.
m[2][3] * plane.
m_z + m1.
m[3][3] * plane.
w;
125 ::D3DXPlaneNormalize((D3DXPLANE*)
this, (
const D3DXPLANE*)&plane);
151 return get_Normal() * -get_DistFromOrigin();
159 return ::D3DXPlaneDotCoord((D3DXPLANE*)
this, (
XMFLOAT3*)&v);
161 return get_Normal().GetDot(v) + m_a[3] ;
186 return(get_Normal().GetDot(vLookDir) <= 0.0f);
193 return vPoint.
GetDot(get_Normal()) + get_DistFromOrigin();
205 float d = get_Normal().GetDot(vPoint) + get_DistFromOrigin();
223 m_a[3] = -vMember.
GetDot(get_Normal());
227 InitNormalized(*
this);
232 ref_Normal() = get_Normal().GetTransNorm(m);
242 float fn00 = m_vNormal.get_Magnitude();
243 float fn01 = m_vNormal.GetDot(rPlane2.m_vNormal);
245 float det = fn00 * fn11 - fn01 * fn01;
251 float fc0 = (fn11 * -m_D + fn01 * rPlane2.m_D) * det;
252 float fc1 = (fn00 * -rPlane2.m_D + fn01 * m_D) * det;
254 outLineVect = m_vNormal.
GetCross(rPlane2.m_vNormal);
255 outLinePoint = m_vNormal * fc0 + rPlane2.m_vNormal * fc1;
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
Definition: cMatrix.h:194
TYPE m[_ROWS][_COLS]
Definition: cMatrix.h:38
REL_TYPE GetPointRelation(const cVector3f &vPoint) const
Definition: cPlane.h:196
cVector3f get_MemberPoint() const noexcept
Definition: cPlane.h:148
cPlanef(const DVALUE_t *pVals) noexcept
Definition: cPlane.h:46
void InitPlanePoints(const cVector3f &v1, const cVector3f &v2, const cVector3f &v3)
Definition: cPlane.h:93
REL_TYPE
Definition: cPlane.h:30
void InitPointNormal(const cVector3f &vPoint, const cVector3f &vNormal)
Definition: cPlane.h:78
void InitPointVector(const cVector3f &vPoint, const cVector3f &vVector)
Definition: cPlane.h:88
cPlanef(const cVector3f &v1, const cVector3f &v2, const cVector3f &v3)
Definition: cPlane.h:55
void InitNormalized(const cPlanef &plane)
Definition: cPlane.h:119
cPlanef(const cVector3f &vNormal, DVALUE_t fDistFromOrigin)
Definition: cPlane.h:48
cPlanef(DVALUE_t a, DVALUE_t b, DVALUE_t c, DVALUE_t d) noexcept
Definition: cPlane.h:52
void RecalculateD(const cVector3f &vMember)
Definition: cPlane.h:219
cPlanef(const cVector3f &vPoint, const cVector3f &vNormal)
Definition: cPlane.h:60
void SetNormalized()
Definition: cPlane.h:225
cPlanef GetTransformPlane(const cMatrix4x4f &m1) const
Definition: cPlane.h:164
float GetDistanceTo(const cVector3f &vPoint) const
Definition: cPlane.h:189
void InitPlane(const cVector3f &vNormal, float fDistFromOrigin)
Definition: cPlane.h:73
cPlanef()
Definition: cPlane.h:40
void InitTransformPlane(const cPlanef &plane, const cMatrix4x4f &m1)
Definition: cPlane.h:106
void TransformNormals(const cMatrix4x4f &m)
Definition: cPlane.h:229
DVALUE_t get_DistFromOrigin() const noexcept
Definition: cPlane.h:144
const cVector3f & get_Normal() const noexcept
Getters.
Definition: cPlane.h:140
DVALUE_t GetDotCoord(const cVector3f &v) const
Definition: cPlane.h:154
bool IsFrontFacing(const cVector3f &vLookDir) const
Definition: cPlane.h:177
cPlanef(const SUPER_t &v) noexcept
Definition: cPlane.h:44
cVector3f & ref_Normal()
Definition: cPlane.h:215
cPlanef get_Normalized() const
Definition: cPlane.h:170
THIS_t GetCross(const THIS_t &rB) const
Definition: cVecT.h:621
TYPE m_z
Definition: cVecT.h:675
TYPE m_x
Definition: cVecT.h:675
TYPE w
Definition: cVecT.h:676
TYPE m_y
Definition: cVecT.h:675
TYPE get_Magnitude() const noexcept
Definition: cVecT.h:129
float DVALUE_t
Dimension value type.
Definition: cVecT.h:48
_TYPE_C GetScaled(TYPE nScale) const
Definition: cVecT.h:184
_TYPE_C get_Normalized() const
Definition: cVecT.h:283
TYPE GetDot(const THIS_t &v2) const
Definition: cVecT.h:255
Definition: cVector.h:261
static TYPE Abs(TYPE a) noexcept
similar to ABS(n) macro. Does nothing for unsigned types.