|
|
|
|
# NurbsIntersection
|
|
|
|
|
|
|
|
|
|
NURBS 曲线-曲面求交算法。实现 NURBS 几何体之间的求交计算,支持 BVH 加速和牛顿迭代优化。
|
|
|
|
|
|
|
|
|
|
## 功能
|
|
|
|
|
|
|
|
|
|
- NURBS 曲线与曲面求交
|
|
|
|
|
- BVH(包围体层次结构)加速求交计算
|
|
|
|
|
- 牛顿迭代法精确求解交点
|
|
|
|
|
|
|
|
|
|
## 依赖
|
|
|
|
|
|
|
|
|
|
- **libigl**:几何处理与可视化(GLFW + OpenGL)
|
|
|
|
|
- **Eigen3**:线性代数
|
|
|
|
|
- **STL**:C++ 标准库
|
|
|
|
|
|
|
|
|
|
## 平台
|
|
|
|
|
|
|
|
|
|
支持 Linux 和 Windows。
|
|
|
|
|
|
|
|
|
|
## 编译
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
mkdir build && cd build
|
|
|
|
|
cmake ..
|
|
|
|
|
make
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Windows 下使用 Visual Studio:
|
|
|
|
|
```shell
|
|
|
|
|
cmake -G "Visual Studio 17 2022" ..
|
|
|
|
|
# 打开生成的 .sln 文件编译
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 运行
|
|
|
|
|
|
|
|
|
|
参考 `examples/` 目录中的示例程序。
|
|
|
|
|
|
|
|
|
|
## 目录结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
.
|
|
|
|
|
├── include/
|
|
|
|
|
│ ├── bvh.hpp # BVH 加速结构
|
|
|
|
|
│ ├── intersection.hpp # 求交核心算法
|
|
|
|
|
│ ├── newton.hpp # 牛顿迭代求解
|
|
|
|
|
│ └── show_libigl.hpp # libigl 可视化
|
|
|
|
|
├── src/ # 对应实现文件
|
|
|
|
|
├── examples/ # 示例程序
|
|
|
|
|
├── cmake/
|
|
|
|
|
│ └── libigl.cmake # libigl 自动下载
|
|
|
|
|
└── CMakeLists.txt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 作者
|
|
|
|
|
|
|
|
|
|
李采月
|