123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // David Eberly, Geometric Tools, Redmond WA 98052
- // Copyright (c) 1998-2020
- // Distributed under the Boost Software License, Version 1.0.
- // https://www.boost.org/LICENSE_1_0.txt
- // https://www.geometrictools.com/License/Boost/LICENSE_1_0.txt
- // Version: 4.0.2019.08.13
- #pragma once
- #include <Mathematics/Vector.h>
- // The triangle is represented as an array of three vertices. The dimension
- // N must be 2 or larger.
- namespace WwiseGTE
- {
- template <int N, typename Real>
- class Triangle
- {
- public:
- // Construction and destruction. The default constructor sets
- // the/ vertices to (0,..,0), (1,0,...,0) and (0,1,0,...,0).
- Triangle()
- :
- v{ Vector<N, Real>::Zero(), Vector<N, Real>::Unit(0), Vector<N, Real>::Unit(1) }
- {
- }
- Triangle(Vector<N, Real> const& v0, Vector<N, Real> const& v1, Vector<N, Real> const& v2)
- :
- v{ v0, v1, v2 }
- {
- }
- Triangle(std::array<Vector<N, Real>, 3> const& inV)
- :
- v(inV)
- {
- }
- // Public member access.
- std::array<Vector<N, Real>, 3> v;
- public:
- // Comparisons to support sorted containers.
- bool operator==(Triangle const& triangle) const
- {
- return v == triangle.v;
- }
- bool operator!=(Triangle const& triangle) const
- {
- return v != triangle.v;
- }
- bool operator< (Triangle const& triangle) const
- {
- return v < triangle.v;
- }
- bool operator<=(Triangle const& triangle) const
- {
- return v <= triangle.v;
- }
- bool operator> (Triangle const& triangle) const
- {
- return v > triangle.v;
- }
- bool operator>=(Triangle const& triangle) const
- {
- return v >= triangle.v;
- }
- };
- // Template aliases for convenience.
- template <typename Real>
- using Triangle2 = Triangle<2, Real>;
- template <typename Real>
- using Triangle3 = Triangle<3, Real>;
- }
|