»õ ÆÄÀÏ |
| | |
| | | #pragma once |
| | | |
| | | #include "akCoreLinker.h" |
| | | |
| | | #define _USE_MATH_DEFINES |
| | | #include <math.h> |
| | | |
| | | |
| | | |
| | | |
| | | #define KHVECTOR_HEADER(akVector3d, double) \ |
| | | class AKCORE_DLLSPEC akVector3d \ |
| | | { \ |
| | | public: \ |
| | | \ |
| | | akVector3d(); \ |
| | | akVector3d(double px,double py, double pz); \ |
| | | inline void set(double px,double py, double pz); \ |
| | | \ |
| | | inline akVector3d operator+(const akVector3d& vec3d); \ |
| | | inline akVector3d operator-(const akVector3d& vec3d); \ |
| | | inline akVector3d& operator=(const akVector3d& vec3d); \ |
| | | inline akVector3d& operator+=(const akVector3d& vec3d); \ |
| | | inline akVector3d& operator-=(const akVector3d& vec3d); \ |
| | | akVector3d operator*(float& a) \ |
| | | { \ |
| | | akVector3d returnval; \ |
| | | \ |
| | | returnval.x = x * a; \ |
| | | returnval.y = y * a; \ |
| | | returnval.z = z * a; \ |
| | | \ |
| | | return returnval; \ |
| | | }; \ |
| | | \ |
| | | akVector3d operator *(akVector3d &vec) \ |
| | | { \ |
| | | akVector3d vc; \ |
| | | vc.x = y*vec.z - z*vec.y; \ |
| | | vc.y = z*vec.x - x*vec.z; \ |
| | | vc.z = x*vec.y - y*vec.x; \ |
| | | return vc; \ |
| | | } \ |
| | | \ |
| | | double Dot(akVector3d vec) \ |
| | | { \ |
| | | return (vec.x * x + vec.y * y + vec.z * z); \ |
| | | }; \ |
| | | double Mag() \ |
| | | { \ |
| | | return sqrt(x*x+y*y); \ |
| | | }; \ |
| | | double getLength() \ |
| | | { \ |
| | | return sqrt(x*x+y*y+z*z); \ |
| | | }; \ |
| | | void Normalize() \ |
| | | { \ |
| | | double length; \ |
| | | \ |
| | | length = sqrt((x*x) + (y*y) +(z*z)); \ |
| | | if(length == 0.0f) length = 1.0f; \ |
| | | \ |
| | | x = x / length; \ |
| | | y = y / length; \ |
| | | z = z / length; \ |
| | | \ |
| | | }; \ |
| | | public: \ |
| | | double x,y,z; \ |
| | | }; |
| | | |
| | | |
| | | namespace akCore |
| | | { |
| | | class AKCORE_DLLSPEC akVector3d |
| | | { |
| | | public: |
| | | |
| | | akVector3d(); |
| | | akVector3d(double px,double py, double pz); |
| | | inline void set(double px,double py, double pz); |
| | | |
| | | inline akVector3d operator+(const akVector3d& vec3d); |
| | | inline akVector3d operator-(const akVector3d& vec3d); |
| | | inline akVector3d& operator=(const akVector3d& vec3d); |
| | | inline akVector3d& operator+=(const akVector3d& vec3d); |
| | | inline akVector3d& operator-=(const akVector3d& vec3d); |
| | | akVector3d operator*(float& a) |
| | | { |
| | | akVector3d returnval; |
| | | |
| | | returnval.x = x * a; |
| | | returnval.y = y * a; |
| | | returnval.z = z * a; |
| | | |
| | | return returnval; |
| | | }; |
| | | |
| | | akVector3d operator *(akVector3d &vec) |
| | | { |
| | | akVector3d vc; |
| | | vc.x = y*vec.z - z*vec.y; |
| | | vc.y = z*vec.x - x*vec.z; |
| | | vc.z = x*vec.y - y*vec.x; |
| | | return vc; |
| | | } |
| | | |
| | | //ë´ì |
| | | double Dot(akVector3d vec) |
| | | { |
| | | return (vec.x * x + vec.y * y + vec.z * z); |
| | | }; |
| | | double Mag() |
| | | { |
| | | return sqrt(x*x+y*y); |
| | | }; |
| | | double getLength() |
| | | { |
| | | return sqrt(x*x+y*y+z*z); |
| | | }; |
| | | void Normalize() |
| | | { |
| | | double length; |
| | | |
| | | //벡í°ì 길ì´ë¥¼ ê³ì°íë¤. |
| | | length = sqrt((x*x) + (y*y) +(z*z)); |
| | | // 길ì´ê° 0ì ê°ê¹ì´ 벡í°ìê² ì ì í ê°ì íë¹íì¬ íë¡ê·¸ë¨ì´ í주íì§ ìëë¡ íë¤. |
| | | if(length == 0.0f) length = 1.0f; |
| | | |
| | | // ê° ì±ë¶ì 벡í°ì 길ì´ë¡ ëëë©´ ë¨ì 벡í°ê° ëë¤. |
| | | x = x / length; |
| | | y = y / length; |
| | | z = z / length; |
| | | |
| | | }; |
| | | public: |
| | | double x,y,z; |
| | | }; |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | // khVector3f |
| | | KHVECTOR_HEADER(khVector3f, float) |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | class AKCORE_DLLSPEC akVector2d |
| | | { |
| | | public: |
| | | akVector2d(); |
| | | akVector2d(double px,double py); |
| | | inline void set(double px,double py); |
| | | |
| | | |
| | | |
| | | |
| | | inline akVector2d operator+(const akVector2d& vec3d); |
| | | inline akVector2d operator-(const akVector2d& vec3d); |
| | | inline akVector2d& operator=(const akVector2d& vec3d); |
| | | inline akVector2d& operator+=(const akVector2d& vec3d); |
| | | inline akVector2d& operator-=(const akVector2d& vec3d); |
| | | public: |
| | | double x,y,z; |
| | | }; |
| | | }; |