SDC C-Project CF Review 프로그램
LYW
2021-09-23 c77236e1522caa3e2082dd7b5b32f6c30b125172
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
124
125
126
127
128
#pragma once
 
#include "khLinker.h"
 
#define _USE_MATH_DEFINES
#include <math.h>
 
namespace KimHeart
{
    struct KIMHEART_DLLSPEC khVector3d
    {
        double pos[3];
 
        khVector3d();
        khVector3d(double x,double y, double z);
        inline void set(double x,double y, double z);
        inline double x(){return pos[0];};
        inline double y(){return pos[1];};
        inline double z(){return pos[2];};
 
        double& operator()(int index){return pos[index];};
 
        inline khVector3d operator+(const khVector3d& vec3d);
        inline khVector3d operator-(const khVector3d& vec3d);
        inline khVector3d& operator=(const khVector3d& vec3d);
        inline khVector3d& operator+=(const khVector3d& vec3d);
        inline khVector3d& operator-=(const khVector3d& vec3d);
        khVector3d operator*(float& a)
        {
            khVector3d returnval;
 
            returnval.pos[0] = pos[0] * a;
            returnval.pos[1] = pos[1] * a;
            returnval.pos[2] = pos[2] * a;
 
            return returnval;
        };
 
        khVector3d operator *(khVector3d &vec)
        {
            khVector3d vc;
            vc.pos[0] = pos[1]*vec.pos[2] - pos[2]*vec.pos[1];
            vc.pos[1] = pos[2]*vec.pos[0] - pos[0]*vec.pos[2];
            vc.pos[2] = pos[0]*vec.pos[1] - pos[1]*vec.pos[0];
            return vc;
        }
 
        float Dot(khVector3d vec)
        {
            return (float)(vec.pos[0] * pos[0] + vec.pos[1] * pos[1] + vec.pos[2] * pos[2]);
        };
        float Mag()
        {
            return (float)sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
        };
        void Normalize()
        {
            float length;
 
            //º¤ÅÍÀÇ ±æÀ̸¦ °è»êÇÑ´Ù.
            length = (float)sqrt((pos[0]*pos[0]) + (pos[1]*pos[1]) +(pos[2]*pos[2]));
            // ±æÀ̰¡ 0¿¡ °¡±î¿î º¤ÅÍ¿¡°Ô ÀýÀýÇÑ °ªÀ» Ç×´çÇÏ¿© ÇÁ·Î±×·¥ÀÌ ÆøÁÖÇÏÁö ¾Êµµ·Ï ÇÑ´Ù.
            if(length == 0.0f) length = 1.0f;
 
            // °¢ ¼ººÐÀ» º¤ÅÍÀÇ ±æÀ̷Π³ª´©¸é ´ÜÀ§ º¤ÅͰ¡ µÈ´Ù.
            pos[0] = pos[0] / length;
            pos[1] = pos[1] / length;
            pos[2] = pos[2] / length;
 
        };
    };
 
    struct KIMHEART_DLLSPEC khVector2d
    {
        double pos[2];
 
        khVector2d();
        khVector2d(double x,double y);
        inline void set(double x,double y);
        inline double x(){return pos[0];};
        inline double y(){return pos[1];};
 
        double& operator()(int index){return pos[index];};
 
        inline khVector2d operator+(const khVector2d& vec3d);
        inline khVector2d operator-(const khVector2d& vec3d);
        inline khVector2d& operator=(const khVector2d& vec3d);
        inline khVector2d& operator+=(const khVector2d& vec3d);
        inline khVector2d& operator-=(const khVector2d& vec3d);
        
    };
 
    struct KIMHEART_DLLSPEC khColor4f
    {
        float color[4];
 
        khColor4f();
        khColor4f(float R, float G, float B, float A=0.0f);
        void set(float R, float G, float B, float A=0.0f);
        inline float R(){return color[0];};
        inline float G(){return color[1];};
        inline float B(){return color[2];};
        inline float A(){return color[3];};
        inline khColor4f& operator=(const khColor4f& ksgcolor);
    };
 
    struct KIMHEART_DLLSPEC khRect
    {
        double pos[4];
 
        khRect();
        khRect(double left, double top, double right, double bottom);
        void set(double left, double top, double right, double bottom);
        inline khRect& operator=(const khRect& rect);
        inline double Left(){return pos[0];};
        inline double Top(){return pos[1];};
        inline double Right(){return pos[2];};
        inline double Bottom(){return pos[3];};
        inline double Width(){return pos[2]-pos[0];};
        inline double Height(){return pos[3]-pos[1];};
        inline void SetAlign(); //ÀÛÀº°ªÀÌ ¿ÞÂÊ, À§, Å«°ªÀÌ ¿À¸¥ÂÊ ¾Æ·¡·Î °¡°Ô ÇÑ´Ù.
        inline bool CheckAreaIn(double x, double y); //»ç°¢Çü ¿µ¿ª¿¡ x,yÆ÷ÀÎÆ®°¡ ÀÖ´ÂÁö °Ë»ç
        inline bool CheckWidthIn(double p1); //xÆ÷ÀÎÆ® °¡¿îµ¥ Á¡ÀÌ ÀÖ´ÂÁö °Ë»ç
        inline bool CheckHeightIn(double p1); //yÆ÷ÀÎÆ® °¡¿îµ¥ Á¡ÀÌ ÀÖ´ÂÁö °Ë»ç
 
 
    };
};