Repository navigation
Expand file tree
/
Copy pathcube.cpp
More file actions
82 lines (69 loc) · 2.43 KB
/
Copy pathcube.cpp
File metadata and controls
82 lines (69 loc) · 2.43 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
74
75
76
77
78
79
80
81
82
#include "Cube.h"
#include "Matrix4.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
#include <GL/glut.h>
#include "Cube.h"
#include <math.h> /* sqrt */
const double Cube::SIDELEN = 10;
using namespace std;
Cube::Cube() {
sideLen = SIDELEN;
calcBoundingSphereRadius();
this->color = { 1, 1, 1 };
sphereOrigin = Vector3(0, 0, 0);
}
Cube::Cube(Color color) {
sideLen = SIDELEN;
calcBoundingSphereRadius();
this->color = color;
sphereOrigin = Vector3(0, 0, 0);
}
void Cube::calcBoundingSphereRadius(){
sphereRadius = sqrt(3 * sideLen * sideLen) / 2;
}
void Cube::render() {
// Pushing and popping the matrix
glBegin(GL_QUADS);
glColor3f(0.0, 1.0, 0.0); // This makes the cube green; the parameters are for red, green and blue.
// To change the color of the other faces you will need to repeat this call before each face is drawn.
// Draw front face:
glNormal3f(0.0, 0.0, 1.0);
glVertex3f(-sideLen / 2, sideLen / 2, sideLen / 2);
glVertex3f(sideLen / 2, sideLen / 2, sideLen / 2);
glVertex3f(sideLen / 2, -sideLen / 2, sideLen / 2);
glVertex3f(-sideLen / 2, -sideLen / 2, sideLen / 2);
// Draw left side:
glNormal3f(-1.0, 0.0, 0.0);
glVertex3f(-sideLen / 2, sideLen / 2, sideLen / 2);
glVertex3f(-sideLen / 2, sideLen / 2, -sideLen / 2);
glVertex3f(-sideLen / 2, -sideLen / 2, -sideLen / 2);
glVertex3f(-sideLen / 2, -sideLen / 2, sideLen / 2);
// Draw right side:
glNormal3f(1.0, 0.0, 0.0);
glVertex3f(sideLen / 2, sideLen / 2, sideLen / 2);
glVertex3f(sideLen / 2, sideLen / 2, -sideLen / 2);
glVertex3f(sideLen / 2, -sideLen / 2, -sideLen / 2);
glVertex3f(sideLen / 2, -sideLen / 2, sideLen / 2);
// Draw back face:
glNormal3f(0.0, 0.0, -1.0);
glVertex3f(-sideLen / 2, sideLen / 2, -sideLen / 2);
glVertex3f(sideLen / 2, sideLen / 2, -sideLen / 2);
glVertex3f(sideLen / 2, -sideLen / 2, -sideLen / 2);
glVertex3f(-sideLen / 2, -sideLen / 2, -sideLen / 2);
// Draw top side:
glNormal3f(0.0, 1.0, 0.0);
glVertex3f(-sideLen / 2, sideLen / 2, sideLen / 2);
glVertex3f(sideLen / 2, sideLen / 2, sideLen / 2);
glVertex3f(sideLen / 2, sideLen / 2, -sideLen / 2);
glVertex3f(-sideLen / 2, sideLen / 2, -sideLen / 2);
// Draw bottom side:
glNormal3f(0.0, -1.0, 0.0);
glVertex3f(-sideLen / 2, -sideLen / 2, -sideLen / 2);
glVertex3f(sideLen / 2, -sideLen / 2, -sideLen / 2);
glVertex3f(sideLen / 2, -sideLen / 2, sideLen / 2);
glVertex3f(-sideLen / 2, -sideLen / 2, sideLen / 2);
glEnd();
}