SDC C-Project CF Review 프로그램
kojingeun
2023-11-24 c112cf54a238afa473e7eb0ea6298e06f4957658
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#pragma once
 
 
#include "akCoreLinker.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:
    };
}