|     59 	default: | 
    59 	default: | 
|     60 		return 0; | 
    60 		return 0; | 
|     61 	} | 
    61 	} | 
|     62 } | 
    62 } | 
|     63  | 
    63  | 
|     64 void Vertex::setCoordinate(Axis axis, ValueType value) | 
    64 void Point3D::assign(Axis axis, CoordinateType value) | 
|     65 { | 
    65 { | 
|     66 	(*this)[axis] = value; | 
    66 	this->get(axis) = value; | 
|     67 } | 
    67 } | 
|     68  | 
    68  | 
|     69 Vertex VertexFromVector(const QVector3D& vector) | 
    69 Point3D VertexFromVector(const QVector3D& vector) | 
|     70 { | 
    70 { | 
|     71 	return {vector.x(), vector.y(), vector.z()}; | 
    71 	return {vector.x(), vector.y(), vector.z()}; | 
|     72 } | 
    72 } | 
|     73  | 
    73  | 
|     74 Vertex Vertex::operator*(ValueType scalar) const | 
    74 Point3D operator*(const Point3D& point, Point3D::CoordinateType scalar) | 
|     75 { | 
    75 { | 
|     76 	return {this->x * scalar, this->y * scalar, this->z * scalar}; | 
    76 	return {point.x * scalar, point.y * scalar, point.z * scalar}; | 
|     77 } | 
    77 } | 
|     78  | 
    78  | 
|     79 Vertex& Vertex::operator+=(const QVector3D& other) | 
    79 Point3D& operator+=(Point3D& point, const QVector3D& other) | 
|     80 { | 
    80 { | 
|     81 	this->x += other.x(); | 
    81 	point.x += other.x(); | 
|     82 	this->y += other.y(); | 
    82 	point.y += other.y(); | 
|     83 	this->z += other.z(); | 
    83 	point.z += other.z(); | 
|     84 	return *this; | 
    84 	return point; | 
|     85 } | 
    85 } | 
|     86  | 
    86  | 
|     87 Vertex Vertex::operator+(const QVector3D& other) const | 
    87 Point3D operator+(Point3D point, const QVector3D& other) | 
|     88 { | 
    88 { | 
|     89 	Vertex result(*this); | 
    89 	point += other; | 
|     90 	result += other; | 
    90 	return point; | 
|     91 	return result; | 
    91 } | 
|     92 } | 
    92  | 
|     93  | 
    93  | 
|     94  | 
    94 QVector3D vertexToVector(const Point3D& vertex) | 
|     95 QVector3D vertexToVector(const Vertex& vertex) | 
        | 
|     96 { | 
    95 { | 
|     97 	return { | 
    96 	return { | 
|     98 		static_cast<float>(vertex.x), | 
    97 		static_cast<float>(vertex.x), | 
|     99 		static_cast<float>(vertex.y), | 
    98 		static_cast<float>(vertex.y), | 
|    100 		static_cast<float>(vertex.z) | 
    99 		static_cast<float>(vertex.z) | 
|    101 	}; | 
   100 	}; | 
|    102 } | 
   101 } | 
|    103  | 
   102  | 
|    104 Vertex Vertex::operator-(const QVector3D& vector) const | 
   103 Point3D operator-(Point3D point, const QVector3D& vector) | 
|    105 { | 
   104 { | 
|    106 	Vertex result = *this; | 
   105 	point -= vector; | 
|    107 	result -= vector; | 
   106 	return point; | 
|    108 	return result; | 
   107 } | 
|    109 } | 
   108  | 
|    110  | 
   109 Point3D& operator-=(Point3D& point, const QVector3D& vector) | 
|    111 Vertex& Vertex::operator-=(const QVector3D& vector) | 
   110 { | 
|    112 { | 
   111 	point.x -= vector.x(); | 
|    113 	this->x -= vector.x(); | 
   112 	point.y -= vector.y(); | 
|    114 	this->y -= vector.y(); | 
   113 	point.z -= vector.z(); | 
|    115 	this->z -= vector.z(); | 
   114 	return point; | 
|    116 	return *this; | 
   115 } | 
|    117 } | 
   116  | 
|    118  | 
   117 QVector3D operator-(const Point3D& point, const Point3D& other) | 
|    119 QVector3D Vertex::operator-(const Vertex& other) const | 
        | 
|    120 { | 
   118 { | 
|    121 	return { | 
   119 	return { | 
|    122 		static_cast<float>(this->x - other.x), | 
   120 		static_cast<float>(point.x - other.x), | 
|    123 		static_cast<float>(this->y - other.y), | 
   121 		static_cast<float>(point.y - other.y), | 
|    124 		static_cast<float>(this->z - other.z) | 
   122 		static_cast<float>(point.z - other.z) | 
|    125 	}; | 
   123 	}; | 
|    126 } | 
   124 } | 
|    127  | 
   125  | 
|    128 Vertex& Vertex::operator*=(ValueType scalar) | 
   126 Point3D& operator*=(Point3D& point, Point3D::CoordinateType scalar) | 
|    129 { | 
   127 { | 
|    130 	x *= scalar; | 
   128 	point.x *= scalar; | 
|    131 	y *= scalar; | 
   129 	point.y *= scalar; | 
|    132 	z *= scalar; | 
   130 	point.z *= scalar; | 
|    133 	return *this; | 
   131 	return point; | 
|    134 } | 
   132 } | 
|    135  | 
   133  | 
|    136 bool Vertex::operator==(const Vertex& other) const | 
   134 bool operator==(const Point3D& point, const Point3D& other) | 
|    137 { | 
   135 { | 
|    138 	return this->x == other.x and this->y == other.y and this->z == other.z; | 
   136 	return point.x == other.x and point.y == other.y and point.z == other.z; | 
|    139 } | 
   137 } | 
|    140  | 
   138  | 
|    141 bool Vertex::operator!=(const Vertex& other) const | 
   139 bool operator!=(const Point3D& point, const Point3D& other) | 
|    142 { | 
   140 { | 
|    143 	return not(*this == other); | 
   141 	return not (point == other); | 
|    144 } | 
   142 } | 
|    145  | 
   143  | 
|    146 Vertex::operator QVariant() const | 
   144 bool operator<(const Point3D& point, const Point3D& other) | 
|    147 { | 
   145 { | 
|    148 	return QVariant::fromValue<Vertex>(*this); | 
   146 	if (not qFuzzyCompare(point.x, other.x)) | 
|    149 } | 
   147 		return point.x < other.x; | 
|    150  | 
   148 	else if (not qFuzzyCompare(point.y, other.y)) | 
|    151 bool Vertex::operator<(const Vertex& other) const | 
   149 		return point.y < other.y; | 
|    152 { | 
        | 
|    153 	if (not qFuzzyCompare(this->x, other.x)) | 
        | 
|    154 		return this->x < other.x; | 
        | 
|    155 	else if (not qFuzzyCompare(this->y, other.y)) | 
        | 
|    156 		return this->y < other.y; | 
        | 
|    157 	else | 
   150 	else | 
|    158 		return this->z < other.z; | 
   151 		return point.z < other.z; | 
|    159 } | 
   152 } | 
|    160  | 
   153  | 
|    161 /* | 
   154 /* | 
|    162  * Transforms this vertex with a tranformation matrix and returns the result. | 
   155  * Transforms this vertex with a tranformation matrix and returns the result. | 
|    163  */ | 
   156  */ | 
|    164 Vertex Vertex::transformed(const GLRotationMatrix& matrix) const | 
   157 Point3D math::transform(const Point3D point, const GLRotationMatrix& matrix) | 
|    165 { | 
   158 { | 
|    166 	return { | 
   159 	return { | 
|    167 		matrix(0, 0) * this->x | 
   160 		matrix(0, 0) * point.x | 
|    168 			+ matrix(0, 1) * this->y | 
   161 			+ matrix(0, 1) * point.y | 
|    169 			+ matrix(0, 2) * this->z, | 
   162 			+ matrix(0, 2) * point.z, | 
|    170 		matrix(1, 0) * this->x | 
   163 		matrix(1, 0) * point.x | 
|    171 			+ matrix(1, 1) * this->y | 
   164 			+ matrix(1, 1) * point.y | 
|    172 			+ matrix(1, 2) * this->z, | 
   165 			+ matrix(1, 2) * point.z, | 
|    173 		matrix(2, 0) * this->x | 
   166 		matrix(2, 0) * point.x | 
|    174 			+ matrix(2, 1) * this->y | 
   167 			+ matrix(2, 1) * point.y | 
|    175 			+ matrix(2, 2) * this->z, | 
   168 			+ matrix(2, 2) * point.z, | 
|    176 	}; | 
   169 	}; | 
|    177 } | 
   170 } | 
|    178  | 
   171  | 
|    179 /* | 
   172 /* | 
|    180  * Returns the distance from one vertex to another. | 
   173  * Returns the distance from one vertex to another. | 
|    181  */ | 
   174  */ | 
|    182 qreal distance(const Vertex& one, const Vertex& other) | 
   175 qreal math::distance(const Point3D& one, const Point3D& other) | 
|    183 { | 
   176 { | 
|    184 	return (one - other).length(); | 
   177 	return (one - other).length(); | 
|    185 } | 
   178 } | 
|    186  | 
   179  | 
|    187 /* | 
   180 /* | 
|    188  * Returns a vertex with all coordinates inverted. | 
   181  * Returns a vertex with all coordinates inverted. | 
|    189  */ | 
   182  */ | 
|    190 Vertex operator-(const Vertex& vertex) | 
   183 Point3D operator-(const Point3D& vertex) | 
|    191 { | 
   184 { | 
|    192 	return {-vertex.x, -vertex.y, -vertex.z}; | 
   185 	return {-vertex.x, -vertex.y, -vertex.z}; | 
|    193 } | 
   186 } | 
|    194  | 
   187  | 
|    195 /* | 
   188 /* | 
|    196  * Inserts this vertex into a data stream. This is needed for vertices to be | 
   189  * Inserts this vertex into a data stream. This is needed for vertices to be | 
|    197  * stored in QSettings. | 
   190  * stored in QSettings. | 
|    198  */ | 
   191  */ | 
|    199 QDataStream& operator<<(QDataStream& out, const Vertex& vertex) | 
   192 QDataStream& operator<<(QDataStream& out, const Point3D& vertex) | 
|    200 { | 
   193 { | 
|    201 	return out << vertex.x << vertex.y << vertex.z; | 
   194 	return out << vertex.x << vertex.y << vertex.z; | 
|    202 } | 
   195 } | 
|    203  | 
   196  | 
|    204 /* | 
   197 /* | 
|    205  * Takes a vertex from a data stream. | 
   198  * Takes a vertex from a data stream. | 
|    206  */ | 
   199  */ | 
|    207 QDataStream& operator>>(QDataStream& in, Vertex& vertex) | 
   200 QDataStream& operator>>(QDataStream& in, Point3D& vertex) | 
|    208 { | 
   201 { | 
|    209 	return in >> vertex.x >> vertex.y >> vertex.z; | 
   202 	return in >> vertex.x >> vertex.y >> vertex.z; | 
|    210 } | 
   203 } | 
|    211  | 
   204  | 
|    212 unsigned int qHash(const Vertex& key) | 
   205 unsigned int qHash(const Point3D& key) | 
|    213 { | 
   206 { | 
|    214 	return qHash(key.x) ^ utility::rotl10(qHash(key.y)) ^ utility::rotl20(qHash(key.z)); | 
   207 	return qHash(key.x) ^ utility::rotl10(qHash(key.y)) ^ utility::rotl20(qHash(key.z)); | 
|    215 } | 
   208 } | 
|    216  | 
   209  | 
|    217 QString vertexToStringParens(const Vertex& vertex) | 
   210 QString vertexToStringParens(const Point3D& vertex) | 
|    218 { | 
   211 { | 
|    219 	return utility::format("(%1, %2, %3)", vertex.x, vertex.y, vertex.z); | 
   212 	return utility::format("(%1, %2, %3)", vertex.x, vertex.y, vertex.z); | 
|    220 } | 
   213 } |