DNA Calib 1.1
Project brief
Public Member Functions | Private Attributes | List of all members
dnac::Triangle Class Reference

#include <Triangle.h>

Collaboration diagram for dnac::Triangle:
Collaboration graph

Public Member Functions

 Triangle (const fvec2 &a, const fvec2 &b, const fvec2 &c)
 
 Triangle (const std::array< fvec2, 3 > &vertices)
 
 Triangle (const Triangle &triangle)=default
 
Triangleoperator= (const Triangle &triangle)=default
 
 Triangle (Triangle &&)=default
 
Triangleoperator= (Triangle &&triangle)=default
 
fvec3 getBarycentricCoords (const fvec2 &point) const
 
fvec2 A () const
 
fvec2 B () const
 
fvec2 C () const
 

Private Attributes

fvec2 a
 
fvec2 v0
 
fvec2 v1
 
float d00
 
float d01
 
float d11
 
float denom
 

Constructor & Destructor Documentation

◆ Triangle() [1/4]

dnac::Triangle::Triangle ( const fvec2 a,
const fvec2 b,
const fvec2 c 
)
7 :
8 a{a_},
9 v0{b - a},
10 v1{c - a},
11 d00{tdm::dot(v0, v0)},
12 d01{tdm::dot(v0, v1)},
13 d11{tdm::dot(v1, v1)},
14 denom{d00 * d11 - d01 * d01} {
15}
float d01
Definition: Triangle.h:35
float d00
Definition: Triangle.h:34
fvec2 a
Definition: Triangle.h:31
float d11
Definition: Triangle.h:36
fvec2 v1
Definition: Triangle.h:33
fvec2 v0
Definition: Triangle.h:32
float denom
Definition: Triangle.h:37
T dot(const vec< L, T > &lhs, const vec< L, T > &rhs)
Definition: Computations.h:31

◆ Triangle() [2/4]

dnac::Triangle::Triangle ( const std::array< fvec2, 3 > &  vertices)
explicit
17 :
18 Triangle(vertices[0], vertices[1], vertices[2]) {
19}
Triangle(const fvec2 &a, const fvec2 &b, const fvec2 &c)
Definition: Triangle.cpp:7

◆ Triangle() [3/4]

dnac::Triangle::Triangle ( const Triangle triangle)
default

◆ Triangle() [4/4]

dnac::Triangle::Triangle ( Triangle &&  )
default

Member Function Documentation

◆ A()

fvec2 dnac::Triangle::A ( ) const
21 {
22 return a;
23}

References a.

◆ B()

fvec2 dnac::Triangle::B ( ) const
25 {
26 return v0 + a;
27}

References a, and v0.

◆ C()

fvec2 dnac::Triangle::C ( ) const
29 {
30 return v1 + a;
31}

References a, and v1.

◆ getBarycentricCoords()

fvec3 dnac::Triangle::getBarycentricCoords ( const fvec2 point) const
33 {
34 // Real-Time Collision Detection The Morgan Kaufmann Series, chapter 3.4 Barycentric Coordinates
35 const fvec2 v2 = point - a;
36
37 const float d20 = tdm::dot(v2, v0);
38 const float d21 = tdm::dot(v2, v1);
39
40 const float v = (d11 * d20 - d01 * d21) / denom;
41 const float w = (d00 * d21 - d01 * d20) / denom;
42 const float u = 1.0f - v - w;
43 return {u, v, w};
44}
fvec< 2 > fvec2
Definition: Types.h:50

References a, d00, d01, d11, denom, tdm::dot(), v0, and v1.

◆ operator=() [1/2]

Triangle & dnac::Triangle::operator= ( const Triangle triangle)
default

◆ operator=() [2/2]

Triangle & dnac::Triangle::operator= ( Triangle &&  triangle)
default

Member Data Documentation

◆ a

fvec2 dnac::Triangle::a
private

Referenced by A(), B(), C(), and getBarycentricCoords().

◆ d00

float dnac::Triangle::d00
private

Referenced by getBarycentricCoords().

◆ d01

float dnac::Triangle::d01
private

Referenced by getBarycentricCoords().

◆ d11

float dnac::Triangle::d11
private

Referenced by getBarycentricCoords().

◆ denom

float dnac::Triangle::denom
private

Referenced by getBarycentricCoords().

◆ v0

fvec2 dnac::Triangle::v0
private

Referenced by B(), and getBarycentricCoords().

◆ v1

fvec2 dnac::Triangle::v1
private

Referenced by C(), and getBarycentricCoords().


The documentation for this class was generated from the following files: