OCC 创建两个点,旋转,及设置轴镜像
#include <iostream>
// 包含必要的OpenCascade库头文件
#include "gp_Pnt.hxx" // 包含OpenCascade的点类定义
#include "gp_Ax1.hxx" // 包含OpenCascade的轴线类定义
#include "gp_Trsf.hxx" // 包含OpenCascade的变换类定义
int main()
{
// 创建两个坐标点 (x, y, z)
gp_Pnt pnt1(0.0, 0.0, 0.0);
gp_Pnt pnt2(1.0, 1.0, 1.0);
// 打印坐标
std::cout << "pnt1 coordinate (x, y, z) = " << pnt1.X() << ", " << pnt1.Y() << ", " << pnt1.Z() << std::endl;
std::cout << "pnt2 coordinate (x, y, z) = " << pnt2.X() << ", " << pnt2.Y() << ", " << pnt2.Z() << std::endl;
std::cout << "Distance between pnt1 and pnt2: " << pnt1.Distance(pnt2) << std::endl; // 计算两点之间的距离
// 将 pnt1 绕着 pnt2 旋转 90°
gp_Trsf rotation; // 创建OpenCascade的变换对象
gp_Ax1 rotationAxis(gp_Pnt(1.0, 1.0, 0.0), gp_Dir(0.0, 0.0, 1.0)); // 创建旋转轴线
rotation.SetRotation(rotationAxis, 3.1415926 / 2.0); // 设置变换为绕轴旋转90度
pnt1.Transform(rotation); // 应用变换到点
std::cout << "pnt1 after rotation: " << pnt1.X() << " " << pnt1.Y() << " " << pnt1.Z() << std::endl;
// 在y轴上镜像 pnt1 创建一个新的点
gp_Ax1 axisOfSymmetry(gp_Pnt(0.0, 0.0, 0.0), gp_Dir(0.0, 1.0, 0.0)); // 创建镜像轴线
gp_Pnt pnt3 = pnt1.Mirrored(axisOfSymmetry); // 使用镜像轴线镜像点
std::cout << "pnt3 after mirroring: " << pnt3.X() << " " << pnt3.Y() << " " << pnt3.Z() << std::endl;
return 0;
}