OpenMesh几何矢量运算

问题描述

OpenMesh具有其VectorT class,我相信它可以用于执行各种位置矢量运算(加法/减法,内部和外部乘积等)。是否有实际使用方法的示例?我会特别感兴趣

  1. 如何定义和初始化3D坐标矢量
  2. 如何将顶点位置(点类型)正确转换为VectorT类型,或者如何立即获取顶点位置作为VectorT类型。到目前为止,我正在使用mesh.point(vhandle),但是它返回的是Point()类型。

编辑:显然Point本身就是VectorT的一种,因为VectorT成员函数也可以在Point对象上工作。>

解决方法

使用OpenMesh本机点类型进行数学运算的示例:

  1. OpenMesh::Vec3f myVec = OpenMesh::Vec3f(0,0);

  2. float distance = (point1 - point2).norm(); 也可用:l1_norm()l8_norm()sqrnorm()

  3. Point interpolated_point = (1 - a) * point1 + a * point2;

  4. Vec3f crossProduct = vec1 % vec2;仅为Vec3(以及您提到的Point)定义

  5. Vec3f dotProduct = vec1 | vec2;