#include "glcube.h" 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) { GLBody::makeSurface(pointContainer, indexContainer); QVector3D t0 = QVector3D(0.0, 0.0, 0.0); //dummy texture // Create all the vectors for caching 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 - 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(m_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(m_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(m_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(m_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(m_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(m_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(); }