Unravel Engine C++ Reference
Loading...
Searching...
No Matches
plane.cpp
Go to the documentation of this file.
1#include "plane.h"
2
3namespace math
4{
5auto plane::dot(const plane& p, const vec4& v) -> float
6{
7 return glm::dot(p.data, v);
8}
9
10auto plane::dot_coord(const plane& p, const vec3& v) -> float
11{
12 return glm::dot(vec3(p.data), v) + p.data.w;
13}
14
15auto plane::dot_normal(const plane& p, const vec3& v) -> float
16{
17 return glm::dot(vec3{p.data}, v);
18}
19
20auto plane::from_point_normal(const vec3& point, const vec3& normal) -> plane
21{
22 vec3 normalizedNormal = glm::normalize(normal);
23 return plane(normalizedNormal.x, normalizedNormal.y, normalizedNormal.z, -glm::dot(point, normalizedNormal));
24}
25
26auto plane::from_points(const vec3& v1, const vec3& v2, const vec3& v3) -> plane
27{
28 vec3 normal = glm::normalize(glm::cross(v2 - v1, v3 - v1));
29 return from_point_normal(v1, normal);
30}
31
32auto plane::mul(const plane& p, const mat4& m) -> plane
33{
34 return plane(m * p.data);
35}
36
37auto plane::normalize(const plane& p) -> plane
38{
39 float length = glm::length(vec3(p.data));
40 return plane(p.data / length);
41}
42
43auto plane::scale(const plane& p, float s) -> plane
44{
45 return plane(p.data * s);
46}
47
48auto plane::operator*(float s) const -> plane
49{
50 return plane(data * s);
51}
52
53auto plane::operator/(float s) const -> plane
54{
55 return plane(data / s);
56}
57
58auto plane::operator*=(float s) -> plane&
59{
60 data *= s;
61 return *this;
62}
63
64auto plane::operator/=(float s) -> plane&
65{
66 data /= s;
67 return *this;
68}
69
70auto plane::operator+() const -> plane
71{
72 return *this;
73}
74
75auto plane::operator-() const -> plane
76{
77 return plane(-data);
78}
79
80auto plane::operator==(const plane& p) const -> bool
81{
82 return data == p.data;
83}
84
85auto plane::operator!=(const plane& p) const -> bool
86{
87 return data != p.data;
88}
89
90auto plane::operator=(const vec4& rhs) -> plane&
91{
92 data = rhs;
93 return *this;
94}
95
96plane::plane() = default;
97
98plane::plane(const vec4& p) : data(p)
99{
100}
101
102plane::plane(float _a, float _b, float _c, float _d) : data(_a, _b, _c, _d)
103{
104}
105} // namespace math
btVector3 normal
Definition bbox.cpp:5
Storage for infinite plane.
Definition plane.h:21
auto operator=(const vec4 &rhs) -> plane &
Assignment operator from vec4.
Definition plane.cpp:90
auto operator==(const plane &p) const -> bool
Equality operator.
Definition plane.cpp:80
auto operator*=(float s) -> plane &
Multiplies and assigns the plane by a scalar value.
Definition plane.cpp:58
static auto normalize(const plane &p) -> plane
Normalizes the plane.
Definition plane.cpp:37
static auto from_point_normal(const vec3 &point, const vec3 &normal) -> plane
Creates a plane from a point and a normal.
Definition plane.cpp:20
auto operator+() const -> plane
Unary plus operator.
Definition plane.cpp:70
auto operator!=(const plane &p) const -> bool
Inequality operator.
Definition plane.cpp:85
friend auto operator*(float s, const plane &p) -> plane
Scalar multiplication for a plane.
Definition plane.h:255
auto operator/(float s) const -> plane
Divides the plane by a scalar value.
Definition plane.cpp:53
static auto from_points(const vec3 &v1, const vec3 &v2, const vec3 &v3) -> plane
Creates a plane from three points.
Definition plane.cpp:26
static auto dot_normal(const plane &p, const vec3 &v) -> float
Computes the dot product of the plane normal and a vec3.
Definition plane.cpp:15
auto operator/=(float s) -> plane &
Divides and assigns the plane by a scalar value.
Definition plane.cpp:64
plane()
Default constructor.
auto operator-() const -> plane
Unary minus operator.
Definition plane.cpp:75
static auto dot(const plane &p, const vec4 &v) -> float
Computes the dot product of the plane and a vec4.
Definition plane.cpp:5
static auto dot_coord(const plane &p, const vec3 &v) -> float
Computes the dot product of the plane and a vec3 (considering the plane's distance).
Definition plane.cpp:10
static auto mul(const plane &p, const mat4 &m) -> plane
Transforms a plane by a 4x4 matrix.
Definition plane.cpp:32
vec4 data
The components of the plane.
Definition plane.h:240
static auto scale(const plane &p, float s) -> plane
Scales the plane by a scalar value.
Definition plane.cpp:43