diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-11-03 11:15:22 +0100 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-11-03 11:15:22 +0100 |
| commit | 4877fdb850bdc939e8d2a3efe9ccd6a383052fb3 (patch) | |
| tree | 16768c6542d9de93105e8ed323189ad8efe0b59f /src/glcube.cpp | |
| parent | 4c1c738f6dc00746bf14bec50b5dfc5b69772977 (diff) | |
| download | Multimedia-4877fdb850bdc939e8d2a3efe9ccd6a383052fb3.tar.gz Multimedia-4877fdb850bdc939e8d2a3efe9ccd6a383052fb3.zip | |
Add GLCube
Diffstat (limited to 'src/glcube.cpp')
| -rw-r--r-- | src/glcube.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/glcube.cpp b/src/glcube.cpp new file mode 100644 index 0000000..c5f9332 --- /dev/null +++ b/src/glcube.cpp @@ -0,0 +1,90 @@ +#include "glcube.h" + +GLCube::GLCube(float m_width, const GLColorRgba &m_color, const QString m_textureFile) + :GLBody(m_width, m_color, m_textureFile) +{ +} + +void GLCube::makeSurface(QVector<GLPoint> *pointContainer, QVector<GLshort> *indexContainer) +{ + GLBody::makeSurface(pointContainer, indexContainer); + + QVector3D t0 = QVector3D(0.0, 0.0, 0.0); //dummy texture + + QVector3D lbb = QVector3D(0.0, 0.0, 0.0); + QVector3D rtf = QVector3D(1.0, 1.0, 1.0); + + // Create all the vectors for caching + QVector3D lbf = QVector3D(lbb.x(), lbb.y(), rtf.z()); + QVector3D rbb = QVector3D(rtf.x(), lbb.y(), lbb.z()); + QVector3D rbf = QVector3D(rtf.x(), lbb.y(), rtf.z()); + QVector3D ltb = QVector3D(lbb.x(), rtf.y(), lbb.z()); + QVector3D ltf = QVector3D(lbb.x(), rtf.y(), rtf.z()); + QVector3D rtb = QVector3D(rtf.x(), rtf.y(), lbb.z()); + + // Calculate all normal vectors per side + QVector3D nTop = v_Y;//QVector3D::normal(ltb - rtf, rtb - ltf); + QVector3D nBottom = -v_Y;//QVector3D::normal(lbb - rbf, rbb - lbf); + QVector3D nBack = -v_Z;//QVector3D::normal(lbb - rtb, ltb - rbb); + QVector3D nFront = v_Z;//QVector3D::normal(lbf - rtf, ltf - rtf); + QVector3D nLeft = -v_X;//QVector3D::normal(lbb - ltf, lbf - ltb); + QVector3D nRight = v_X;//QVector3D::normal(rbb - rtf, rbf - rtb); + + m_firstPoint = m_points->size(); + + // Bottom plane + m_points->append(GLPoint(lbb, nBottom, t0, GLColorRgba::clRed)); + m_points->append(GLPoint(lbf, nBottom, t0, GLColorRgba::clRed)); + m_points->append(GLPoint(rbb, nBottom, t0, GLColorRgba::clRed)); + + m_points->append(GLPoint(rbf, nBottom, t0, GLColorRgba::clRed)); + m_points->append(GLPoint(lbf, nBottom, t0, GLColorRgba::clRed)); + m_points->append(GLPoint(rbb, nBottom, t0, GLColorRgba::clRed)); + + // Back plane + m_points->append(GLPoint(lbb, nBack, t0, GLColorRgba::clGreen)); + m_points->append(GLPoint(rbb, nBack, t0, GLColorRgba::clGreen)); + m_points->append(GLPoint(ltb, nBack, t0, GLColorRgba::clGreen)); + + m_points->append(GLPoint(rtb, nBack, t0, GLColorRgba::clGreen)); + m_points->append(GLPoint(rbb, nBack, t0, GLColorRgba::clGreen)); + m_points->append(GLPoint(ltb, nBack, t0, GLColorRgba::clGreen)); + + // Left plane + m_points->append(GLPoint(lbb, nLeft, t0, GLColorRgba::clBlue)); + m_points->append(GLPoint(lbf, nLeft, t0, GLColorRgba::clBlue)); + m_points->append(GLPoint(ltb, nLeft, t0, GLColorRgba::clBlue)); + + m_points->append(GLPoint(ltf, nLeft, t0, GLColorRgba::clBlue)); + m_points->append(GLPoint(lbf, nLeft, t0, GLColorRgba::clBlue)); + m_points->append(GLPoint(ltb, nLeft, t0, GLColorRgba::clBlue)); + + // Right plane + m_points->append(GLPoint(rbb, nRight, t0, GLColorRgba::clBlue)); + m_points->append(GLPoint(rbf, nRight, t0, GLColorRgba::clBlue)); + m_points->append(GLPoint(rtb, nRight, t0, GLColorRgba::clBlue)); + + m_points->append(GLPoint(rtf, nRight, t0, GLColorRgba::clBlue)); + m_points->append(GLPoint(rbf, nRight, t0, GLColorRgba::clBlue)); + m_points->append(GLPoint(rtb, nRight, t0, GLColorRgba::clBlue)); + + // Top plane + m_points->append(GLPoint(ltb, nTop, t0, GLColorRgba::clRed)); + m_points->append(GLPoint(ltf, nTop, t0, GLColorRgba::clRed)); + m_points->append(GLPoint(rtb, nTop, t0, GLColorRgba::clRed)); + + m_points->append(GLPoint(rtf, nTop, t0, GLColorRgba::clRed)); + m_points->append(GLPoint(ltf, nTop, t0, GLColorRgba::clRed)); + m_points->append(GLPoint(rtb, nTop, t0, GLColorRgba::clRed)); + + // Front plane + m_points->append(GLPoint(lbf, nFront, t0, GLColorRgba::clGreen)); + m_points->append(GLPoint(rbf, nFront, t0, GLColorRgba::clGreen)); + m_points->append(GLPoint(ltf, nFront, t0, GLColorRgba::clGreen)); + + m_points->append(GLPoint(rtf, nFront, t0, GLColorRgba::clGreen)); + m_points->append(GLPoint(rbf, nFront, t0, GLColorRgba::clGreen)); + m_points->append(GLPoint(ltf, nFront, t0, GLColorRgba::clGreen)); + + m_nextPoint = m_points->size(); +} |
