草图几何约束——图论法(一)

这篇具有很好参考价值的文章主要介绍了草图几何约束——图论法(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在几何约束问题中,基于图论求解图元约束状态的方法。其基本思想是将几何约束问题表示成几何约束图。通过约束图中顶点与顶点通过边连接的关系来定义几何图形的状态。这种方法可以更好的处理完全约束与过约束问题。

理论相关

以下内容中部分术语可能在不同的文献里面有不同的定义与称呼,但大同小异。其中部分内容属于属于应用实践中总结而出不代表权威性,需谨慎阅读。

一、基础定义

在开始前,先来确定一些基本概念。
1、几何约束系统用约束图G来表示,其中V代表顶点的集合,E代表约束的集合。
G ( V , E ) G(V,E) G(V,E)
2、视图的基础图元在约束图中被视为特征顶点。
v ∈ V v \in V vV
3、为特征顶点添加施加的几何约束在约束途中被视为边或环。
e ∈ E e \in E eE
4、根据约束作用的对象数量分为一元约束、二元约束、多元约束(可视为二元约束的推广)。

一元约束:

约束 描述
H_RING 水平
V_RING 垂直
R_RING 半径
FIX_RING 固定

二元约束:

约束 描述
POINT_COINCIDE 点重合
POINT_TO_POINT 点到点距离
POINT_TO_LINE 点到线距离
POINT_TO_CIRCLE 点到圆距离
POINT_ON_LINE 点在线上
POINT_ON_CIRCLE 点在圆上
LINE_LINE_ANGLE 线与线夹角
LINE_LINE_PARALLEL 线与线平行
LINE_LINE_PERPENDICULAR 线与线垂直
LINE_LINE_EQUAL 线与线长度相等
LINE_CIRCLE_TANGENT 线圆相切
CIRCLE_CIRCLE_TANGENT 圆圆相切

多元约束:

约束 描述
SYMMETRIC 对称约束
LINEEAR_ARRAY 线性阵列约束
CIRCULAR_ARRAY 环形阵列约束

5、根据约束作用的对象类型分为直接约束、间接约束(此分类可以探讨)。

间接约束:

约束 描述
LINE_LINE_EQUAL 线与线长度相等
CIRCLE_CIRCLE_EQUAL 圆与圆半径相等

注:上面列出的约束用来描述图元间显式或隐式长度间的关系。

6、插值约束相对不那么常用,其中比较有待表性的就是中点约束。

插值约束:

约束 描述
CENTER 线段、圆弧中点约束

7、在约束图G中每一条边e(二元约束)具有类型唯一性,即两个顶点之间只存在一条同类型的边(比如两Point之间只能有一个欧氏距离约束),应用场景中重复添加的显式约束必然是过约束。

8、环(一元约束、自由度约束),根据图元自由度定义的约束,可以视为与自由度等价的约束类型。
提示:环所映射的约束度是判断完全约束与约束度溢出引发的过约束的重要指标,所以非常重要。

9、核心约束问题可以归纳为特征顶点间的距离或夹角问题,或者说所有的问题都是在核心约束上的推广。

10、理论上约束的种类可以无限细分,不过在应用场景会依据不同软件的功能侧重进行设置。

二、自由度dof(degree of free)

这里的自由度泛指刚体自由度,而是指草图几何元素的自由度。
1、点、线、圆,椭圆,实际生产中大部分图形也是这几种基础图元组合而得,曲线在这里不做讨论。
2、几何元素自由度对照表。

几何元素 自由度 描述
2 x、y
线 2 slope、intercept
3 x、y、radius
椭圆 5 x、y、radius1、radius2、angle

三、约束度doc(degree of constraint)

由约束引发几何元素自由度减少的量称为该约束的约束度。

1、系统中可以引发几何元素自由度减少的约束,其约束度对照表。

约束类型 约束度 描述
H_RING 1 水平约束
V_RING 1 垂直约束
R_RING 1 半径约束
FIX_RING 2 or 3 or 4 固定约束,约束度根据图元类型而定

四、欠约束、完全约束、过约束

通过图来解算核心目就是为了分别找到约束问题集中的完全约束与过约束问题的集合,还可以为后续数值解算提供提升效率的数据依据。
提示:完全约束与过约束对象的自由度可以视为优化问题中的约束条件。

定义:几何元素的剩余自由度sdof(surplus degree of free)

提示:在理想情况下,特征顶点的约束状态可用以下方式来判断。
1、当sdof > 0时,欠约束。
2、当sdof = 0时,完全约束。
3、当sdof < 0时,过约束。

五、显式约束与隐式约束

这里将用户可通过软件界面可以主动添加并删除的约束统称为显式约束,反之用户不能通过软件界面交互与感知的约束统称为隐式约束。
施加隐式约束不光可以让后续特征顶点状态的求解中逻辑自洽,还有加速数值计算收敛速度的作用。
提示:这里提到的数值计算收敛速度的提升只是个人在实践中的经验与看法,并没有实质的理论支持。

约束 描述
X_RING x分量约束
Y_RING y分量约束
A_RING 倾角约束

注:不同的系统可能在隐式约束的分类与处理,甚至叫法上相差很大。

六、刚体约束模型

定义:刚体是指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。
同一纬度下所有刚体的自由度都是恒定且相同的,2维平面刚体自由度为3,3维空间中刚体自由度为6。

约束 自由度 描述
2维平面 3 X,Y,rotateZ
3维空间 6 X,Y,X,rotateX,rotateY,rotateZ

我们来定义一个约束问题:

  • 已知一组约束问题g(v,e),v是特征顶点集,e是边集(二元约束集合)。
  • n是特征顶点集的数量,m是边集的数量,dof是刚体的自由度(在2维草图中是3,3维空间中是6)。

根据以上约束问题我们引入一组式子来判断刚体的状态。

  • 2n - m > dof,刚体欠定义。
  • 2n - m = dof,刚体完全定义。
  • 2n - m < dof,刚体过定义。

提示:在不考虑特例的情况下,可以直接套用上式来判断刚体的定义情况。

知道了以上刚体的特性后,我们在应用场景中找到约束问题中的刚体结构,然后在对刚体内部特征顶点的自由度进行判断。理想情况下如果刚体内部只要发现上面提到的自由度被约束,就可以视作该刚体内部的所有特征顶点都是完全约束。
提示:刚体的自由度可以映射到一元约束X_RING,Y_RING,A_RING上。

非常不幸的是,在实际编码中,判断刚体的规约操作不光比较耗时,而且其完备性并不理想。特别是在面对大量特殊约束与冗余无副作用的约束时,此方法显得异常笨重且难以维护。
提示:对刚体约束模型的使用纯属个人感受(可能存在理解偏差等因素),如果有涉及这部分内容大佬可以提供以下参考建议。

关于刚体约束模型相关内容,我在国内外的比较早期的草图几何约束文献中都有看到。如果要用到图论法,深入去看一下这部分内容应该还是很有参考价值的。

七、约束传播模型

任意完全定义的顶点都能够使与它有二元约束关系顶点的自由度减少,即对该顶点施加一个隐式自由度约束。

定义:顶点v1,v2。 其中f(x1为v1的全局最优解,x2为v2任意解,e为v1与v2间的约束,s为v2的剩余自由度*
f ( x 1 ∗ , x 2 ) : e = s − 1 f(x1*, x2) : e = s - 1 f(x1,x2):e=s1

问题描述:已知顶点A的剩余自由度为0即完全约束、顶点B无约束即自由度处于最大,为A、B施加一个二元约束AB。这个时候B的自由度减1,然后通过B的剩余自由度判断其定义状态。继续添加一个顶点C其自由度为0也是完全约束状态,这个时候如果为B、C施加一个二元约束BC,B的自由度同样减1。这个时候如果A的自由度为2的化剩余自由度为0为完全定义状态。

通过以上规律可以总结出约束的传播具有普遍性与一贯性,将其归类后得出以下结论:

1、约束传播具有稳定的前提与条件。

  • 传播源,即传播因子,在约束问题中表现为一元约束。
    • 通过约束传播的基本型结合系统中的实际操作得知,固定约束就是传播因子的一种。扩展一下,如果当前集合元素处于完全约束,那么它的的一元约束都被认为是传播因子也就是传播性。
    • 基本上所有的一元约束都具有传播性,当然绝大多数前提是满足集合元素的完全约束。这并不绝对,因为意外其它的自由度约束是具有独立传播的能力的,当然这也是有前提的,关于这点下一节在讨论。
约束 描述
X_RING x分量约束
Y_RING y分量约束
A_RING 倾角约束
H_RING 水平约束
V_RING 垂直约束
R_RING 半径约束
FIX_RING 固定约束
  • 传播路径,即二元约束,路径分为强路径与普通路径。强路径是产生绝大多数过约束的必要条件。后面过约束内容会详细讲到。
    • 我们先来回到上一个问题中提到的自由度约束独立传播的问题上。将问题放在这里的原因是因为可独立传播除了固定约束外都对传播路径有所要求。
      暂时无法在飞书文档外展示此内容
    • 传播路径只能是核心二元约束,即距离或夹角的约束。
  • 传播对象,即约束传播的目标对象,其接受传播的条件如下。
    • 传播对象必须处于欠约束状态。
    • 如果传播路径是强路径则可以忽略传播源条件。

2、传播生成的约束具有依赖性,同时依赖于主动传播条件与传播条件。

  • 依赖约束都是自由度约束即一元约束,与几何元素的约束度等价,在性质上与其它正常一元数别无二致。
  • 依赖约束同时依赖于传播源与传播路径,这样的好处是,在删除其挂载的几何元素、传播路径或传播源的时候能够将其找到并删除。
  • 依赖约束只能通过隐式创建,删除的过程也依赖其挂在的几何元素或依赖的传播条件。
  • 依赖约束的约束度总和与传播源约束度总和等价。

3、约束传播具有唯一性,即依赖约束的传播条件唯一。

4、为了方便在约束传播后结算剩余自由度,增加了抽象约束的概念。抽象约束但不指带任何具体自由度的约束,抽象自由度属于一元隐式约束且约束度恒等于1。

约束 描述
AB_RING 抽象约束

约束传播模型,在数据结构上记录了用户不断定义几何图形的过程,这个过程产生的结果不仅可以直观的展示在视图,也方便编码过程中随时了解几何元素的状态并随时做出调整。

八、参数驱动型约束

之所以要把参数驱动约束单独放到后面,主要还是其特殊性,因为该约束是参数化设计中使用频繁、功能依赖性很高的约束类型。

参数驱动型约束*

约束名 描述
POINT_TO_POINT 点到点的距离
POINT_TO_LINE 点到线的距离
LINE_LINE_ANGLE 线与线的夹角

磁约束顾名思义可以通过输入参数来调整约束的几何信息,原则上只要可以将几何信息映射到位置、角度、距离等数据的约束都可以作为驱动型约束。

九、过约束

在前面已经对过约束做出基础定义,但在应用场景中,这显然不够。事实上也确实如此,除了约束度溢出的情况能造成过约束外,重复的驱动型约束同样被视为过约束条件,当然,在不同的软件系统中可能有更加广泛与细致的定义。既然一千个人心中有一千个哈姆雷特的观点,这里部分内容就索性留白。文章来源地址https://www.toymoban.com/news/detail-441448.html


本文的内容中心主要集中在图论法的基础认知铺垫,并提出了基于约束传播性的基础求解模型。在文中提到的所有约束类型均是真实开发中所运用到的,并不代表任何标准,在不同的系统设计中完全可以有适用自身场景的约束抽象。

到了这里,关于草图几何约束——图论法(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 知识点记录:李群李代数,微分流形,微分几何,图论

    李群(Lie group)是具有群结构的实流形或者复流形,并且群中的加法运算和逆元运算是流形中的解析映射。 李代数Lie algebra):一类重要的 非结合代数 。非结合代数是环论的一个分支,与结合代数有着密切联系。结合代数的定义中把乘法结合律删去,就是非结合代数。 微分

    2024年02月10日
    浏览(107)
  • 双目立体匹配中的极线约束(Epipolar Constraint),基础矩阵(Fundamental Matrix),本质矩阵(Essential Matrix),对极几何(2D-2D)

    考虑一个SLAM中一个常见的问题:如果两个相机在不同位置拍摄同一个物体,或者一个运动的相机在不同时刻拍摄同一物体,我们有理由相信两张图片中各点存在着某种几何关系,这种关系可以用对极几何来描述。对极几何描述了两帧图像中各像素的射影关系(或者说是各匹配

    2024年02月05日
    浏览(40)
  • 基于Xlinx的时序分析、约束和收敛(4)----主时钟约束

    目录 主时钟约束语法 例1:引脚输入的主时钟约束 例2:高速收发器GT的恢复时钟

    2023年04月17日
    浏览(40)
  • C语言刷题中遇到的一些很看重数学逻辑的题目(代码很简单,但是逻辑确实异曲同工)

    这一题的关键就是flat1和flat2两个变量的设立 flat1判断整个序列是否升序,比较相邻两个数,如果前者小于后者,则将flat1赋值为1 flat2判断整个序列是否升序,比较相邻两个数,如果前者大于后者,则将flat1赋值为1 然而整个序列有序的条件就是相邻的两个数一直是前者大于后

    2024年02月13日
    浏览(93)
  • UG NX 12 草图 (基础知识)

    草图知识在三维建模技术中占据相当重要的位置。因为在实体建模和曲面建模中,草图可以作为实体建模的特征横截面,在曲面建模中草图又可作为曲线进行曲面的构建。 草图绘制(简称草绘)功能是UG NX 12为用户提供的一种十分方便的二维绘图工具。 用户可以首先按照自己

    2024年02月04日
    浏览(44)
  • 213 基于matlab的圆柱齿轮传动的几何规划

    基于matlab的圆柱齿轮传动的几何规划、两级斜齿轮传动优化设计、螺旋起重器设计计算、蜗杆传动优化设计(蜗轮齿圈体积最小)结构设计计算。用于机械结构中零件的优化分析。程序已调通,可直接运行。 213 蜗杆传动优化设计 matlab - 小红书 (xiaohongshu.com)

    2024年04月08日
    浏览(31)
  • 基于EasyX学习图形学中的三维几何变换【全】

    本文开始学习几何变换中的三维变换,对于各种变换的定义方法基本和二维变换一样,在此我就不过多赘述了。 三维变换矩阵 由于二维变换矩阵为三阶矩阵,所以三维变换矩阵为四阶矩阵 以下例子均在此正方体基础上 坐标表示 矩阵表示 变换矩阵 核心代码 效果展示 坐标表

    2024年02月09日
    浏览(48)
  • Win10截图和草图无法使用怎么办

    解决方法 方法一:更正存图路径差错 1、打开注册表编辑器。按组合键windows和R打开运行窗口,然后在运行窗口中输入regedit,并按回车键。 2、在注册表编辑器左侧依次展开:HKEY_CURRENT-USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders 3、选中“User Shell Folders”,然后在

    2024年02月04日
    浏览(49)
  • 使用Python和wxPython将图片转换为草图

    导语: 将照片转换为艺术风格的草图是一种有趣的方式,可以为您的图像添加独特的效果。在本文中,我们将介绍如何使用Python编程语言和wxPython图形用户界面库来实现这一目标。我们将探讨如何使用OpenCV库将图像转换为草图,并使用wxPython创建一个简单的界面,使用户能够选

    2024年02月14日
    浏览(33)
  • 基于图像形态学处理的目标几何形状检测算法matlab仿真

    目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程     matlab2022a        目标几何形状检测是计算机视觉领域中的重要任务之一,旨在从图像中自动识别和定位不同的几何形状,例如矩形、圆形、三角形等。这些形状检测在许

    2024年02月14日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包