-
Notifications
You must be signed in to change notification settings - Fork 0
/
primitives.cpp
126 lines (105 loc) · 4.28 KB
/
primitives.cpp
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
#include "primitives.h"
void Primitives::Sphere(sphere_d d)
{
glPushMatrix();
glTranslatef(d.tx, d.ty, d.tz);
glColor3f(RGB.r, RGB.g, RGB.b);
glutSolidSphere(d.radius, 32, 32);
glPopMatrix();
}
void Primitives::Cube(cube_d d)
{
glPushMatrix();
glTranslatef(d.tx, d.ty, d.tz);
glRotatef(d.theta,d.rx, d.ry, d.rz );
glColor3f(0,0.0,0.0);
glLineWidth(3);
glutWireCube(d.size);
glColor3f(0.26,0.13,0.09);
glutSolidCube(d.size);
glLineWidth(1);
glPopMatrix();
// sawp buffers called because we are using double buffering
}
void Primitives::Cylinder(cylinder_d d)
{
glPushMatrix();
glColor3f(RGB.r, RGB.g, RGB.b);
glTranslatef(d.tx,d.ty,d.tz);
glRotatef(d.theta, d.rx, d.ry, d.rz);
gluCylinder(gluNewQuadric(), d.rad_b, d.rad_t, d.height, 100, 100);
glPopMatrix();
}
void Primitives::Cuboid(cuboid_d d, bool wire = true)
{
if(wire)
{
glColor3f(RGB_wire.r, RGB_wire.g, RGB_wire.b);
glLineWidth(2);
glBegin(GL_LINES);
glVertex3f(d.x_corner, d.y_corner, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner, d.z_corner);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner, d.y_corner, d.z_corner);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner+d.width);
glEnd();
}
glColor3f(RGB.r, RGB.g, RGB.b);
glBegin(GL_QUADS);
// top
glNormal3f(0.0f, 1.0f, 0.0f);
glVertex3f(d.x_corner, d.y_corner, d.z_corner);
glVertex3f(d.x_corner, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner);
//bottom
glNormal3f(0.0f, -1.0f, 0.0f);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner);
//front
glNormal3f(0.0f, 0.0f, 1.0f);
glVertex3f(d.x_corner, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner+d.width);
//Right
glNormal3f(1.0f, 0.0f, 0.0f);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner);
//Back
glNormal3f(0.0f, 0.0f, -1.0f);
glVertex3f(d.x_corner+d.length, d.y_corner, d.z_corner);
glVertex3f(d.x_corner+d.length, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner, d.y_corner, d.z_corner);
//Left
glNormal3f(-1.0f, 0.0f, 0.0f);
glVertex3f(d.x_corner, d.y_corner, d.z_corner);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner);
glVertex3f(d.x_corner, d.y_corner-d.height, d.z_corner+d.width);
glVertex3f(d.x_corner, d.y_corner, d.z_corner+d.width);
glEnd();
}