#pragma once
|
|
|
#include "akLinker.h"
|
|
#define _USE_MATH_DEFINES
|
|
#include <math.h>
|
#include <windows.h>
|
|
|
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:
|
};
|
}
|