src/vertex.h

changeset 941
f895379d7fab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/vertex.h	Tue Jul 07 21:35:20 2015 +0300
@@ -0,0 +1,57 @@
+/*
+ *  LDForge: LDraw parts authoring CAD
+ *  Copyright (C) 2013 - 2015 Teemu Piippo
+ *
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include <QVector3D>
+#include <functional>
+#include "basics.h"
+
+class Matrix;
+
+enum Axis
+{
+	X,
+	Y,
+	Z
+};
+
+//
+// Derivative of QVector3D: this class is used for the vertices.
+//
+class Vertex : public QVector3D
+{
+public:
+	using ApplyFunction = std::function<void (Axis, double&)>;
+	using ApplyConstFunction = std::function<void (Axis, double)>;
+
+	Vertex();
+	Vertex (const QVector3D& a);
+	Vertex (qreal xpos, qreal ypos, qreal zpos);
+
+	void	apply (ApplyFunction func);
+	void	apply (ApplyConstFunction func) const;
+	QString	toString (bool mangled = false) const;
+	void	transform (const Matrix& matr, const Vertex& pos);
+	void	setCoordinate (Axis ax, qreal value);
+
+	bool	operator< (const Vertex& other) const;
+	double	operator[] (Axis ax) const;
+};
+
+extern const Vertex Origin;
+Q_DECLARE_METATYPE (Vertex)
\ No newline at end of file

mercurial