#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 *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()); // 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(); }