From 80b853b74fec090df4c7b5a56f28820ab82e35ca Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Mon, 11 Jan 2016 11:52:53 +0100 Subject: Make cube dimensions changable --- src/glcube.cpp | 49 +++++++++++++++++++++++++------------------------ src/glcube.h | 13 +++++++++---- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/glcube.cpp b/src/glcube.cpp index c5f9332..a80aaba 100644 --- a/src/glcube.cpp +++ b/src/glcube.cpp @@ -1,39 +1,40 @@ #include "glcube.h" -GLCube::GLCube(float m_width, const GLColorRgba &m_color, const QString m_textureFile) - :GLBody(m_width, m_color, m_textureFile) +GLCube::GLCube(QVector3D lbb, QVector3D rtf, const GLColorRgba &m_color, + const QString m_textureFile) + : GLBody(lbb.distanceToPoint(rtf), m_color, m_textureFile) { + m_lbb = lbb; + m_rtf = rtf; } -void GLCube::makeSurface(QVector *pointContainer, QVector *indexContainer) +void GLCube::makeSurface(QVector *pointContainer, + QVector *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()); + QVector3D lbf = QVector3D(m_lbb.x(), m_lbb.y(), m_rtf.z()); + QVector3D rbb = QVector3D(m_rtf.x(), m_lbb.y(), m_lbb.z()); + QVector3D rbf = QVector3D(m_rtf.x(), m_lbb.y(), m_rtf.z()); + QVector3D ltb = QVector3D(m_lbb.x(), m_rtf.y(), m_lbb.z()); + QVector3D ltf = QVector3D(m_lbb.x(), m_rtf.y(), m_rtf.z()); + QVector3D rtb = QVector3D(m_rtf.x(), m_rtf.y(), m_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); + QVector3D nTop = v_Y;//QVector3D::normal(ltb - m_rtf, rtb - ltf); + QVector3D nBottom = -v_Y;//QVector3D::normal(m_lbb - rbf, rbb - lbf); + QVector3D nBack = -v_Z;//QVector3D::normal(m_lbb - rtb, ltb - rbb); + QVector3D nFront = v_Z;//QVector3D::normal(lbf - m_rtf, ltf - m_rtf); + QVector3D nLeft = -v_X;//QVector3D::normal(m_lbb - ltf, lbf - ltb); + QVector3D nRight = v_X;//QVector3D::normal(rbb - m_rtf, rbf - rtb); m_firstPoint = m_points->size(); // Bottom plane - m_points->append(GLPoint(lbb, nBottom, t0, GLColorRgba::clRed)); + m_points->append(GLPoint(m_lbb, nBottom, t0, GLColorRgba::clRed)); m_points->append(GLPoint(lbf, nBottom, t0, GLColorRgba::clRed)); m_points->append(GLPoint(rbb, nBottom, t0, GLColorRgba::clRed)); @@ -42,7 +43,7 @@ void GLCube::makeSurface(QVector *pointContainer, QVector *ind m_points->append(GLPoint(rbb, nBottom, t0, GLColorRgba::clRed)); // Back plane - m_points->append(GLPoint(lbb, nBack, t0, GLColorRgba::clGreen)); + m_points->append(GLPoint(m_lbb, nBack, t0, GLColorRgba::clGreen)); m_points->append(GLPoint(rbb, nBack, t0, GLColorRgba::clGreen)); m_points->append(GLPoint(ltb, nBack, t0, GLColorRgba::clGreen)); @@ -51,7 +52,7 @@ void GLCube::makeSurface(QVector *pointContainer, QVector *ind m_points->append(GLPoint(ltb, nBack, t0, GLColorRgba::clGreen)); // Left plane - m_points->append(GLPoint(lbb, nLeft, t0, GLColorRgba::clBlue)); + m_points->append(GLPoint(m_lbb, nLeft, t0, GLColorRgba::clBlue)); m_points->append(GLPoint(lbf, nLeft, t0, GLColorRgba::clBlue)); m_points->append(GLPoint(ltb, nLeft, t0, GLColorRgba::clBlue)); @@ -64,7 +65,7 @@ void GLCube::makeSurface(QVector *pointContainer, QVector *ind 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(m_rtf, nRight, t0, GLColorRgba::clBlue)); m_points->append(GLPoint(rbf, nRight, t0, GLColorRgba::clBlue)); m_points->append(GLPoint(rtb, nRight, t0, GLColorRgba::clBlue)); @@ -73,7 +74,7 @@ void GLCube::makeSurface(QVector *pointContainer, QVector *ind 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(m_rtf, nTop, t0, GLColorRgba::clRed)); m_points->append(GLPoint(ltf, nTop, t0, GLColorRgba::clRed)); m_points->append(GLPoint(rtb, nTop, t0, GLColorRgba::clRed)); @@ -82,7 +83,7 @@ void GLCube::makeSurface(QVector *pointContainer, QVector *ind 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(m_rtf, nFront, t0, GLColorRgba::clGreen)); m_points->append(GLPoint(rbf, nFront, t0, GLColorRgba::clGreen)); m_points->append(GLPoint(ltf, nFront, t0, GLColorRgba::clGreen)); diff --git a/src/glcube.h b/src/glcube.h index c2b7e14..de399a3 100644 --- a/src/glcube.h +++ b/src/glcube.h @@ -6,11 +6,16 @@ class GLCube : public GLBody { public: - GLCube(float m_width = 1.0, const GLColorRgba & m_color = GLColorRgba::clBlue, const QString m_textureFile = ""); + GLCube(QVector3D lbb = QVector3D(0.0, 0.0, 0.0), QVector3D rtf = QVector3D(1.0, + 1.0, 1.0), const GLColorRgba & m_color = GLColorRgba::clBlue, + const QString m_textureFile = ""); - // GLBody interface -public: - virtual void makeSurface(QVector *pointContainer, QVector *indexContainer); + virtual void makeSurface(QVector *pointContainer, + QVector *indexContainer); + +private: + QVector3D m_lbb; + QVector3D m_rtf; }; #endif // GLCUBE_H -- cgit v1.2.3-70-g09d2