1#ifndef LINALG_UTILS_HPP
2#define LINALG_UTILS_HPP
10#include <glm/gtc/epsilon.hpp>
44 Plane(
const glm::vec3 &
n,
const glm::vec3 &point) : normal(
glm::normalize(
n)), point_on_plane(point) {}
46 Plane(
const glm::vec3 &p0,
const glm::vec3 &p1,
const glm::vec3 &p2) : point_on_plane(p0) {
47 glm::vec3 edge1 = p1 - p0;
48 glm::vec3 edge2 = p2 - p0;
49 normal = glm::normalize(glm::cross(edge1, edge2));
53 glm::vec3
get_point()
const {
return point_on_plane; }
55 float signed_distance(
const glm::vec3 &point)
const {
return glm::dot(normal, point - point_on_plane); }
61 if (glm::epsilonEqual(dist, 0.0f, eps))
68 glm::vec3 point_on_plane;
Side classify_point(const glm::vec3 &point, float eps=1e-6f) const
Definition linalg_utils.hpp:59
glm::vec3 get_point() const
Definition linalg_utils.hpp:53
float signed_distance(const glm::vec3 &point) const
Definition linalg_utils.hpp:55
Side
Definition linalg_utils.hpp:57
@ OppositeSide
Definition linalg_utils.hpp:57
@ NormalSide
Definition linalg_utils.hpp:57
@ OnPlane
Definition linalg_utils.hpp:57
Plane(const glm::vec3 &n, const glm::vec3 &point)
Definition linalg_utils.hpp:44
Plane(const glm::vec3 &p0, const glm::vec3 &p1, const glm::vec3 &p2)
Definition linalg_utils.hpp:46
glm::vec3 get_normal() const
Definition linalg_utils.hpp:52
Definition glm_printing.hpp:28
Definition linalg_utils.cpp:3
std::function< glm::vec4(const glm::vec4 &)> make_matrix_multiplier(const glm::mat4 &m)
Definition linalg_utils.cpp:5