/* ========================================================================== * ÀÛ ¼º ÀÚ : À̼ø±Ô * ÀÛ ¼º ÀÏ : 2006.12.20 * ³» ¿ë : ¹ÝÁ÷¼± * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once /// ¹ÝÁ÷¼± /// ¹ÝÁ÷¼±ÀÇ ½ÃÀÛÁ¡°ú ¹æÇâÀ¸·Î Á¤ÀÇÇÑ´Ù. class cRay { public: cRay(); cRay( const NiPoint3& origin, const NiPoint3& dir ); /// ¼³Á¤ /// ¹ÝÁ÷¼±ÀÇ ¹æÇâÀº ´ÜÀ§ º¤ÅÍ¿©¾ß ÇÑ´Ù. void Set( const NiPoint3& origin, const NiPoint3& dir ); /// ½ÃÀÛÁ¡ void SetOrigin( const NiPoint3& origin ); const NiPoint3& GetOrigin() const; /// ¹æÇâ /// ¹ÝÁ÷¼±ÀÇ ¹æÇâÀº ´ÜÀ§ º¤ÅÍ¿©¾ß ÇÑ´Ù. void SetDirection( const NiPoint3& dir ); const NiPoint3& GetDirection() const; /// ±³Â÷ °Ë»ç bool IntersectTri( const NiPoint3& v0, const NiPoint3& v1, const NiPoint3& v2 ) const; bool IntersectTri( NiPoint3* out, const NiPoint3& v0, const NiPoint3& v1, const NiPoint3& v2 ) const; bool IntersectTri( NiPoint3* out, NiPoint2* uv, const NiPoint3& v0, const NiPoint3& v1, const NiPoint3& v2 ) const; protected: /// ½ÃÀÛÁ¡ NiPoint3 mOrigin; /// ¹æÇâ NiPoint3 mDirection; }; inline cRay::cRay() { } inline cRay::cRay( const NiPoint3& origin, const NiPoint3& dir ) { Set( origin, dir ); } inline void cRay::Set( const NiPoint3& origin, const NiPoint3& dir ) { this->mOrigin = origin; this->mDirection = dir; } inline void cRay::SetOrigin( const NiPoint3& origin ) { this->mOrigin = origin; } inline void cRay::SetDirection( const NiPoint3& dir ) { this->mDirection = dir; } inline const NiPoint3& cRay::GetOrigin() const { return mOrigin; } inline const NiPoint3& cRay::GetDirection() const { return mDirection; }