123456789101112131415161718192021222324 |
- #include "core/Plane.hpp"
- #include <cstdio>
- using Core::Plane;
- Plane::Plane() : abc(), d(0) {
- }
- Plane::Plane(const Vector3& a, const Vector3& b, const Vector3& c) :
- abc(cross(b - a, c - a).normalize()), d(-abc.dot(b)) {
- }
- float Plane::signedDistance(const Vector3& v) const {
- return abc.dot(v) + d;
- }
- size_t Plane::toString(char* s, size_t n) const {
- int w = snprintf(
- s, n, "(%.3f x + %.3f y + %.3f z + %.3f)", static_cast<double>(abc[0]),
- static_cast<double>(abc[1]), static_cast<double>(abc[2]),
- static_cast<double>(d));
- return w >= 0 ? static_cast<size_t>(w) : 0;
- }
|