summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/glcube.cpp49
-rw-r--r--src/glcube.h13
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<GLPoint> *pointContainer, QVector<GLshort> *indexContainer)
+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());
+ 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<GLPoint> *pointContainer, QVector<GLshort> *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<GLPoint> *pointContainer, QVector<GLshort> *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<GLPoint> *pointContainer, QVector<GLshort> *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<GLPoint> *pointContainer, QVector<GLshort> *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<GLPoint> *pointContainer, QVector<GLshort> *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<GLPoint> *pointContainer, QVector<GLshort> *indexContainer);
+ virtual void makeSurface(QVector<GLPoint> *pointContainer,
+ QVector<GLshort> *indexContainer);
+
+private:
+ QVector3D m_lbb;
+ QVector3D m_rtf;
};
#endif // GLCUBE_H