src/vertex.h

changeset 18
918b6c0f8b5b
parent 17
a5111f4e6412
child 20
cef43609a374
--- a/src/vertex.h	Fri Dec 13 15:55:56 2019 +0200
+++ b/src/vertex.h	Fri Dec 13 21:35:59 2019 +0200
@@ -21,41 +21,42 @@
 #include <QVector3D>
 #include "basics.h"
 
-struct Vertex
+struct Point3D
 {
-	using ValueType = double;
-	ValueType x;
-	ValueType y;
-	ValueType z;
-	// void transform(const class Matrix& matrix, const Vertex& pos);
-	Vertex transformed(const GLRotationMatrix& matrix) const;
-	void setCoordinate(Axis ax, ValueType value);
-	Vertex& operator+=(const QVector3D& other);
-	Vertex operator+(const QVector3D& other) const;
-	QVector3D operator-(const Vertex& other) const;
-	Vertex operator-(const QVector3D& vector) const;
-	Vertex& operator-=(const QVector3D& vector);
-	Vertex& operator*=(ValueType scalar);
-	Vertex operator*(ValueType scalar) const;
-	bool operator<(const Vertex& other) const;
-	ValueType& operator[](Axis ax);
-	ValueType operator[](Axis ax) const;
-	bool operator==(const Vertex& other) const;
-	bool operator!=(const Vertex& other) const;
-	operator QVariant() const;
+	double x, y, z;
+	using CoordinateType = decltype(x);
+	void assign(Axis axis, CoordinateType value);
+	CoordinateType& get(Axis ax);
+	CoordinateType get(Axis ax) const;
 };
 
-inline Vertex operator*(qreal scalar, const Vertex& vertex)
+namespace math
+{
+	Point3D transform(const Point3D point, const GLRotationMatrix& matrix);
+	qreal distance(const Point3D& one, const Point3D& other);
+}
+
+Point3D& operator+=(Point3D &point, const QVector3D& other);
+Point3D operator+(Point3D point, const QVector3D& other);
+QVector3D operator-(const Point3D& point, const Point3D& other);
+Point3D operator-(Point3D point, const QVector3D& vector);
+Point3D& operator-=(Point3D &point, const QVector3D& vector);
+Point3D& operator*=(Point3D &point, Point3D::CoordinateType scalar);
+Point3D operator*(const Point3D &point, Point3D::CoordinateType scalar);
+bool operator<(const Point3D &point, const Point3D& other);
+bool operator==(const Point3D &point, const Point3D& other);
+bool operator!=(const Point3D &point, const Point3D& other);
+
+inline Point3D operator*(qreal scalar, const Point3D& vertex)
 {
 	return vertex * scalar;
 }
 
-Q_DECLARE_METATYPE(Vertex)
-qreal distance(const Vertex& one, const Vertex& other);
-Vertex vertexFromVector(const QVector3D& vector);
-QVector3D vertexToVector(const Vertex &vertex);
-QString vertexToStringParens(const Vertex& vertex);
-unsigned int qHash(const Vertex& key);
-Vertex operator-(const Vertex& vertex);
-QDataStream& operator<<(QDataStream& out, const Vertex& vertex);
-QDataStream& operator>>(QDataStream& in, Vertex& vertex);
+Q_DECLARE_METATYPE(Point3D)
+Point3D vertexFromVector(const QVector3D& vector);
+QVector3D vertexToVector(const Point3D &vertex);
+QString vertexToStringParens(const Point3D& vertex);
+unsigned int qHash(const Point3D& key);
+Point3D operator-(const Point3D& vertex);
+QDataStream& operator<<(QDataStream& out, const Point3D& vertex);
+QDataStream& operator>>(QDataStream& in, Point3D& vertex);

mercurial