曲率结构体:
struct PrincipalCurvatures{union{float principal_curvature[3];struct{float principal_curvature_x;float principal_curvature_y;float principal_curvature_z;};};float pc1 = 0.f;float pc2 = 0.f;inline constexpr PrincipalCurvatures (): PrincipalCurvatures (0.f, 0.f) {}inline constexpr PrincipalCurvatures (float _pc1, float _pc2): PrincipalCurvatures (0.f, 0.f, 0.f, _pc1, _pc2) {}inline constexpr PrincipalCurvatures (float _x, float _y, float _z): PrincipalCurvatures (_x, _y, _z, 0.f, 0.f) {}inline constexpr PrincipalCurvatures (float _x, float _y, float _z, float _pc1, float _pc2):principal_curvature_x (_x), principal_curvature_y (_y), principal_curvature_z (_z), pc1 (_pc1), pc2 (_pc2) {}friend std::ostream& operator << (std::ostream& os, const PrincipalCurvatures& p);};
在这个结构体中,principal_curvature
数组和principal_curvature_x
、principal_curvature_y
、principal_curvature_z
三个成员变量是等价的,它们都用来存储主曲率的值。
而pc1
和pc2
则是额外的成员变量,用来存储主曲率的最大值和最小值。在这个结构体中,pc1
表示主曲率的最大值,pc2
表示主曲率的最小值。