AutoCAD中的Spline曲线算法分析(二)

by eattonton

AutoCAD中的样条曲线(命令是Spline),是通过用户输入型值点之后,软件的插值计算,得到一条样条曲线。这条曲线的数学表达式是一条B样条曲线。这里就涉及一个样条曲线的反算计算。

B样条曲线的组成主要有一下各个方面:

1.             控制点,这是一个凸多边形。拟合出来的曲线,就在这个凸多边形里面生成。

2.             节点矢量,是一个范围Ui。计算的方法已经在上一篇文章中有详细说明。

3.             基函数,基函数的选择基本上都是使用Deboor-Cox递推公式。

在工程项目中基本上都是使用2次和3次B样条。AutoCAD中默认的就是3次样条曲线。上面讲的是曲线的正算过程,也就是知道控制点,节点矢量,基函数以及需要的次数。就能计算出这条曲线。样条曲线的反算过程,就麻烦的多。这这里我们明确我们需要计算的目标是什么:

题:已知几个型值点(Pi, i=1,2,3…n),曲线采用3次B样条插值。计算出该B样条曲线的所有参数。

下面我们按照正常的解数学题目的方式来反算题目。

解:

1.    节点矢量的计算

节点矢量的计算上篇文章已经说了,这里我们仍然采用累积弦长法。

2.    首末端点切线的确定

型值点的个数为n,需要计算的样条曲线为k次,那么控制点的数量就是 m=n+k-1, 在这里就是 m=n+2.

在首末端点,我们设定

V1 = P1,  Vn+2 = Pn  (Vi 就是控制点,有n+2个)

由于P1,Pn就是给定的型值点,为已知无需求解。剩下的等式就变成n-2个,却还需求解n个控制点。所以,我们在首末端点设置两个条件。

2.1           在已知首末切矢的情况下,有存在这样的等式

dP1 = 3*(V2-V1) = 3*V2 – 3*P1         --> 3*V2 = dP1 + 3*P1

dPn=3*(Vn+2-Vn+1)=3*Pn-3*Vn+1    --> 3*Vn+1 =3*Pn-dPn

其中dP1,dPn表示在P1和Pn点处的一阶导数

2.2           不知道切矢,就认为是自由端条件的情况下

6*P1 = 9*V2 -3*V3

6*Pn = -3*Vn + 9*Vn+1

3.    其他方程的计算

对于型值点内部的点,如果建立公式呢。可以通过节点矢量上面的间隔点作为输入值,计算系数矩阵,从而与型值点建立等式。

有了前面的准备,控制点就是一个解线型方程组的过程。这里不再赘述。

通过AutoCAD里面的模拟,我们的算法能够得到正确的结果。说明我们的算法对于软件的理解是正确的。

B样条曲线在项目的线型光顺中是一个很基础的概念,也是一个很重要的概念。如果后面有时间我想把散乱点的拟合,曲线光顺性的计算等也写一下。

AutoCAD中的Spline曲线算法分析(二)相关推荐

  1. pline加点lisp_用Autolisp 在AutoCAD中实现多种曲线的绘制

    用Autolisp 在AutoCAD中实现多种曲线的绘制 一.引言: AutoCAD自1982年由Autodesk公司推出以来,经历了20年的发展更新,目前,已深入到包括机械.建筑.服装.航天航空.地 ...

  2. 如何用lisp画蔓叶线_用Autolisp 在AutoCAD中实现多种曲线的绘制

    用 Autolisp 在 AutoCAD 中实现多种曲线的绘制 一.引言: AutoCAD 自 1982 年由 Autodesk 公司推出以来, 经历了 20 年的发展更 新,目前,已深入到包括机械. ...

  3. CAD二次开发:用C#在AutoCAD中插入栅格图像

    CAD二次开发:用C#在AutoCAD中插入栅格图像 using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationService ...

  4. (源码)CAD二次开发—实现AutoCAD中缺失字体自动替换

    使用C# 实现AutoCAD中缺失字体的自动替换 设计思路: 获取到当前字体样式的设计集合 遍历所有的字体样式,对对应的字体样式进行查找 如果找不到则进行替换 namespace AutoCADTo ...

  5. 计算机在材料科学中的应用上机二,计算机在材料科学中的应用-上机实验二.doc...

    计算机在材料科学中的应用-上机实验二 实验二 Office使用技巧 ? 1 Word工具栏的增删与了解其主要作用 (1) ? 把"常用"和"格式"工具栏打开(一 ...

  6. HTML5 Canvas中绘制贝塞尔曲线

    绘制贝塞尔曲线 贝塞尔曲线于1959年,由法国物理学家与数学家Paul de Casteljau所发明,于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,并用于汽车的车 ...

  7. 【CAD.Net】基础课程 AutoCAD 中的凸度,求圆弧的圆心、起始角度、圆弧的中心点

    一,什么是 AutoCAD 中的凸度 凸度(bulge)是AutoCAD 中一个非常重要和强大的数学工具,它可以以非常简洁的方式表示一段弧的信息.已知平面内具体两点坐标,以及一个凸度值,即可唯一确定一 ...

  8. matlab受力曲线导入adams中,如何在adams中导入dxf曲线

    先展示最终效果,再说过程. ​过程稍有些烦,但没有难度.最重要的是准备好的dxf文件,只有一条pline. 有些curve可能是spline,如果不转,在adams中也可以读入,但会有很多段,整理起来 ...

  9. 单一修改高程值lisp_浅谈AutoCAD中修改高程的四种方法

    浅谈 AutoCAD 中修改高程的四种方法 摘 要: 在使用 AutoCAD 进行数字化成图工作中,经常遇到线划的标高不为零,及高程点的值与实地不符,需要对其进行修改等情况,结合实 际工作经验,简单介 ...

  10. AutoCAD中导入Inventor模型

    大家知道,Inventor能产生工程图,但有一部分用户更习惯在AutoCAD中去进行工程图的设计.从AutoCAD 2013开始支持导入Inventor模型,生成对应的工程图.有两种模式: 模式一: ...

最新文章

  1. 10年,4600万台!树莓派,生日快乐
  2. 为什么String中的Java hashCode()使用31作为乘数?
  3. 一个C#读写Dxf的类库DXFLibrary
  4. Mac中安装Node和版本控制工具nvm遇到的坑
  5. Java——demo之仿ATM操作
  6. Linux驱动(3)--单片机驱动与Linux驱动的区别
  7. 开课吧python全栈靠谱么-杭州Web全栈
  8. cad填充图案乱理石_CAD填充图案文件在哪个文件夹里?
  9. 图灵奖抬不起Algorand |链捕手
  10. c++ gdal 矢量转栅格_gdal的矢量栅格化接口GDALRasterizeLayers使用(一)
  11. 如何在 Mac 上使用屏幕保护程序?
  12. 蚂蚁金服2019实习生面经总结(已拿口头offer)
  13. 惩罚宝宝十个科学方法
  14. 任志远先生,庄振宏先生就任新加坡区块链技术基金会理事
  15. 推特开发者账号 V2【推特开发者文档V2系列1】——获取推特视频播放量
  16. 画论24 郭若虛《图画见闻志》
  17. swagger生成对应的客户端、服务端代码
  18. hadoop常用的命令
  19. 简易计算机绘图,电脑绘画简易教程——原野
  20. pythonfind_Python find()方法:检测字符串中是否包含某子串

热门文章

  1. kali linux 源码免杀,shellcode超级免杀
  2. win10环境redis集群搭建(非主从模式)
  3. Matlab 马尔可夫链预测双色球
  4. 【转】“中国网游死亡档案”出炉:网游淘汰率达1比1
  5. 干货|别找了,分享80个无版权、高清、免费图片素材网站给你!
  6. XP中N8无法连接PC套件解决
  7. 峰峰值(Vpp)与dBm的转换关系
  8. python敲七游戏代码_敲七游戏数字表
  9. 谈谈Spring IOC是怎么实现解耦的
  10. 微信游戏小程序源码-合成大西瓜小游戏(合成版)源码 附带流量主功能