ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
line.h
浏览该文件的文档.
1 #pragma once
2 #include "vde/core/point.h"
3 
4 namespace vde::core {
5 
16 template <typename T>
17 class Line3D {
18 public:
20  Line3D() = default;
21 
29  : origin_(origin), direction_(direction.normalized()) {}
30 
32  [[nodiscard]] const Point3D& origin() const { return origin_; }
34  [[nodiscard]] const Vector3D& direction() const { return direction_; }
35 
42  [[nodiscard]] Point3D point_at(T t) const { return origin_ + direction_ * t; }
43 
44 private:
45  Point3D origin_{0,0,0};
46  Vector3D direction_{1,0,0};
47 };
48 
58 template <typename T>
59 class Segment3D {
60 public:
62  Segment3D() = default;
63 
70  Segment3D(const Point3D& p0, const Point3D& p1) : p0_(p0), p1_(p1) {}
71 
73  [[nodiscard]] const Point3D& p0() const { return p0_; }
75  [[nodiscard]] const Point3D& p1() const { return p1_; }
76 
81  [[nodiscard]] Vector3D direction() const { return p1_ - p0_; }
82 
87  [[nodiscard]] T length() const { return direction().norm(); }
88 
89 private:
90  Point3D p0_{0,0,0}, p1_{0,0,0};
91 };
92 
103 template <typename T>
104 class Ray3D {
105 public:
107  Ray3D() = default;
108 
116  : origin_(origin), direction_(direction.normalized()) {}
117 
119  [[nodiscard]] const Point3D& origin() const { return origin_; }
121  [[nodiscard]] const Vector3D& direction() const { return direction_; }
122 
129  [[nodiscard]] Point3D point_at(T t) const { return origin_ + direction_ * t; }
130 
131 private:
132  Point3D origin_{0,0,0};
133  Vector3D direction_{1,0,0};
134 };
135 
142 
143 } // namespace vde::core
三维无限直线
Definition: line.h:17
Line3D()=default
默认构造:原点在 (0,0,0),方向沿 X 轴
Point3D point_at(T t) const
参数方程求点
Definition: line.h:42
const Vector3D & direction() const
获取单位方向向量
Definition: line.h:34
Line3D(const Point3D &origin, const Vector3D &direction)
从原点和方向构造直线
Definition: line.h:28
const Point3D & origin() const
获取直线上的一点(原点)
Definition: line.h:32
三维射线
Definition: line.h:104
const Point3D & origin() const
获取射线起点
Definition: line.h:119
Point3D point_at(T t) const
参数方程求点(t ≥ 0)
Definition: line.h:129
Ray3D(const Point3D &origin, const Vector3D &direction)
从原点和方向构造射线
Definition: line.h:115
const Vector3D & direction() const
获取单位方向向量
Definition: line.h:121
Ray3D()=default
默认构造:原点在 (0,0,0),方向沿 X 轴
三维线段
Definition: line.h:59
T length() const
线段长度
Definition: line.h:87
Segment3D()=default
默认构造:两个端点均在原点
Segment3D(const Point3D &p0, const Point3D &p1)
从两个端点构造线段
Definition: line.h:70
const Point3D & p1() const
获取终点
Definition: line.h:75
const Point3D & p0() const
获取起点
Definition: line.h:73
Vector3D direction() const
方向向量(未归一化)
Definition: line.h:81
Definition: aabb.h:6
foundation::Vector3D Vector3D
双精度三维向量(重新导出)
Definition: point.h:49
foundation::Point3D Point3D
双精度三维点(重新导出)
Definition: point.h:31