summaryrefslogtreecommitdiffstats
path: root/src/gldisc.cpp
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-12-14 14:52:52 +0100
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-12-14 14:52:52 +0100
commit88d5a271d2e75aef2249d450d325b84fd0e21207 (patch)
treefd728ec8d05122341ca92f1108c4ef30dafeb9cd /src/gldisc.cpp
parent704d6aad57d1dc873133da6abb20ab379c0edafc (diff)
downloadMultimedia-88d5a271d2e75aef2249d450d325b84fd0e21207.tar.gz
Multimedia-88d5a271d2e75aef2249d450d325b84fd0e21207.zip
Make the radius the real one and add one for the circles
Diffstat (limited to 'src/gldisc.cpp')
-rw-r--r--src/gldisc.cpp29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/gldisc.cpp b/src/gldisc.cpp
index 48cd8be..a2c22b5 100644
--- a/src/gldisc.cpp
+++ b/src/gldisc.cpp
@@ -1,13 +1,19 @@
#include "gldisc.h"
-GLDisc::GLDisc(double radius, double height, int sides, GLColorRgba color, QString textureFile)
- :GLBody(radius, color, textureFile)
+GLDisc::GLDisc(double radius, double height, int sides, GLColorRgba color,
+ QString textureFile)
+ : GLBody(sqrt(pow(radius, 2) + pow(0.5 * height, 2)), color, textureFile)
{
m_height = height;
m_sides = sides;
+
+ m_center = v_Z * 0.5 * m_height;
+
+ m_circleRadius = radius;
}
-void GLDisc::makeSurface(QVector<GLPoint> *pointContainer, QVector<GLshort> *indexContainer)
+void GLDisc::makeSurface(QVector<GLPoint> *pointContainer,
+ QVector<GLshort> *indexContainer)
{
GLBody::makeSurface(pointContainer, indexContainer);
@@ -15,25 +21,28 @@ void GLDisc::makeSurface(QVector<GLPoint> *pointContainer, QVector<GLshort> *ind
m_points->append(GLPoint(v_Zero, -v_Z, QVector3D(0.5, 0.5, 0.0), m_color));
- for(int side = 0; side < m_sides; side++)
+ for (int side = 0; side < m_sides; side++)
{
QVector2D tmp = calculatePoint(side * 2 * M_PI / m_sides);
QVector2D tmpTextCoo = (0.5 * tmp) + QVector2D(0.5, 0.5);
- m_points->append(GLPoint(m_radius * tmp, -v_Z, tmpTextCoo, m_color));
- m_points->append(GLPoint(m_radius * tmp, tmp, tmpTextCoo, m_color));
- m_points->append(GLPoint(QVector3D(m_radius * tmp, m_height), tmp, tmpTextCoo, m_color));
- m_points->append(GLPoint(QVector3D(m_radius * tmp, m_height), v_Z, tmpTextCoo, m_color));
+ m_points->append(GLPoint(m_circleRadius * tmp, -v_Z, tmpTextCoo, m_color));
+ m_points->append(GLPoint(m_circleRadius * tmp, tmp, tmpTextCoo, m_color));
+ m_points->append(GLPoint(QVector3D(m_circleRadius * tmp, m_height), tmp, tmpTextCoo,
+ m_color));
+ m_points->append(GLPoint(QVector3D(m_circleRadius * tmp, m_height), v_Z, tmpTextCoo,
+ m_color));
}
- m_points->append(GLPoint(m_height * v_Z, v_Z, QVector3D(0.5, 0.5, 0.0), m_color));
+ m_points->append(GLPoint(m_height * v_Z, v_Z, QVector3D(0.5, 0.5, 0.0),
+ m_color));
m_nextPoint = m_points->size();
m_firstIndex = m_indices->size();
- for(int side = 0; side < m_sides - 1; side++)
+ for (int side = 0; side < m_sides - 1; side++)
{
m_indices->append(m_firstPoint);
m_indices->append(m_firstPoint + 1 + 4 * side);