diff options
Diffstat (limited to 'src/mmscene.cpp')
| -rw-r--r-- | src/mmscene.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/mmscene.cpp b/src/mmscene.cpp index b55e8ab..8b9bc86 100644 --- a/src/mmscene.cpp +++ b/src/mmscene.cpp @@ -67,3 +67,90 @@ void MMScene::drawTriangles() renderer()->disableAttributeArrays(); } +void MMScene::createCube(const QVector3D &lbb, const QVector3D &rtf) +{ + QVector3D n0 = QVector3D(0.0, 0.0, 1.0); //dummy normal + QVector3D t0 = QVector3D(0.0,0.0,0.0); //dummy texture + + // 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()); + + // Bottom plane + m_points.append(GLPoint(lbb, n0, t0, GLColorRgba::clRed)); + m_points.append(GLPoint(lbf, n0, t0, GLColorRgba::clRed)); + m_points.append(GLPoint(rbb, n0, t0, GLColorRgba::clRed)); + + m_points.append(GLPoint(rbf, n0, t0, GLColorRgba::clRed)); + m_points.append(GLPoint(lbf, n0, t0, GLColorRgba::clRed)); + m_points.append(GLPoint(rbb, n0, t0, GLColorRgba::clRed)); + + // Back plane + m_points.append(GLPoint(lbb, n0, t0, GLColorRgba::clGreen)); + m_points.append(GLPoint(rbb, n0, t0, GLColorRgba::clGreen)); + m_points.append(GLPoint(ltb, n0, t0, GLColorRgba::clGreen)); + + m_points.append(GLPoint(rtb, n0, t0, GLColorRgba::clGreen)); + m_points.append(GLPoint(rbb, n0, t0, GLColorRgba::clGreen)); + m_points.append(GLPoint(ltb, n0, t0, GLColorRgba::clGreen)); + + // Left plane + m_points.append(GLPoint(lbb, n0, t0, GLColorRgba::clBlue)); + m_points.append(GLPoint(lbf, n0, t0, GLColorRgba::clBlue)); + m_points.append(GLPoint(ltb, n0, t0, GLColorRgba::clBlue)); + + m_points.append(GLPoint(ltf, n0, t0, GLColorRgba::clBlue)); + m_points.append(GLPoint(lbf, n0, t0, GLColorRgba::clBlue)); + m_points.append(GLPoint(ltb, n0, t0, GLColorRgba::clBlue)); + + // Right plane + m_points.append(GLPoint(rbb, n0, t0, GLColorRgba::clBlue)); + m_points.append(GLPoint(rbf, n0, t0, GLColorRgba::clBlue)); + m_points.append(GLPoint(rtb, n0, t0, GLColorRgba::clBlue)); + + m_points.append(GLPoint(rtf, n0, t0, GLColorRgba::clBlue)); + m_points.append(GLPoint(rbf, n0, t0, GLColorRgba::clBlue)); + m_points.append(GLPoint(rtb, n0, t0, GLColorRgba::clBlue)); + + // Top plane + m_points.append(GLPoint(ltb, n0, t0, GLColorRgba::clRed)); + m_points.append(GLPoint(ltf, n0, t0, GLColorRgba::clRed)); + m_points.append(GLPoint(rtb, n0, t0, GLColorRgba::clRed)); + + m_points.append(GLPoint(rtf, n0, t0, GLColorRgba::clRed)); + m_points.append(GLPoint(ltf, n0, t0, GLColorRgba::clRed)); + m_points.append(GLPoint(rtb, n0, t0, GLColorRgba::clRed)); + + // Front plane + m_points.append(GLPoint(lbf, n0, t0, GLColorRgba::clGreen)); + m_points.append(GLPoint(rbf, n0, t0, GLColorRgba::clGreen)); + m_points.append(GLPoint(ltf, n0, t0, GLColorRgba::clGreen)); + + m_points.append(GLPoint(rtf, n0, t0, GLColorRgba::clGreen)); + m_points.append(GLPoint(rbf, n0, t0, GLColorRgba::clGreen)); + m_points.append(GLPoint(ltf, n0, t0, GLColorRgba::clGreen)); +} + +void MMScene::createF(double height) +{ + float stdLength = height/5.0; + createCube(QVector3D(0.0, 0.0, 0.0),QVector3D(stdLength, height, stdLength)); + createCube(QVector3D(stdLength, height, 0.0),QVector3D(3.0 * stdLength, height - 1.0 * stdLength, stdLength)); + createCube(QVector3D(stdLength, height - 2.0 * stdLength, 0.0),QVector3D(2.0 * stdLength, height - 3.0 * stdLength, stdLength)); +} + +void MMScene::drawF(double height) +{ + m_renderer->pushMvMatrix(); + + m_renderer->scale(QVector3D(10.0, 10.0, 10.0)); + + createCube(QVector3D(0.0, 0.0, 0.0), QVector3D(1.0, 1.0, 1.0)); + + m_renderer->popMvMatrix(); +} + |
