# CPP_3DSpline_Test **Repository Path**: feigeWang/cpp_3-dspline_-test ## Basic Information - **Project Name**: CPP_3DSpline_Test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-17 - **Last Updated**: 2025-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CPP_3DSpline_Test ## 项目介绍 这是一个C++三维样条插值项目,实现了线性插值和三次样条插值算法,并支持将插值结果可视化输出为PPM图像文件。 ### 主要功能 - ✅ 三维点数据的JSON读取 - ✅ 线性插值算法 - ✅ 三次样条插值算法 - ✅ PPM图像输出 - ✅ 完整的单元测试覆盖 - ✅ 异常处理和边界条件测试 ## 文件结构 ``` 项目根目录/ ├── data/ │ └── points.json # 数据文件 ├── include/ │ ├── point3d.hpp # 3D点数据结构 │ ├── linear_spline.hpp # 线性插值头文件 │ ├── cubic_spline.hpp # 三次样条头文件 │ ├── json_reader.hpp # JSON读取头文件 │ └── curve_image.hpp # 图像输出头文件 ├── src/ │ ├── main.cpp # 主程序 │ ├── point3d.cpp # 3D点实现 │ ├── linear_spline.cpp # 线性插值实现 │ ├── cubic_spline.cpp # 三次样条实现 │ ├── json_reader.cpp # JSON读取实现 │ └── curve_image.cpp # 图像输出实现 ├── test/ │ ├── test_point3d.cpp # Point3D测试 │ ├── test_linear_spline.cpp # 线性插值测试 │ ├── test_cubic_spline.cpp # 三次样条测试 │ ├── test_exceptions.cpp # 异常测试 │ ├── test_json_reader.cpp # JSON读取测试 │ └── test_image.cpp # 图像输出测试 ├── 3rdParty/ │ ├── Catch2_Single/ # Catch2测试框架 │ └── nlohmann_json/ # JSON库 ├── build/ # 编译输出目录 ├── CMakeLists.txt └── README.md ``` ## 环境要求 ### 必需软件 - **CMake** (3.10或更高版本) - **C++编译器** (支持C++17) - Windows: Visual Studio 2019+ 或 MinGW-w64 ### 推荐IDE - **Visual Studio Code** ## 详细安装和运行指南 ### 方法一:使用Visual Studio Code (推荐) #### 1. 打开项目 ##### 克隆项目 ``` git clone https://gitee.com/feigeWang/cpp_3-dspline_-test.git ``` ##### 用VS Code打开 #### 2. 配置CMake 1. 按 `Ctrl+Shift+P` 打开命令面板 2. 输入 "CMake: Configure" 3. 选择编译器 4. 等待配置完成 #### 3. 编译项目 1. 点击底部状态栏的 "Build" 按钮 2. 或按 `F7` 键 #### 4. 运行程序 **运行主程序:** 1. 按 `Ctrl+Shift+P` 2. 输入 "CMake: Run Without Debugging" 3. 选择 "CPP_3DSPLINE_TEST" **运行测试:** 1. 按 `Ctrl+Shift+P` 2. 输入 "CMake: Run Tests" 3. 或选择特定测试: - `test_point3d` - Point3D测试 - `test_linear_spline` - 线性插值测试 - `test_cubic_spline` - 三次样条测试 - `test_exceptions` - 异常测试 - `test_json_reader` - JSON读取测试 - `test_image` - 图像输出测试 ## 数据文件路径说明 ### 默认行为 程序使用相对路径读取数据文件: ```cpp auto points = read_points_from_json("../data/points.json"); ``` ### 推荐运行方式 **在 `build` 目录下运行可执行文件**,这样 `../data/points.json` 路径正好指向项目根目录下的 `data` 文件夹。 ## 测试指南 ### 运行所有测试 ```bash cd build ctest --output-on-failure ``` ### 测试覆盖范围 - ✅ **Point3D测试**: 100%方法覆盖,运算符重载测试 - ✅ **线性插值测试**: 边界值、中间值测试 - ✅ **三次样条测试**: 连续性、边界条件测试 - ✅ **异常测试**: 无效输入、边界条件处理 - ✅ **JSON读取测试**: 有效/无效JSON、数据类型转换 - ✅ **图像输出测试**: PPM格式验证、尺寸检查 ## 输出文件说明 ### 程序输出 - **插值曲线图像**: `3DSpline.ppm` (PPM格式) - **测试报告**: 控制台输出 ### 图像说明 - **红色线条**: 线性插值曲线 - **绿色线条**: 三次样条曲线 - **蓝色圆点**: 原始数据点 ## 常见问题解决 ### 1. 找不到数据文件 **问题**: `无法打开文件: ../data/points.json` **解决**: 确保在 `build` 目录下运行程序,或检查数据文件路径