CGAL通用多边形:刚性运动和面积
CGAL general polygons: rigid motions and area
为了研究这个问题,我必须处理边界由线段和圆弧组成的形状。CGAL似乎应该能够在这里帮助我:根据用户手册的这一部分,以Gps_segment_traits_2
为特征类的General_polygon_set_2
应该能够表达我需要的大多数操作,特别是交集和差异。
到目前为止,我在文档中还没有找到一种将刚性运动应用于这些形状的方法,以及一种计算结果形状面积的方法
我想我可以解决这两个问题。对于刚性运动,我可以在变换原始定义对象后重新创建形状。为了计算面积,我可以使用鞋带的各种方法,根据圆弧进行调整。手册中的例子打印了关于支撑圆的详细信息,在标题中挖掘,我发现多边形的每条曲线都有一个supporting_circle()
方法,所以我猜它实际上是Arr_circle_segment_traits_2<K>::X_monotone_curve_2
。所以我应该能够得到足够的圆信息来计算面积。我只是在使用故意的编译器错误消息来了解一些对象的类型后才在标题中发现这一点,手册只是将这些对象简单地描述为unspecified_type
。
尽管如此,这两项操作都需要相当多的工作,我很惊讶似乎没有内置的方法来完成这些操作。另一方面,CGAL通过模板参数进行自定义的方式,我可能只是缺少了一种对圆形线段有效的方法,尽管它可能不适用于其他通用多边形。你知道我能用什么快捷方式吗?
恐怕你不会喜欢我的答案。
我是CGAL的开发人员,实际上是Reg.布尔运算和Arrangement包的开发人员之一。
首先,您要求的操作不受支持。
关于面积计算,你的方法似乎是可行的。然而,对我们来说,在概念中要求这样的操作将是一项巨大的努力,因为这样我们就需要为我们支持的所有特性类实现操作。我想,总是有可能从一个开始,然后一个接一个地添加它们。我会把它列入我们的待办事项清单,但我不会把赌注押在快速交付上。。。
关于转型,答案更为复杂。正如您已经注意到的,将非精确变换应用于(精确的)几何形状(例如,排列、一般多边形集,甚至是小型线性简单凸多边形)可能是有害的。你必须想出一个精确的变换,例如,一个由精确类型的数字组成的变换矩阵——与用于表示几何元素(精确)坐标的类型相同(或至少可以相互转换)。问题自然是旋转,因为你通常从一个角度开始,并使用三角函数(例如sin()和cos())来计算旋转矩阵。假设你想旋转一个给定的角度,比如阿尔法。你需要计算阿尔法的近似值,这样sin(阿尔法)和cos(阿尔法)就是有理数,因此可以用前面提到的精确类型的数字来表示。自由函数CGAL::rational_reation_approximation()可以提供帮助。如该函数的手动输入中所述,近似基于Farey序列,如Canny和Ressler在1992年第8届SoCG上提出的有理旋转方法中所述。
祝你好运!
- 计算缩放多边形的比例,得到给定的多边形面积
- 将QGraphicsItem的移动区域限制在多边形区域内
- 重新排列单线以形成闭合多边形?
- 提升几何体:C++并集多个多边形
- 在 QT C++中绘制/操作多边形
- Maya API C++:从多边形获取材质
- 添加带有提升的多边形::p奥利贡不编译?
- 粒子系统:所有粒子都朝同一方向运动
- 使用 C++在 OpenGL 中对 3D 多边形进行纹理处理
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 如何使用增强::几何计算多边形的旋转固体体积?
- 如何组合许多连续的图像来模拟逼真的运动模糊?
- 太空入侵者 – 2D 矢量运动算法
- 从拉伸多边形构建多面体
- 使用提升几何缓冲区缩放多边形时的冗余折点
- 在虚幻引擎中使用运动控制器组件,C++而不是蓝图
- OpenCV的卡尔曼滤波器过渡矩阵如何处理时间(如t和t^2)进行运动预测?
- cgal多边形网格中的tet网格密度分级
- 如何绘制具有随机顶点数量的多边形并旋转它们
- CGAL通用多边形:刚性运动和面积