[图形学] B样条曲线
来源:互联网 发布:vmware12安装ubuntu 编辑:程序博客网 时间:2024/05/16 06:32
大二的时候,曾受老师所托,用C++而不是OpenGL去写B样条曲线的教学程序。时隔一年,发现源码找不见了,所以重新写了一遍,也完善了部分功能,顺便发一篇博客分享一下。
这里给出的资源有:两个打包程序、最新版本的源代码。
下载链接:(使用时请注明出处哦~~ )
1. (新版本)源代码:http://download.csdn.net/detail/mahabharata_/9841652
2. (新版本)演示程序:http://download.csdn.net/detail/mahabharata_/9841677
3. (旧版本)演示程序:http://download.csdn.net/detail/mahabharata_/9814823
程序的截图如下:
说明: 两个版本都是使用纯Qt实现的,没有使用OpenGL所以非常方便阅读。如需要使用win32、MFC等框架编写,也只需在此基础上做简单的修改。
功能:
1. 鼠标左键可以添加新控制点,也可以选中并拖动已有的控制点。
2. 支持1次、2次、3次的B-Spline曲线(即2阶、3阶、4阶)
3. 可以选择是否显示曲线上关键结点的位置和标号,以及控制点的标号。
4. Backspace删除末端控制点,C键清屏。
B样条曲线的相关知识:
定义:给定n+1个控制点{P0、P1、......、Pn},每个控制点都有对应的一个基函数Ni,p(u),其中u为自变量,i为第i个结点,p为曲线的次数(次数=阶数-1),则可以用下式来定义B样条曲线:
(定义域: p≤ u ≤ n+1,事实上定义域的上限取多少无所谓)
根据定义,可以发现B样条曲线上的每一个点其实是:所有控制点的一个加权平均。这里的“权”由基函数Ni,p(u)确定。随着u从下限p逐渐增长,控制点对应的基函数的取值也会随之变化,从而产生曲线上新的点。
关于基函数Ni,p(u),可以由Cox-de Boor公式得出。这里给出三个简单的基函数的示例:
(1)当曲线次数p=1时,基函数Ni,1(u)为:
(2)当曲线次数p=2时,基函数Ni,2(u)为:
(3)当曲线次数p=3时,基函数Ni,3(u)为:
- [图形学] B样条曲线
- [图形学] B样条曲线
- 【计算机图形学】四、B样条曲线的生成
- 计算机图形学--------充分理解B样条曲线
- 计算机图形学 学习笔记(十一):曲线曲面(三):B样条 曲线与曲面
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B-样条曲线:开曲线
- B-样条曲线:闭曲线
- 曲线平滑-B样条曲线
- B-样条曲线:定义
- B-样条曲线:特例
- 绘制B样条曲线
- 使用HTTPS(提高网站安全性)
- 广告类网站织梦模板
- 关于链表的总结以及其作用
- 区分++,--的前置和后置的情况
- Ubuntu17.04和win10双系统时间不同步
- [图形学] B样条曲线
- java 8 的一些新特性
- 子窗口关闭父窗口页面的坑
- java向mysql数据库中传数据
- 第七届蓝桥杯决赛JavaA组第四题_机器人塔
- click点击一次,执行多次的bug
- mongodb初体验
- UVALive
- 【ACM】P2015(*)、P2016、P2017、P2018(*)、P2019代码演示