25 #include "dCoreStdafx.h"
29 #ifdef D_NEWTON_USE_DOUBLE
30 #define dPlane dBigPlane
39 dPlane (dFloat32 x, dFloat32 y, dFloat32 z, dFloat32 w);
42 dPlane Scale (dFloat32 s)
const;
43 dFloat32 Evalue (
const dFloat32*
const point)
const;
44 dFloat32 Evalue (
const dVector &point)
const;
45 } D_GCC_NEWTON_ALIGN_32 ;
54 dBigPlane (dFloat64 x, dFloat64 y, dFloat64 z, dFloat64 w);
58 dFloat64 Evalue (
const dFloat64*
const point)
const;
59 dFloat64 Evalue (
const dBigVector &point)
const;
62 #ifndef D_NEWTON_USE_DOUBLE
64 D_INLINE dPlane::dPlane ()
69 D_INLINE dPlane::dPlane (
const dVector& point)
74 D_INLINE dPlane::dPlane (dFloat32 x, dFloat32 y, dFloat32 z, dFloat32 w)
79 D_INLINE dPlane::dPlane (
const dVector &normal, dFloat32 distance)
86 :
dVector ((P1 - P0).CrossProduct(P2 - P0))
88 m_w = - DotProduct(P0 & dVector::m_triplexMask).GetScalar();
91 D_INLINE
dPlane dPlane::Scale (dFloat32 s)
const
96 D_INLINE dFloat32 dPlane::Evalue (
const dFloat32*
const point)
const
99 return DotProduct ((p & m_triplexMask) | m_wOne).GetScalar();
102 D_INLINE dFloat32 dPlane::Evalue (
const dVector& point)
const
104 return DotProduct ((point & m_triplexMask) | m_wOne).GetScalar();
109 D_INLINE dBigPlane::dBigPlane ()
114 D_INLINE dBigPlane::dBigPlane (
const dBigVector& point)
119 D_INLINE dBigPlane::dBigPlane (dFloat64 x, dFloat64 y, dFloat64 z, dFloat64 w)
124 D_INLINE dBigPlane::dBigPlane (
const dBigVector &normal, dFloat64 distance)
133 m_w = - DotProduct(P0 & dBigVector::m_triplexMask).GetScalar();
136 D_INLINE
dBigPlane dBigPlane::Scale (dFloat64 s)
const
138 return dBigPlane (m_x * s, m_y * s, m_z * s, m_w * s);
141 D_INLINE dFloat64 dBigPlane::Evalue (
const dFloat64*
const point)
const
143 return m_x * point[0] + m_y * point[1] + m_z * point[2] + m_w;
147 D_INLINE dFloat64 dBigPlane::Evalue (
const dBigVector &point)
const
149 return m_x * point.m_x + m_y * point.m_y + m_z * point.m_z + m_w;