API Documentation
Loading...
Searching...
No Matches
Vertex.hpp
Go to the documentation of this file.
1/**--------------------------------------------------------------------------------------------
2Copyright (c) 2019, NDEVR LLC
3tyler.parke@ndevr.org
4 __ __ ____ _____ __ __ _______
5 | \ | | | __ \ | ___|\ \ / / | __ \
6 | \ | | | | \ \ | |___ \ \ / / | |__) |
7 | . \| | | |__/ / | |___ \ V / | _ /
8 | |\ |_|_____/__|_____|___\_/____| | \ \
9 |__| \__________________________________| \__\
10
11Subject to the terms of the Enterprise+ Agreement, NDEVR hereby grants
12Licensee a limited, non-exclusive, non-transferable, royalty-free license
13(without the right to sublicense) to use the API solely for the purpose of
14Licensee's internal development efforts to develop applications for which
15the API was provided.
16
17The above copyright notice and this permission notice shall be included in all
18copies or substantial portions of the Software.
19
20THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
21INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
22PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
23FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25DEALINGS IN THE SOFTWARE.
26
27Library: Base
28File: Vertex
29Included in API: True
30Author(s): Tyler Parke
31 *-----------------------------------------------------------------------------------------**/
32#pragma once
33#include <NDEVR/Vector.h>
34
35/**--------------------------------------------------------------------------------------------------
36Namespace: Parke
37Namespace that wraps all Logic created by Tyler Parke
38 *-----------------------------------------------------------------------------------------------**/
39
40namespace NDEVR
41{
42
43 /**--------------------------------------------------------------------------------------------------
44 Class: Vertex
45
46 \brief A vertex.
47
48 Author: Tyler Parke
49
50 Date: 2017-11-19
51 *-----------------------------------------------------------------------------------------------**/
52 template<uint01 t_dims, class t_type, class t_vector_type = Vector<t_dims, t_type>>
53 class Vertex : public t_vector_type
54 {
55 public:
56 constexpr Vertex()
57 : t_vector_type()
58 {}
59 constexpr explicit Vertex(const t_type& scaler)
60 : t_vector_type(scaler)
61 {}
62 constexpr Vertex(const t_vector_type& vector)
63 : t_vector_type(vector)
64 {}
66 : t_vector_type(vector)
67 {}
68 constexpr Vertex(const t_type x, const t_type y)
69 : t_vector_type(x, y)
70 {}
71 constexpr Vertex(t_type x, t_type y, t_type z)
72 : t_vector_type(x, y, z)
73 {}
74 constexpr Vertex(const t_type x, const t_type y, const t_type z, const t_type w)
75 : t_vector_type(x, y, z, w)
76 {}
77 constexpr explicit Vertex(const t_type(&vector)[t_dims])
78 : t_vector_type(vector)
79 {}
80 constexpr Vertex(const Vector<getMax(t_dims - 1, 0), t_type>& vector, const t_type postfix)
81 : t_vector_type(vector, postfix)
82 {}
83 constexpr Vertex(const Vector<getMax(t_dims - 2, 0), t_type>& vector, const t_type postfix_a, const t_type postfix_b)
84 : t_vector_type(vector, postfix_a, postfix_b)
85 {}
86 constexpr Vertex(const t_type prefix, const Vector<t_dims - 1, t_type>& vector)
87 : t_vector_type(prefix, vector)
88 {}
89
90
91 /**--------------------------------------------------------------------------------------------------
92 Fn: constexpr Vertex<t_new_dim, t_new_type, t_new_vector> Vertex::as(t_new_type extra_fill_value = 0) const
93
94 As the given extra fill value.
95
96 Author: Tyler Parke
97
98 Date: 2017-11-19
99
100 Parameters:
101 extra_fill_value - (Optional) The extra fill value.
102
103 Returns: A Vertex&lt;t_new_dim,t_new_type,t_new_vector&gt;
104 *-----------------------------------------------------------------------------------------------**/
105 template<uint01 t_new_dim, class t_new_type, class t_new_vector = Vector<t_new_dim, t_new_type>>
110 template<class t_new_type, class t_new_vector = Vector<t_dims, t_new_type>>
112 {
114 }
115 template<uint01 t_new_dim, class t_new_type, class t_new_vector = Vector<t_new_dim, t_new_type>>
116 constexpr Vertex<t_new_dim, t_new_type, t_new_vector> as(t_new_type extra_fill_value) const
117 {
118 return Vertex<t_new_dim, t_new_type, t_new_vector>(t_vector_type::template as<t_new_dim, t_new_type>(extra_fill_value));
119 }
120
121 /**--------------------------------------------------------------------------------------------------
122 Fn: constexpr Vertex Vertex::scale(const t_vector_type& scale,
123 const Vertex<t_dims, t_type>& center) const
124
125 Scales.
126
127 Author: Tyler Parke
128
129 Date: 2017-11-19
130
131 Parameters:
132 scale - The scale.
133 center - The center.
134
135 Returns: A Vertex.
136 *-----------------------------------------------------------------------------------------------**/
137
138 constexpr Vertex scale(const t_vector_type& scale, const Vertex<t_dims, t_type>& center) const
139 {
140 return ((*this - center) * scale) + center;
141 }
142
143 /**--------------------------------------------------------------------------------------------------
144 Fn: constexpr Vertex Vertex::scale(const t_type scale, const Vertex<t_dims, t_type>& center) const
145
146 Scales.
147
148 Author: Tyler Parke
149
150 Date: 2017-11-19
151
152 Parameters:
153 scale - The scale.
154 center - The center.
155
156 Returns: A Vertex.
157 *-----------------------------------------------------------------------------------------------**/
158
159 constexpr Vertex scale(const t_type scale, const Vertex<t_dims, t_type>& center) const
160 {
161 return ((*this - center) * scale) + center;
162 }
163
164 /**--------------------------------------------------------------------------------------------------
165 Fn: constexpr const Vertex& Vertex::center() const
166
167 Gets the center.
168
169 Author: Tyler Parke
170
171 Date: 2017-11-19
172
173 Returns: A reference to a const Vertex.
174 *-----------------------------------------------------------------------------------------------**/
175
176 constexpr const Vertex& center() const
177 {
178 return *this;
179 }
180
181 /**--------------------------------------------------------------------------------------------------
182 Fn: constexpr Vertex<t_dims, t_type, t_vector_type>& Vertex::operator=(const t_type& scaler)
183
184 Assignment operator.
185
186 Author: Tyler Parke
187
188 Date: 2017-11-19
189
190 Parameters:
191 scaler - The scaler.
192
193 Returns: A shallow copy of this object.
194 *-----------------------------------------------------------------------------------------------**/
195
196 constexpr Vertex<t_dims, t_type, t_vector_type>& operator=(const t_type& scaler)
197 {
198 t_vector_type::operator=(scaler);
199 return *this;
200 }
201
202 /**--------------------------------------------------------------------------------------------------
203 Fn: constexpr Vertex<t_dims, t_type, t_vector_type>& Vertex::operator=(const t_vector_type& vector)
204
205 Assignment operator.
206
207 Author: Tyler Parke
208
209 Date: 2017-11-19
210
211 Parameters:
212 vector - The vector.
213
214 Returns: A shallow copy of this object.
215 *-----------------------------------------------------------------------------------------------**/
216
217 constexpr Vertex<t_dims, t_type, t_vector_type>& operator=(const t_vector_type& vector)
218 {
219 t_vector_type::operator=(vector);
220 return *this;
221 }
223 {
224 t_vector_type::operator=(vector);
225 return *this;
226 }
227 };
228
229 /**--------------------------------------------------------------------------------------------------
230 Fn: Vector<t_dims, t_type> getMax(const Vector<t_dims, t_type>& v1,
231 const Vector<t_dims, t_type>& v2)
232
233 Finds the max of the given arguments.
234
235 Author: Tyler Parke
236
237 Date: 2017-11-13
238
239 Parameters:
240 v1 - The first Vector&lt;t_dims,t_type&gt;
241 v2 - The second Vector&lt;t_dims,t_type&gt;
242
243 Returns: The calculated maximum.
244 *-----------------------------------------------------------------------------------------------**/
245 template<uint01 t_dims, class t_type, class t_base>
247 {
249 for (uint01 dim = 0; dim < t_dims; dim++)
250 {
251 vec[dim] = getMax(v1[dim], v2[dim]);
252 }
253 return vec;
254 }
255
256 /**--------------------------------------------------------------------------------------------------
257 Fn: Vector<t_dims, t_type> getMin(const Vector<t_dims, t_type>& v1,
258 const Vector<t_dims, t_type>& v2)
259
260 Finds the min of the given arguments.
261
262 Author: Tyler Parke
263
264 Date: 2017-11-13
265
266 Parameters:
267 v1 - The first Vector&lt;t_dims,t_type&gt;
268 v2 - The second Vector&lt;t_dims,t_type&gt;
269
270 Returns: The calculated minimum.
271 *-----------------------------------------------------------------------------------------------**/
272 template<uint01 t_dims, class t_type, class t_base>
274 {
276 for (uint01 dim = 0; dim < t_dims; dim++)
277 {
278 vec[dim] = getMin(v1[dim], v2[dim]);
279 }
280 return vec;
281 }
282
283 /**--------------------------------------------------------------------------------------------------
284 Struct: Constant<Vertex<t_dims,t_type,t_vector_type>>
285
286 A constant.
287
288 Author: Tyler Parke
289
290 Date: 2017-11-19
291 *-----------------------------------------------------------------------------------------------**/
292 template<uint01 t_dims, class t_type, class t_vector_type>
293 struct Constant<Vertex<t_dims, t_type, t_vector_type>>
294 {
298 };
299
300 /**--------------------------------------------------------------------------------------------------
301 Fn: template<uint01 t_dims, class t_type, class t_vector_type> static constexpr bool isNaN(const Vertex<t_dims, t_type, t_vector_type>& value)
302
303 Query if 'value' is NaN.
304
305 Author: Tyler Parke
306
307 Date: 2017-11-19
308
309 Typeparams:
310 t_dims - Type of the dims.
311 t_type - Type of the type.
312 t_vector_type - Type of the vector type.
313 Parameters:
314 value - The value.
315
316 Returns: True if nan, false if not.
317 *-----------------------------------------------------------------------------------------------**/
318
319 template<uint01 t_dims, class t_type, class t_vector_type>
320 static constexpr bool isNaN(const Vertex<t_dims, t_type, t_vector_type>& value)
321 {
322 for (uint01 dim = 0; dim < t_dims; ++dim)
323 {
324 if (isNaN(value[dim]))
325 return true;
326 }
327 return false;
328 }
329
330 /**--------------------------------------------------------------------------------------------------
331 Class: Normal
332
333 A vertex.
334
335 Author: Tyler Parke
336
337 Date: 2017-11-19
338 *-----------------------------------------------------------------------------------------------**/
339 template<uint01 t_dims, class t_type, class t_vector_type = Vector<t_dims, t_type>>
340 class Ray : public t_vector_type
341 {
342 public:
343 constexpr Ray()
344 : t_vector_type()
345 {}
346 constexpr explicit Ray(const t_type& scaler)
347 : t_vector_type(scaler)
348 {}
349 constexpr Ray(const t_vector_type& vector)
350 : t_vector_type(vector)
351 {}
353 : t_vector_type(vector)
354 {}
355 constexpr Ray(const t_type x, const t_type y)
356 : t_vector_type(x, y)
357 {}
358 constexpr Ray(t_type x, t_type y, t_type z)
359 : t_vector_type(x, y, z)
360 {}
361 constexpr Ray(const t_type x, const t_type y, const t_type z, const t_type w)
362 : t_vector_type(x, y, z, w)
363 {}
364 constexpr explicit Ray(const t_type(&vector)[t_dims])
365 : t_vector_type(vector)
366 {}
367 constexpr Ray(const Vector<getMax(t_dims - 1, 0), t_type>& vector, const t_type postfix)
368 : t_vector_type(vector, postfix)
369 {}
370 constexpr Ray(const Vector<getMax(t_dims - 2, 0), t_type>& vector, const t_type postfix_a, const t_type postfix_b)
371 : t_vector_type(vector, postfix_a, postfix_b)
372 {}
373 constexpr Ray(const t_type prefix, const Vector<t_dims - 1, t_type>& vector)
374 : t_vector_type(prefix, vector)
375 {}
376
377
378 /**--------------------------------------------------------------------------------------------------
379 Fn: constexpr Vertex<t_new_dim, t_new_type, t_new_vector> Vertex::as(t_new_type extra_fill_value = 0) const
380
381 As the given extra fill value.
382
383 Author: Tyler Parke
384
385 Date: 2017-11-19
386
387 Parameters:
388 extra_fill_value - (Optional) The extra fill value.
389
390 Returns: A Vertex&lt;t_new_dim,t_new_type,t_new_vector&gt;
391 *-----------------------------------------------------------------------------------------------**/
392 template<uint01 t_new_dim, class t_new_type, class t_new_vector = Vector<t_new_dim, t_new_type>>
393 constexpr Ray<t_new_dim, t_new_type, t_new_vector> as(t_new_type extra_fill_value = 0) const
394 {
395 return Ray<t_new_dim, t_new_type, t_new_vector>(t_vector_type::template as<t_new_dim, t_new_type>(extra_fill_value));
396 }
397 template<class t_new_type, class t_new_vector = Vector<t_dims, t_new_type>>
399 {
400 return Ray<t_dims, t_new_type, t_new_vector>(t_vector_type::template as<t_new_type>());
401 }
402
403 /**--------------------------------------------------------------------------------------------------
404 Fn: constexpr Vertex Vertex::scale(const t_vector_type& scale,
405 const Vertex<t_dims, t_type>& center) const
406
407 Scales.
408
409 Author: Tyler Parke
410
411 Date: 2017-11-19
412
413 Parameters:
414 scale - The scale.
415 center - The center.
416
417 Returns: A Vertex.
418 *-----------------------------------------------------------------------------------------------**/
419
420 constexpr Ray scale(const t_vector_type& scale) const
421 {
422 return (*this * scale);
423 }
424
425 /**--------------------------------------------------------------------------------------------------
426 Fn: constexpr Vertex Vertex::scale(const t_type scale, const Vertex<t_dims, t_type>& center) const
427
428 Scales.
429
430 Author: Tyler Parke
431
432 Date: 2017-11-19
433
434 Parameters:
435 scale - The scale.
436 center - The center.
437
438 Returns: A Vertex.
439 *-----------------------------------------------------------------------------------------------**/
440
441 constexpr Ray scale(const t_type scale) const
442 {
443 return (*this * scale);
444 }
445
446
447 /**--------------------------------------------------------------------------------------------------
448 Fn: constexpr Vertex<t_dims, t_type, t_vector_type>& Vertex::operator=(const t_type& scaler)
449
450 Assignment operator.
451
452 Author: Tyler Parke
453
454 Date: 2017-11-19
455
456 Parameters:
457 scaler - The scaler.
458
459 Returns: A copy of this object.
460 *-----------------------------------------------------------------------------------------------**/
461
462 constexpr Ray<t_dims, t_type, t_vector_type>& operator=(const t_type& scaler)
463 {
464 t_vector_type::operator=(scaler);
465 return *this;
466 }
467
468 /**--------------------------------------------------------------------------------------------------
469 Fn: constexpr Vertex<t_dims, t_type, t_vector_type>& Vertex::operator=(const t_vector_type& vector)
470
471 Assignment operator.
472
473 Author: Tyler Parke
474
475 Date: 2017-11-19
476
477 Parameters:
478 vector - The vector.
479
480 Returns: A copy of this object.
481 *-----------------------------------------------------------------------------------------------**/
482
483 constexpr Ray<t_dims, t_type, t_vector_type>& operator=(const t_vector_type& vector)
484 {
485 t_vector_type::operator=(vector);
486 return *this;
487 }
489 {
490 t_vector_type::operator=(vector);
491 return *this;
492 }
493 };
494
495 /**--------------------------------------------------------------------------------------------------
496 Fn: Vector<t_dims, t_type> getMax(const Vector<t_dims, t_type>& v1,
497 const Vector<t_dims, t_type>& v2)
498
499 Finds the max of the given arguments.
500
501 Author: Tyler Parke
502
503 Date: 2017-11-13
504
505 Parameters:
506 v1 - The first Vector&lt;t_dims,t_type&gt;
507 v2 - The second Vector&lt;t_dims,t_type&gt;
508
509 Returns: The calculated maximum.
510 *-----------------------------------------------------------------------------------------------**/
511 template<uint01 t_dims, class t_type, class t_base>
513 {
515 for (uint01 dim = 0; dim < t_dims; dim++)
516 {
517 vec[dim] = getMax(abs(v1[dim]), abs(v2[dim]));
518 }
519 return vec;
520 }
521
522 /**--------------------------------------------------------------------------------------------------
523 Fn: Vector<t_dims, t_type> getMin(const Vector<t_dims, t_type>& v1,
524 const Vector<t_dims, t_type>& v2)
525
526 Finds the min of the given arguments.
527
528 Author: Tyler Parke
529
530 Date: 2017-11-13
531
532 Parameters:
533 v1 - The first Vector&lt;t_dims,t_type&gt;
534 v2 - The second Vector&lt;t_dims,t_type&gt;
535
536 Returns: The calculated minimum.
537 *-----------------------------------------------------------------------------------------------**/
538 template<uint01 t_dims, class t_type, class t_base>
540 {
542 for (uint01 dim = 0; dim < t_dims; dim++)
543 {
544 vec[dim] = getMin(abs(v1[dim]), abs(v2[dim]));
545 }
546 return vec;
547 }
548
549 /**--------------------------------------------------------------------------------------------------
550 Struct: Constant<Vertex<t_dims,t_type,t_vector_type>>
551
552 A constant.
553
554 Author: Tyler Parke
555
556 Date: 2017-11-19
557 *-----------------------------------------------------------------------------------------------**/
558 template<uint01 t_dims, class t_type, class t_vector_type>
559 struct Constant<Ray<t_dims, t_type, t_vector_type>>
560 {
562 constexpr const static Ray<t_dims, t_type, t_vector_type> Min{ 0 };
564 };
565
566 /**--------------------------------------------------------------------------------------------------
567 Fn: template<uint01 t_dims, class t_type, class t_vector_type> static constexpr bool isNaN(const Vertex<t_dims, t_type, t_vector_type>& value)
568
569 Query if 'value' is NaN.
570
571 Author: Tyler Parke
572
573 Date: 2017-11-19
574
575 Typeparams:
576 t_dims - Type of the dims.
577 t_type - Type of the type.
578 t_vector_type - Type of the vector type.
579 Parameters:
580 value - The value.
581
582 Returns: True if nan, false if not.
583 *-----------------------------------------------------------------------------------------------**/
584
585 template<uint01 t_dims, class t_type, class t_vector_type>
586 static constexpr bool isNaN(const Ray<t_dims, t_type, t_vector_type>& value)
587 {
588 for (uint01 dim = 0; dim < t_dims; ++dim)
589 {
590 if (isNaN(value[dim]))
591 return true;
592 }
593 return false;
594 }
595}
596namespace std//Define things to allow use within std libs
597{
598 template <>
599 struct hash<NDEVR::Vertex<3, NDEVR::fltp08>>
600 {
601 std::size_t operator()(const NDEVR::Vertex<3, NDEVR::fltp08>& s) const noexcept
602 {
603 std::size_t h = 0, g = 0;
604 const NDEVR::uint01* bytes = reinterpret_cast<const NDEVR::uint01*>(&s[0]);
605 for (size_t i = 0; i < 3 * sizeof(NDEVR::fltp08); i++)
606 {
607 h = (h << 4) + bytes[i];
608 g = h & 0xF0000000L;
609 if (g)
610 h ^= g >> 24;
611 h &= ~g;
612 }
613 return h;
614 }
615 };
616 template <>
617 struct hash<NDEVR::Vertex<3, NDEVR::fltp04>>
618 {
619 std::size_t operator()(const NDEVR::Vertex<3, NDEVR::fltp04>& s) const noexcept
620 {
621 std::size_t h = 0, g = 0;
622 const NDEVR::uint01* bytes = reinterpret_cast<const NDEVR::uint01*>(&s[0]);
623 for (size_t i = 0; i < 3 * sizeof(NDEVR::fltp04); i++)
624 {
625 h = (h << 4) + bytes[i];
626 g = h & 0xF0000000L;
627 if (g)
628 h ^= g >> 24;
629 h &= ~g;
630 }
631 return h;
632 }
633 };
634};
Definition Vertex.hpp:341
constexpr Ray(const t_type(&vector)[t_dims])
Definition Vertex.hpp:364
constexpr Ray(t_type x, t_type y, t_type z)
Definition Vertex.hpp:358
constexpr Ray(const Vector< getMax(t_dims - 1, 0), t_type > &vector, const t_type postfix)
Definition Vertex.hpp:367
constexpr Ray< t_dims, t_type, t_vector_type > & operator=(const t_vector_type &vector)
Definition Vertex.hpp:483
constexpr Ray(const t_type &scaler)
Definition Vertex.hpp:346
constexpr Ray(const Ray< t_dims, t_type, t_vector_type > &vector)
Definition Vertex.hpp:352
constexpr Ray(const t_type x, const t_type y, const t_type z, const t_type w)
Definition Vertex.hpp:361
constexpr Ray(const t_vector_type &vector)
Definition Vertex.hpp:349
constexpr Ray scale(const t_vector_type &scale) const
Definition Vertex.hpp:420
constexpr Ray< t_dims, t_type, t_vector_type > & operator=(const Ray< t_dims, t_type, t_vector_type > &vector)
Definition Vertex.hpp:488
constexpr Ray scale(const t_type scale) const
Definition Vertex.hpp:441
constexpr Ray< t_new_dim, t_new_type, t_new_vector > as(t_new_type extra_fill_value=0) const
Definition Vertex.hpp:393
constexpr Ray(const Vector< getMax(t_dims - 2, 0), t_type > &vector, const t_type postfix_a, const t_type postfix_b)
Definition Vertex.hpp:370
constexpr Ray(const t_type x, const t_type y)
Definition Vertex.hpp:355
constexpr Ray< t_dims, t_new_type, t_new_vector > as() const
Definition Vertex.hpp:398
constexpr Ray< t_dims, t_type, t_vector_type > & operator=(const t_type &scaler)
Definition Vertex.hpp:462
constexpr Ray()
Definition Vertex.hpp:343
constexpr Ray(const t_type prefix, const Vector< t_dims - 1, t_type > &vector)
Definition Vertex.hpp:373
An element of a vector space. An element of the real coordinate space Rn Basis vector,...
Definition Vector.hpp:62
A vertex.
Definition Vertex.hpp:54
constexpr Vertex(const t_type(&vector)[t_dims])
Definition Vertex.hpp:77
constexpr Vertex< t_new_dim, t_new_type, t_new_vector > as() const
Definition Vertex.hpp:106
constexpr Vertex scale(const t_vector_type &scale, const Vertex< t_dims, t_type > &center) const
Definition Vertex.hpp:138
constexpr Vertex(const t_type &scaler)
Definition Vertex.hpp:59
constexpr Vertex(const t_type x, const t_type y)
Definition Vertex.hpp:68
constexpr Vertex< t_new_dim, t_new_type, t_new_vector > as(t_new_type extra_fill_value) const
Definition Vertex.hpp:116
constexpr Vertex scale(const t_type scale, const Vertex< t_dims, t_type > &center) const
Definition Vertex.hpp:159
constexpr const Vertex & center() const
Definition Vertex.hpp:176
constexpr Vertex< t_dims, t_new_type, t_new_vector > as() const
Definition Vertex.hpp:111
constexpr Vertex(const Vector< getMax(t_dims - 1, 0), t_type > &vector, const t_type postfix)
Definition Vertex.hpp:80
constexpr Vertex(const t_type prefix, const Vector< t_dims - 1, t_type > &vector)
Definition Vertex.hpp:86
constexpr Vertex< t_dims, t_type, t_vector_type > & operator=(const t_vector_type &vector)
Definition Vertex.hpp:217
constexpr Vertex< t_dims, t_type, t_vector_type > & operator=(const Vertex< t_dims, t_type, t_vector_type > &vector)
Definition Vertex.hpp:222
constexpr Vertex()
Definition Vertex.hpp:56
constexpr Vertex< t_dims, t_type, t_vector_type > & operator=(const t_type &scaler)
Definition Vertex.hpp:196
constexpr Vertex(t_type x, t_type y, t_type z)
Definition Vertex.hpp:71
constexpr Vertex(const Vertex< t_dims, t_type, t_vector_type > &vector)
Definition Vertex.hpp:65
constexpr Vertex(const t_vector_type &vector)
Definition Vertex.hpp:62
constexpr Vertex(const Vector< getMax(t_dims - 2, 0), t_type > &vector, const t_type postfix_a, const t_type postfix_b)
Definition Vertex.hpp:83
constexpr Vertex(const t_type x, const t_type y, const t_type z, const t_type w)
Definition Vertex.hpp:74
Definition ACIColor.h:37
constexpr t_type getMax(const t_type &left, const t_type &right)
Finds the max of the given arguments using the > operator.
Definition BaseFunctions.hpp:116
float fltp04
Defines an alias representing a 4 byte floating-point number.
Definition BaseValues.hpp:157
uint8_t uint01
-Defines an alias representing a 1 byte, unsigned integer -Can represent exact integer values 0 throu...
Definition BaseValues.hpp:98
constexpr Angle< t_angle_type > abs(const Angle< t_angle_type > &value)
Definition AngleFunctions.h:750
double fltp08
Defines an alias representing an 8 byte floating-point number.
Definition BaseValues.hpp:181
constexpr t_type getMin(const t_type &left, const t_type &right)
Finds the minimum of the given arguments based on the < operator.
Definition BaseFunctions.hpp:67
Definition File.h:213
Definition BaseValues.hpp:272
static const t_type Min
Definition BaseValues.hpp:276
static const t_type Max
Definition BaseValues.hpp:278
static const t_type NaN
Definition BaseValues.hpp:274
std::size_t operator()(const NDEVR::Vertex< 3, NDEVR::fltp04 > &s) const noexcept
Definition Vertex.hpp:619
std::size_t operator()(const NDEVR::Vertex< 3, NDEVR::fltp08 > &s) const noexcept
Definition Vertex.hpp:601