123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #pragma once
- #include <Mathematics/Vector.h>
- namespace WwiseGTE
- {
- template <int N, typename Real>
- class Segment
- {
- public:
-
-
-
-
-
- Segment()
- {
- p[1].MakeUnit(0);
- p[0] = -p[1];
- }
- Segment(Vector<N, Real> const& p0, Vector<N, Real> const& p1)
- :
- p{ p0, p1 }
- {
- }
- Segment(std::array<Vector<N, Real>, 2> const& inP)
- :
- p(inP)
- {
- }
- Segment(Vector<N, Real> const& center, Vector<N, Real> const& direction, Real extent)
- {
- SetCenteredForm(center, direction, extent);
- }
-
- void SetCenteredForm(Vector<N, Real> const& center,
- Vector<N, Real> const& direction, Real extent)
- {
- p[0] = center - extent * direction;
- p[1] = center + extent * direction;
- }
- void GetCenteredForm(Vector<N, Real>& center,
- Vector<N, Real>& direction, Real& extent) const
- {
- center = (Real)0.5 * (p[0] + p[1]);
- direction = p[1] - p[0];
- extent = (Real)0.5 * Normalize(direction);
- }
-
- std::array<Vector<N, Real>, 2> p;
- public:
-
- bool operator==(Segment const& segment) const
- {
- return p == segment.p;
- }
- bool operator!=(Segment const& segment) const
- {
- return p != segment.p;
- }
- bool operator< (Segment const& segment) const
- {
- return p < segment.p;
- }
- bool operator<=(Segment const& segment) const
- {
- return p <= segment.p;
- }
- bool operator> (Segment const& segment) const
- {
- return p > segment.p;
- }
- bool operator>=(Segment const& segment) const
- {
- return p >= segment.p;
- }
- };
-
- template <typename Real>
- using Segment2 = Segment<2, Real>;
- template <typename Real>
- using Segment3 = Segment<3, Real>;
- }
|