v0.1.0: 初始工程骨架 — 7模块 40头文件 32源文件 17文档 Apache-2.0

This commit is contained in:
ViewDesignEngine
2026-07-23 05:27:51 +00:00
commit 02d0520aa5
133 changed files with 5350 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
#pragma once
#include "vde/core/point.h"
namespace vde::core {
template <typename T>
class Plane {
public:
Plane() = default;
Plane(const Point3D& point, const Vector3D& normal)
: normal_(normal.normalized()), d_(-normal_.dot(point)) {}
Plane(const Point3D& a, const Point3D& b, const Point3D& c)
: Plane(a, (b - a).cross(c - a)) {}
[[nodiscard]] const Vector3D& normal() const { return normal_; }
[[nodiscard]] T d() const { return d_; }
[[nodiscard]] T signed_distance(const Point3D& p) const { return normal_.dot(p) + d_; }
[[nodiscard]] T distance(const Point3D& p) const { return std::abs(signed_distance(p)); }
[[nodiscard]] Point3D project(const Point3D& p) const {
return p - normal_ * signed_distance(p);
}
private:
Vector3D normal_{0,0,1};
T d_{0};
};
using Plane3D = Plane<double>;
} // namespace vde::core