#pragma once #include "akLinker.h" #define _USE_MATH_DEFINES #include #include namespace akCore { class akCore_DLLSPEC CakDE { public: CakDE(void); ~CakDE(void); // TODO: ¿©±â¿¡ ¸Þ¼­µå¸¦ Ãß°¡ÇÕ´Ï´Ù. public: /** * ÇÔ¼ö¸í : getMovingPostion * ÇöÁ¦ÀÇ ÁÂÇ¥·ÎºÎÅÍ ¼Óµµ¿Í ½Ã°£¸¸Å­ ¿òÁ÷¿´À»¶§ÀÇ ÁÂÇ¥ µµÃâ * Parameters: * double* posX //XÁÂÇ¥(°á°ú°ª ¹Ýȯ) * double* posY //YÁÂÇ¥(°á°ú°ª ¹Ýȯ) * double* posZ //ZÁÂÇ¥(°á°ú°ª ¹Ýȯ) * double heading //Heading(0~360) * double pitch //Pitch(0~360) * double velocity //¼Óµµ(m/s * unsigned int Framerate //ÇÁ·¹ÀÓ(Hz) * Returns: * Á¤»óÀûÀÎ °è»ê ¿Ï·á½Ã True ¹Ýȯ */ bool getMovingPostion(double* posX,double* posY,double* posZ,double heading,double pitch, double velocity, unsigned int Framerate); bool getNextPostion(double* posX,double* posY,double* posZ,double heading,double pitch, double velocity, double Dt); /** * ÇÔ¼ö¸í : getRotatePostion * ÇöÁ¦ ÁÂÇ¥·ÎºÎÅÍ Heading,Pitch¹æÇâÀ¸·Î Á¤ÇØÁø °ª¸¸Å­ ¿òÁ÷¿´À»¶§ ÁÂÇ¥ µµÃâ * Parameters: * double* posX //XÁÂÇ¥(°á°ú°ª ¹Ýȯ) * double* posY //YÁÂÇ¥(°á°ú°ª ¹Ýȯ) * double* posZ //ZÁÂÇ¥(°á°ú°ª ¹Ýȯ) * double heading //Heading(0~360) * double pitch //Pitch(0~360) * double radius //°Å¸® * Returns: * Á¤»óÀûÀÎ °è»ê ¿Ï·á½Ã True ¹Ýȯ */ bool getRotatePostion(double* posX, double* posY, double* posZ, double heading, double pitch, double radius); /** * ÇÔ¼ö¸í : getAngle3d * µÎ ÁÂÇ¥°¡ ÀÌ·ç´Â °¢À» ȯ»ê * Parameters: * double x1 // ù¹øÂ° ÁÂÇ¥ * double y1 // ù¹øÂ° ÁÂÇ¥ * double z1 // ù¹øÂ° ÁÂÇ¥ * double x2 // µÎ¹øÂ° ÁÂÇ¥ * double y2 // µÎ¹øÂ° ÁÂÇ¥ * double z2 // µÎ¹øÂ° ÁÂÇ¥ * double heading //Heading(°á°ú°ª ¹Ýȯ) * double pitch //Pitch(°á°ú°ª ¹Ýȯ) * Returns: */ void getAngle3d(double x1, double y1, double z1, double x2, double y2, double z2, double* heading, double* pitch); /** * ÇÔ¼ö¸í : AngleClosing * µÎ °¢ÀÇ °£°Ý Å©±â * Parameters: * double center // Á᫐ °¢ * double angle // ȸÀü °¢ * int option // 0Àº ¹«Á¶°Ç °¡±î¿îÂÊ °¢ * Returns: * Á߽ɰ¢°ú ȸÀü°¢ÀÇ °£°Ý ¹Ýȯ */ double GetAngleClosing(double center, double angle, int option = 0); /** * ÇÔ¼ö¸í : GetAngle360 * °¢À» 0~360µµ ȯ»ê * Parameters: * double angle // ÀÔ·Â °¢ * Returns: * 0~360µµ·Î ȯ»êµÈ °¢ */ inline double GetAngle360(double angle); /** * ÇÔ¼ö¸í : GetAngle180 * °¢À» -180~180µµ ȯ»ê * Parameters: * double angle // ÀÔ·Â °¢ * Returns: * -180~180µµ·Î ȯ»êµÈ °¢ */ static inline double GetAngle180(double angle); static void getRoate2d(double angle, double orgx,double orgy, double* x, double* y); double distance3d(double x1, double y1, double z1, double x2, double y2, double z2); void rotateposition3d(double x1,double y1, double z1, double* x2, double* y2, double* z2, double h, double p); void axisrotate( double* nx, double* ny, double* nz, double cx, double cy, double cz, double tx, double ty, double tz, double heading, double pitch, double roll ); bool missilesim(double msx, double msy, double msz, double msh, double msp, double msah, double msap, double tgx, double tgy, double tgz, double velocty, double acceleration, int FrameRate); inline static double getHeading(double x , double y); inline double RadianToDegree(double radian); inline double DegreeToRadian(double degree); inline bool GetCheckAngleRange(double p1, double stAngle, double endAngle); private: }; }