diff -r 2bdc3ac5e77c -r 55a55a9ec2c2 src/vertex.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/vertex.h Sun Sep 22 11:51:41 2019 +0300 @@ -0,0 +1,59 @@ +/* + * LDForge: LDraw parts authoring CAD + * Copyright (C) 2013 - 2019 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 . + */ + +#pragma once +#include +#include +#include "basics.h" + +struct Vertex +{ + qreal x; + qreal y; + qreal z; + // void transform(const class Matrix& matrix, const Vertex& pos); + Vertex transformed(const GLRotationMatrix& matrix) const; + void setCoordinate(Axis ax, qreal 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*=(qreal scalar); + Vertex operator*(qreal scalar) const; + bool operator<(const Vertex& other) const; + double& operator[](Axis ax); + double operator[](Axis ax) const; + bool operator==(const Vertex& other) const; + bool operator!=(const Vertex& other) const; + operator QVariant() const; +}; + +inline Vertex operator*(qreal scalar, const Vertex& 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); +unsigned int qHash(const Vertex& key); +Vertex operator-(const Vertex& vertex); +QDataStream& operator<<(QDataStream& out, const Vertex& vertex); +QDataStream& operator>>(QDataStream& in, Vertex& vertex);