CGAL的3D多面体的Minkowski和

这篇具有很好参考价值的文章主要介绍了CGAL的3D多面体的Minkowski和。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CGAL的3D多面体的Minkowski和,CGAL,3d,几何学,算法

一把勺子和一颗星星的闵可夫斯基总和。  

1、介绍

CGAL的3D多面体的Minkowski和,CGAL,3d,几何学,算法

        机器人能进入房间吗?倒立机器人和障碍物的Minkowski和描述了机器人相对于障碍物的非法位置。由于Minkowski总和的边界描述了合法位置,因此机器人在外部区域和房间之间有一条路径。 

        Minkowski和在几何学中是一个重要的概念,尤其在计算几何和计算机图形学中。对于两个点集P和Q,它们的Minkowski和被定义为P⊕Q={p+q∣p∈P,q∈Q}。这个概念的应用非常广泛,例如在机器人运动规划和计算机辅助设计中都有使用。

        在图2中,展示了一个使用Minkowski和规划机器人运动的例子。我们想知道机器人的哪些位置是合法的,以及机器人从指定起始位置可以移动到哪里。如果我们将机器人和障碍物都建模为多面体,并计算机器人(关于原点反射的机器人)和障碍物的Minkowski和,那么这个Minkowski和就代表了机器人所有非法位置,即机器人与障碍物相交的所有位置。当然,这个多面体的补集描述了机器人所有合法的位置,即机器人没有与障碍物相交的所有位置。

        换句话说,通过计算Minkowski和,我们可以快速地确定机器人在其环境中可以安全到达的位置,以及需要避免与障碍物相交的位置。这在机器人导航、游戏物理引擎和许多其他领域中都是非常有用的技术。

2、分解法

        计算非凸多面体的Minkowski和的分解方法利用了凸多面体的闵可夫斯基和很容易计算的事实。它将两个多面体分解为凸块,计算凸块的所有成对Minkowski和,并合并成对和。

CGAL的3D多面体的Minkowski和,CGAL,3d,几何学,算法

该分解方法将两个输入多面体分解为凸部分,计算凸部分的所有成对Minkowski和,并合并成对和。 

        Minkowski和的计算本质上是复杂的。使用分解法,每个多面体可能被划分为二次数量的碎片,这是最坏情况下的最优解。然后最多需要进行n2m2对的求和和合并,其中n和m是两个输入多面体的复杂性(Nef_polyhedron_3的复杂性是其Vertices、Halfedges和SHalfedges的总和)。总的来说,操作在O(n3m3)时间中运行。

3、功能和限制

        这个包的编写是为了计算全维多面体的Minkowski和,即使在所谓的紧通过场景中也能计算。紧通过场景发生在机器人运动规划中,即机器人需要穿越的通道宽度与机器人自身宽度相同。在这些场景中,至少有一个多面体(障碍物或机器人)必须建模为开放集。然后,Minkowski和也将是一个开放集,并且紧通过将作为低维度的排除出现,即与周围体积相比,不是结果点集一部分的面、线或顶点。图2显示了这样一个紧通过场景。

        我们的实现使用Nef_polyhedron_3来建模输入多面体和结果多面体。Nef_polyhedron_3的实例代表三维空间的细分,包括顶点、边缘、面和体积。其中一些项目形成多面体(选定),而其他项目则代表多面体外围的体积或孔洞(未选定)。例如,单位立方体是点集[0,1]3。表示单位立方体的最小细分有8个顶点、12条边、6个面和2个体积。由顶点、边缘和面围成的体积是立方体的内部,因此被选定。立方体外围的体积不属于它,因此被未选定。顶点、边缘和面(也称为边界项)用于分隔两个体积,但也有助于表示拓扑属性。对于(封闭)单位立方体,边界项是多面体的部分,因此被选定,但对于开单位立方体[0,1)3,它们被未选定。每个项目都有自己的选择标记,这允许正确表示在布尔和拓扑操作下封闭的Nef多面体。详情请参阅第3D章Nef多面体的3D布尔操作。

        使用Nef_polyhedron_3可以模拟许多场景,而不仅仅是两个实体的Minkowski和。首先,它们可以模拟紧通过场景的输入和结果,即它们可以模拟作为输入模型所需的开放和封闭实体,并且可以模拟作为未选定面、边缘和顶点的低维排除的紧通过。我们致力于将该包扩展为适用于任意3D Nef多面体。除了两个实体的Minkowski和外,我们还添加了几个特性。目前,我们允许输入多面体由以下组成:奇异顶点、奇异边缘、没有洞的凸起表面、没有洞的凸起面、三维特征,其共面面具有共同的选择标记(这包括开放和封闭实体)

        从不同的角度来看,实现受到以下限制:

        输入多面体必须是有界的(选定的外部体积被忽略)。

        全维特征的所有共面面集必须有相同的选择标记(如果有不同的选择标记,则假定未选定)。

        低维特征的所有面必须是凸起的,并且不能有洞(非凸起的面和洞被忽略)。

        第二个限制可能看起来有点奇怪。它源于以下事实:凸多面体的Minkowski和只能处理侧面由单个面组成的聚合物。分解过程通常会产生凸部分、其相邻凸部分和外部体积之间的复杂邻接关系。然后,凸块的一侧被分解成几个面,每个面表示这些邻接关系之一。对于凸Minkowski和,我们忽略了侧面的分解,但需要找到一个共同的选择标记。如果有两个与外部体积相邻的面,但具有不同的选择标记,我们无法设置一个共同的选择标记而不破坏Minkowski和的正确性。

4、使用

        函数minkowski_sum_3()应与Exact_predicates_exact_constructions_kernel一起使用,这通常是最有效的选择,并允许浮点输入。

        以下示例代码说明了函数minkowski_sum_3()的用法。请注意,如果函数是非凸的,则输入多面体将被函数修改。因此,如果需要进一步使用它们,则需要首先进行复制。函数本身不进行复制,以尽可能减少内存使用。

  Nef_polyhedron result = CGAL::minkowski_sum_3(N0, N1);

5、其他

CGAL的3D多面体的Minkowski和,CGAL,3d,几何学,算法

沿着多边形路径移动的恒星扫过的区域。 

        使用函数minkowski_sum_3(),还可以实现其他有趣的几何运算,如滑动运算,该运算计算沿多边形路径移动的多面体扫过的点集。

        Minkowski和是这样定义的:对于两个点集A和B,Minkowski和是一个新的点集,这个点集中的每个点都是A和B中对应点的向量和。

        假设第一个点集A有10个点,记作A_1, A_2, ..., A_10。

        假设第二个点集B有8个点,记作B_1, B_2, ..., B_8。

        对于Minkowski和,每个点C_i (i=1,2,...,18) 是这样计算的:C_i = A_i + B_i。

        所以,Minkowski和的点集将包含10+8=18个点。每个点都是A和B中对应点的向量和。现在我们来计算Minkowski和的具体点。计算结果为:Minkowski和的点集有80个点。每个点是A和B中对应点的向量和。

CGAL 5.6 - 3D Minkowski Sum of Polyhedra: User Manual文章来源地址https://www.toymoban.com/news/detail-826521.html

到了这里,关于CGAL的3D多面体的Minkowski和的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CGAL的三角网格曲面脊线和脐点的近似计算(需要微分几何学的知识)

             脊线(Ridges) :在光滑曲面上,脊线是一种特殊的曲线。沿着这条曲线,曲面的一个主曲率在其曲率线上达到极值(最大或最小)。这意味着脊线是那些曲率发生突变的区域,它们在形状感知、物体识别和计算机图形学中都有重要的应用。         脐点(U

    2024年02月03日
    浏览(45)
  • CGAL-2D和3D线性几何内核-点和向量-内核扩展

    计算几何算法库(CGAL)是用c++编写的,由三个主要部分组成。第一部分是内核,它由固定大小的不可修改的几何原语对象和对这些原语对象的操作组成。这些对象既表示为独立的类(由表示类参数化,表示类指定用于计算的底层数字类型),也表示为内核类的成员(允许内核具有更

    2024年02月14日
    浏览(44)
  • CGAL的3D Alpha Shapes

            假设我们给定一个二维或三维的点集S,我们希望得到类似“这些点形成的形状”的东西。这是一个相当模糊的概念,可能有许多可能的解释,阿尔法形状就是其中之一。阿尔法形状可用于从密集的无组织数据点集进行形状重建。事实上,阿尔法形状是由一个边界

    2024年02月01日
    浏览(80)
  • 几何学小课堂:几何的发展史

    “几何”一词 geometry 源于希腊语,它是由“土地”的词根( geo )和“丈量”( metry )一词合并而成,几何最初源于对土地的丈量。 经历了三个阶段: 通过几何学确立了一年的长度。 确立角度的单位。 对新的事物不知道如何定义度量单位,总结出来的知识就难以准确描述

    2024年02月16日
    浏览(42)
  • CGAL笔记之网格生成——3D 表面网格生成

    这个包提供了一个函数模板来计算一个近似于表面的三角形网格。 网格划分算法需要仅通过 oracle 了解要划分网格的表面,该 oracle 能够判断给定线段、线或射线是否与表面相交,并计算交点(如果有)。此功能使包足够通用,可以应用于各种情况。例如,它可用于对描述为

    2024年02月10日
    浏览(48)
  • 图形几何学——圆形:圆弧与曲率

    A、B、C分别是参考线的某三个连续的离散点,abc分别是其对边。根据三角形外接圆相关性质,通过作三条边的中垂线的交点可以求得三角形的外接圆心。连接CO并延长交圆周于点D,由于 近似认为 ∣ P 1 ⃗ ∣ = ∣ P 2 P 3 ⃗ ∣ = d s |vec{P_1}| = |vec{P_2P_3}| = ds ∣ P 1 ​ ​ ∣ = ∣

    2024年04月27日
    浏览(76)
  • Core Animation实战三(图层几何学)

    // // ClockViewController.m // LayerStudyDemo // // Created by apple on 2017/9/25. // Copyright © 2017年 ZY. All rights reserved. // #import “ClockViewController.h” @interface ClockViewController () @property (weak, nonatomic) IBOutlet UILabel *hourLabel; @property (weak, nonatomic) IBOutlet UILabel *minuteLabel; @property (weak, nonatomic) IBOutlet UI

    2024年04月12日
    浏览(57)
  • 【双曲几何学 02】什么是极点和极线?

           极点和极线(Pole and polar)对于几何学,是普遍的概念。可能高中就学过,问题是在双曲几何又用到这个概念,因此,这里再次强调理解这个概念 。为后边学习双曲几何扫清障碍。         在几何学中,极点和极线分别是相对于给定圆锥截面具有唯一倒数关系的

    2024年02月10日
    浏览(47)
  • [足式机器人]Part3机构运动微分几何学分析与综合Ch03-1 空间约束曲线与约束曲面微分几何学——【读书笔记】

    本文仅供学习使用 本文参考: 《机构运动微分几何学分析与综合》-王德伦、汪伟 《微分几何》吴大任 连杆机构中的连杆与连架杆构成运动副,该运动副元素的 特征点 或 特征线 在 机架坐标系 中的 运动轨迹曲线或曲面 称为 约束曲线 或 约束曲面 ,是联系刚体运动与机构

    2024年02月11日
    浏览(51)
  • Core Animation实战三(图层几何学),【一步教学,一步到位

    //calculate hour hand angle //calculate minute hand angle CGFloat minsAngle = (components.minute / 60.0) * M_PI * 2.0; //calculate second hand angle CGFloat secsAngle = (components.second / 60.0) * M_PI * 2.0; //设置锚点 self.hourLabel.layer.anchorPoint =self.minuteLabel.layer.anchorPoint =self.secondLabel.layer.anchorPoint = CGPointMake(0.5f, 0.9f); //r

    2024年04月25日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包