summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-10-13 10:46:42 +0200
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-10-13 10:46:42 +0200
commitf414b39a8d935b41c1d9b04b3a4642ad633c0ad0 (patch)
tree5ee0b99d4f4d28cd7c7d158a571e1c55c1c0eb9b
parent95e88a57445bfc9a192efd6f773da745e7453b65 (diff)
downloadMultimedia-f414b39a8d935b41c1d9b04b3a4642ad633c0ad0.tar.gz
Multimedia-f414b39a8d935b41c1d9b04b3a4642ad633c0ad0.zip
Add createCube function
-rw-r--r--src/glitem.cpp68
-rw-r--r--src/glitem.h7
2 files changed, 75 insertions, 0 deletions
diff --git a/src/glitem.cpp b/src/glitem.cpp
index 6e3984c..a307e38 100644
--- a/src/glitem.cpp
+++ b/src/glitem.cpp
@@ -354,6 +354,74 @@ void GLItem::drawAxes(double length)
glLineWidth(lineWidth[0]);
}
+void GLItem::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.y());
+ 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 GLItem::createAxis(double length, const QVector3D & origin, const QVector3D & axis,
const QVector3D & normal, const QVector3D & texCoord,
const GLColorRgba& color)
diff --git a/src/glitem.h b/src/glitem.h
index 268dbeb..5e60ee6 100644
--- a/src/glitem.h
+++ b/src/glitem.h
@@ -125,6 +125,13 @@ protected:
virtual void drawAxes(double length);
/**
+ * @brief createCubef Creates a cube and apends it for drawing.
+ * @param lbb The left bottom back cube vector.
+ * @param rtf The right top front cube vector.
+ */
+ virtual void createCube(const QVector3D &lbb, const QVector3D &rtf);
+
+ /**
* @brief createAxes Creates x, y and z axis with specified length starting for (0,0,0)
* @param length Axes length.
*/