最不能理解的一点,一讨论软件的曲面,曲线功能,最后就变成曲线、曲面的数学原理的讨论了,但是里面也没数学好的,讨论的结果可想而知。

我不是数学家,我不懂这么复杂的方程,只要好用就行了。

在CAD中,设计师需要设计出各种各样的曲线;数学中,曲线是通过各种各样的方程表示的,比如一条通过点A(0,0)、B(1,1)的直线可以表示为:

y=x

或者用参数方程表示:

P(u) = (1-u)A+tB

再比如一个通过原点(1,2)、半径为2的圆可以表示为:

(x-1)^2 + (y-2)^2 = 4

或者用参数方程表示:

x = 2cos(u)+1

y = 2sin(u)+2

上面举例的是两种很简单的曲线,对于更复杂的曲线可以用更复杂的方程来表示(比如用高次多项式);

如果我们的设计师是一位数学家就好了,他可以根据自己的需要,设计出一个复杂的方程来表示自己想要的一条优美的曲线,但是事与愿违,设计师们往往想通过一种直观的方式来设计曲线,而不是利用方程。

因此,诸位科学家和工程师设计出了Bezier曲线、B样条和NURBS,下面是一个有四个控制点的Bezier曲线:

可以通过改变一个控制点的位置来改变曲线的形状,比如将上图曲线中左边第二个控制点往上移,就可以得到下面的曲线:

可以看到,这种曲线生成方式比较直观和灵活,我只需要放置控制点,然后调整控制点的位置来得到想要的曲线,这就避免了和复杂的数学方程打交道,岂不快哉?

Bezier曲线、B样条和NURBS都是根据控制点来生成曲线的,那么他们有什么区别了?简单来说,就是:

§  Bezier曲线中的每个控制点都会影响整个曲线的形状,而B样条中的控制点只会影响整个曲线的一部分,显然B样条提供了更多的灵活性;

§  Bezier和B样条都是多项式参数曲线,不能表示一些基本的曲线,比如圆,所以引入了NURBS,即非均匀有理B样条来解决这个问题;

Bezier曲线只是B样条的一个特例而已,而B样条又是NURBS的一个特例,它们的关系可以图示为:

B样条克服了Bezier曲线的一些缺点,Bezier曲线的每个控制点对整条曲线都有影响,也就是说,改变一个控制点的位置,整条曲线的形状都会发生变化,而B样条中的每个控制点只会影响曲线的一段参数范围,从而实现了局部修改;

转载地址:http://blog.sina.com.cn/s/blog_684860810102dxmt.html

Bezier曲线、B样条和NURBS的基本概念相关推荐

  1. 开源项目推荐:Bezier曲线、B-Spline和NURBS的区别与《THE NURBS BOOK 2nd》简介,曲线拟合可视化工具

    一.基本概念 B-Spline:B样条曲线 NURBS(Non Uniform Rational B-Spline):非均匀有理B样条曲线 B样条曲线有三种类型: 当起始点和终止点的重复度为最高次数加 ...

  2. [摘抄] Bezier曲线、B样条和NURBS

    Bezier曲线.B样条和NURBS,NURBS是Non-Uniform Rational B-Splines的缩写,都是根据控制点来生成曲线的,那么他们有什么区别了?简单来说,就是: Bezier曲 ...

  3. 曲线数学NURBS之bezier曲线

    最近新研究topic是NURBS,NURBS(Non Uniform Rational B-spline)即非均匀有理B样条曲线.往往提到B样条.以及NURBS就会提到bezier曲线,他们之间的关系 ...

  4. android离散点贝塞尔曲线,离散点拟合曲线贝塞尔曲线B样条.ppt

    离散点拟合曲线贝塞尔曲线B样条 第三章 离散点绘制平面曲线;;不规则曲线(拟合曲线):指已知平面一些离散点的坐标,但曲线方程未知,需要人为设计曲线方程对这些点进行拟合形成的曲线.; 在用拟合方法建立曲 ...

  5. Bezier曲线扫盲

    原文地址 相信很多同学都知道"贝塞尔曲线"这个词,我们在很多地方都能经常看到.但是,可能并不是每位同学都清楚地知道,到底什么是"贝塞尔曲线",又是什么特点让它有 ...

  6. 轨迹规划——Bezier曲线与B样条曲线

    一.Bezier曲线 1.Bezier曲线的背景 给定n+1个数据点,p0~pn,生成一条曲线,使得该曲线与这些点描述的形状相符. (如果要求曲线通过所有数据点,则属于插值问题:如果只要求曲线逼近这些 ...

  7. 【计算机图形学01】贝塞尔曲线(样条01)

    [1]样条曲线的背景介绍: 在三维模型生成领域,大体可以分为以下两类:一种是对真实世界物体的数字化,另一种是根据设计师们的idea,设计出相应的三维模型.作为图形学系列文章的第一篇,我想向大家介绍在计 ...

  8. MFC有理二次Bezier曲线绘制

    MFC有理二次Bezier曲线绘制 非有理Bezier曲线曲线无法精确表示所有的二次曲线和二次曲面,引入了有理Bezier曲线曲面,来精确表示.如图,通过控制权重,可以获取不同的二次有理Bezier曲 ...

  9. bezier曲线解析与代码(c++)

    前言: 作为rhino重度用户,我对于nurbs建模早有耳闻,但对于何为nurbs却不得其解.最近借上<计算机辅助设计>课程的机会,对此作了一些深入的学习,于是在此记录一下一些课程笔记和课 ...

最新文章

  1. python turtle画熊-Python使用turtle库绘制小猪佩奇(实例代码)
  2. linux下访问windows共享文件夹
  3. http在链接中加入用户名_爬虫基础——HTTP基本原理
  4. SAP Commerce Extension的Web应用启动问题
  5. python 设置输入法为英文,appium+python环境下的输入法切换
  6. 图像坐标:我想和世界坐标谈谈(B)
  7. Ubuntu镜像下载地址
  8. flink sql设置并行度_Flink集成Hivestream模式用例
  9. 反射——类(Class)
  10. 解读全球热点,传递科研进展,这份AI内参要承包你的AI信息源
  11. myeclipse中加入jad查看jar源代码
  12. 为什么 MySQL 不推荐使用 join?
  13. 18. Window createPopup() 方法
  14. ELK 学习笔记之 elasticsearch Bulk操作
  15. FileZilla Server与FileZilla Client
  16. 案例分享 | 可编程机器人Scratch二次开发案例
  17. 汉语拼音大全(竖排版)
  18. Windows系统使用Procrun部署SpringBoot的JAR包
  19. Fiddler简单的使用教程(入门级)
  20. 阿伟的学习计划5.28-6.29

热门文章

  1. C语言编程-----求s=a+aa+aaa+aaaa+aa...a的值
  2. Android——AndroidX
  3. JavaScript DOM加强(佟刚)
  4. 2022秋季C语言专题实验03-一维数组
  5. 一本正经的经验帖——如何使用FDM 3D打印机进行批量化生产
  6. 漏刻有时数据可视化Echarts组件开发(27):盒须图(箱线图)前后端php交互的实战案例
  7. 由LG 的G2手机浅析国产旗舰机的方向
  8. python中的openpyxl模块
  9. Java面试宝典(2021版)
  10. 蛋白质相互作用系列:GN算法