summaryrefslogtreecommitdiff
path: root/core/math/plane.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/math/plane.h')
-rw-r--r--core/math/plane.h84
1 files changed, 36 insertions, 48 deletions
diff --git a/core/math/plane.h b/core/math/plane.h
index 8235c59135..380452f6d2 100644
--- a/core/math/plane.h
+++ b/core/math/plane.h
@@ -29,64 +29,58 @@
#ifndef PLANE_H
#define PLANE_H
-
#include "vector3.h"
class Plane {
public:
-
Vector3 normal;
real_t d;
-
- void set_normal(const Vector3& p_normal);
+ void set_normal(const Vector3 &p_normal);
_FORCE_INLINE_ Vector3 get_normal() const { return normal; }; ///Point is coplanar, CMP_EPSILON for precision
void normalize();
Plane normalized() const;
- /* Plane-Point operations */
+ /* Plane-Point operations */
- _FORCE_INLINE_ Vector3 center() const { return normal*d; }
+ _FORCE_INLINE_ Vector3 center() const { return normal * d; }
Vector3 get_any_point() const;
Vector3 get_any_perpendicular_normal() const;
_FORCE_INLINE_ bool is_point_over(const Vector3 &p_point) const; ///< Point is over plane
_FORCE_INLINE_ real_t distance_to(const Vector3 &p_point) const;
- _FORCE_INLINE_ bool has_point(const Vector3 &p_point,real_t _epsilon=CMP_EPSILON) const;
+ _FORCE_INLINE_ bool has_point(const Vector3 &p_point, real_t _epsilon = CMP_EPSILON) const;
- /* intersections */
+ /* intersections */
- bool intersect_3(const Plane &p_plane1, const Plane &p_plane2, Vector3 *r_result=0) const;
- bool intersects_ray(Vector3 p_from, Vector3 p_dir, Vector3* p_intersection) const;
- bool intersects_segment(Vector3 p_begin, Vector3 p_end, Vector3* p_intersection) const;
+ bool intersect_3(const Plane &p_plane1, const Plane &p_plane2, Vector3 *r_result = 0) const;
+ bool intersects_ray(Vector3 p_from, Vector3 p_dir, Vector3 *p_intersection) const;
+ bool intersects_segment(Vector3 p_begin, Vector3 p_end, Vector3 *p_intersection) const;
- _FORCE_INLINE_ Vector3 project(const Vector3& p_point) const {
+ _FORCE_INLINE_ Vector3 project(const Vector3 &p_point) const {
return p_point - normal * distance_to(p_point);
}
- /* misc */
+ /* misc */
- Plane operator-() const { return Plane(-normal,-d); }
- bool is_almost_like(const Plane& p_plane) const;
+ Plane operator-() const { return Plane(-normal, -d); }
+ bool is_almost_like(const Plane &p_plane) const;
- _FORCE_INLINE_ bool operator==(const Plane& p_plane) const;
- _FORCE_INLINE_ bool operator!=(const Plane& p_plane) const;
+ _FORCE_INLINE_ bool operator==(const Plane &p_plane) const;
+ _FORCE_INLINE_ bool operator!=(const Plane &p_plane) const;
operator String() const;
- _FORCE_INLINE_ Plane() { d=0; }
- _FORCE_INLINE_ Plane(real_t p_a, real_t p_b, real_t p_c, real_t p_d) : normal(p_a,p_b,p_c), d(p_d) { };
+ _FORCE_INLINE_ Plane() { d = 0; }
+ _FORCE_INLINE_ Plane(real_t p_a, real_t p_b, real_t p_c, real_t p_d)
+ : normal(p_a, p_b, p_c), d(p_d){};
_FORCE_INLINE_ Plane(const Vector3 &p_normal, real_t p_d);
- _FORCE_INLINE_ Plane(const Vector3 &p_point, const Vector3& p_normal);
- _FORCE_INLINE_ Plane(const Vector3 &p_point1, const Vector3 &p_point2,const Vector3 &p_point3,ClockDirection p_dir = CLOCKWISE);
-
-
+ _FORCE_INLINE_ Plane(const Vector3 &p_point, const Vector3 &p_normal);
+ _FORCE_INLINE_ Plane(const Vector3 &p_point1, const Vector3 &p_point2, const Vector3 &p_point3, ClockDirection p_dir = CLOCKWISE);
};
-
-
bool Plane::is_point_over(const Vector3 &p_point) const {
return (normal.dot(p_point) > d);
@@ -94,53 +88,47 @@ bool Plane::is_point_over(const Vector3 &p_point) const {
real_t Plane::distance_to(const Vector3 &p_point) const {
- return (normal.dot(p_point)-d);
+ return (normal.dot(p_point) - d);
}
-bool Plane::has_point(const Vector3 &p_point,real_t _epsilon) const {
-
- real_t dist=normal.dot(p_point) - d;
- dist=ABS(dist);
- return ( dist <= _epsilon);
+bool Plane::has_point(const Vector3 &p_point, real_t _epsilon) const {
+ real_t dist = normal.dot(p_point) - d;
+ dist = ABS(dist);
+ return (dist <= _epsilon);
}
Plane::Plane(const Vector3 &p_normal, real_t p_d) {
- normal=p_normal;
- d=p_d;
+ normal = p_normal;
+ d = p_d;
}
-Plane::Plane(const Vector3 &p_point, const Vector3& p_normal) {
+Plane::Plane(const Vector3 &p_point, const Vector3 &p_normal) {
- normal=p_normal;
- d=p_normal.dot(p_point);
+ normal = p_normal;
+ d = p_normal.dot(p_point);
}
-Plane::Plane(const Vector3 &p_point1, const Vector3 &p_point2, const Vector3 &p_point3,ClockDirection p_dir) {
+Plane::Plane(const Vector3 &p_point1, const Vector3 &p_point2, const Vector3 &p_point3, ClockDirection p_dir) {
if (p_dir == CLOCKWISE)
- normal=(p_point1-p_point3).cross(p_point1-p_point2);
+ normal = (p_point1 - p_point3).cross(p_point1 - p_point2);
else
- normal=(p_point1-p_point2).cross(p_point1-p_point3);
-
+ normal = (p_point1 - p_point2).cross(p_point1 - p_point3);
normal.normalize();
d = normal.dot(p_point1);
-
-
}
-bool Plane::operator==(const Plane& p_plane) const {
+bool Plane::operator==(const Plane &p_plane) const {
- return normal==p_plane.normal && d == p_plane.d;
+ return normal == p_plane.normal && d == p_plane.d;
}
-bool Plane::operator!=(const Plane& p_plane) const {
-
- return normal!=p_plane.normal || d != p_plane.d;
+bool Plane::operator!=(const Plane &p_plane) const {
+ return normal != p_plane.normal || d != p_plane.d;
}
#endif // PLANE_H
-