-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBasicDefine.h
More file actions
73 lines (62 loc) · 1.51 KB
/
BasicDefine.h
File metadata and controls
73 lines (62 loc) · 1.51 KB
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
#pragma once
#include "stdafx.h"
#define FPS_PERSECOND 60
#define GL_PI 3.1415f
#define MOVE_FACTOR 0.5f
#define ROTATE_FACTOR 2.0f
struct Vector2D
{
GLfloat x;
GLfloat y;
};
struct Vector3D
{
GLfloat x;
GLfloat y;
GLfloat z;
};
struct Matirx
{
Vector3D r1;
Vector3D r2;
Vector3D r3;
};
constexpr float fTransAngle = 18.0f;
inline void CreateCylinder(GLfloat centerx, GLfloat centery, GLfloat centerz, GLfloat radius, GLfloat h)
{
GLfloat x, y, angle;
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBegin(GL_TRIANGLE_FAN); //원기둥의 윗면
glNormal3f(0.0f, 0.0f, -1.0f);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex3f(centerx, centery, centerz);
for (angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI / 8.0f))
{
x = centerx + radius*sin(angle);
y = centery + radius*cos(angle);
glNormal3f(0.0f, 0.0f, -1.0f);
glVertex3f(x, y, centerz);
}
glEnd();
glBegin(GL_QUAD_STRIP); //원기둥의 옆면
for (angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI / 8.0f))
{
x = centerx + radius*sin(angle);
y = centery + radius*cos(angle);
glNormal3f(sin(angle), cos(angle), 0.0f);
glVertex3f(x, y, centerz);
glVertex3f(x, y, centerz + h);
}
glEnd();
glBegin(GL_TRIANGLE_FAN); //원기둥의 밑면
glNormal3f(0.0f, 0.0f, 1.0f);
glVertex3f(centerx, centery, centerz + h);
for (angle = (2.0f*GL_PI); angle > 0.0f; angle -= (GL_PI / 8.0f))
{
x = centerx + radius*sin(angle);
y = centery + radius*cos(angle);
glNormal3f(0.0f, 0.0f, 1.0f);
glVertex3f(x, y, centerz + h);
}
glEnd();
}