德卡斯特(deCasteljau)递推公式绘制Bezier曲线_decasteljau递推算法代码-程序员宅基地

技术标签: c++  计算几何算法与实现  mfc  

德卡斯特(deCasteljau)递推公式绘制Bezier曲线


在这里插入图片描述
德卡斯特递推算法比使用定义算法绘图简单了很多,已经成为绘制Bezier曲线的标准算法;
参考上一篇文章
添加下面代码:

	CP2 PP[4][4];//德卡斯特递推数组
	void deCasteljau(double t);//德卡斯特递推计算
	void DrawdeCasteljauBezier(CDC*pDC);//绘制德卡斯特曲线
void CdrawBezierCurveView::deCasteljau(double t)
{
    
	for(int k=0;k<=n;k++)
	{
    
		PP[k][0].x=P[k].x;
		PP[k][0].y=P[k].y;
	}
	for(int r=1;r<=n;r++)//二维数组表示德卡斯特递推数组
	{
    
		for(int i=0;i<=n-r;i++)
		{
    
			PP[i][r]=(1-t)*PP[i][r-1]+t*PP[i+1][r-1];
		}
	}
}


void CdrawBezierCurveView::DrawdeCasteljauBezier(CDC*pDC)
{
    
	pDC->MoveTo(ROUND(P[0].x),ROUND(P[0].y));
	double tStep=0.01;//参数步长
	for(double t=0.0;t<=1.0;t=t+tStep)
	{
    
		deCasteljau(t);
		pDC->LineTo(ROUND(PP[0][n].x),ROUND(PP[0][n].y));
	}
}

在OnDraw中调用

	DrawdeCasteljauBezier(pDC);

参考《计算几何算法与实现》–孔令德

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ha0ha0xuexi/article/details/117250895

智能推荐

【C语言】利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来_利用递归函数调用方式,将所输入的5个字符-程序员宅基地

文章浏览阅读7.1k次,点赞8次,收藏21次。在写代码之前,我们要先了解一下两个函数 getchar() 和 putchar()。getchar() 函数函数声明: int getchar(void)函数功能: C 库函数int getchar(void)从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于getc带有 stdin 作为参数。返回值: 该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如..._利用递归函数调用方式,将所输入的5个字符

清华大学计算机系2020年夏令营,2018年清华大学全校50个保研夏令营通知信息大汇总...-程序员宅基地

文章浏览阅读1.5k次。清华大学创建于1911年,现已发展成为一所具有理学、工学、文学、艺术学、历史学、哲学、经济学、管理学、法学、教育学和医学等11个学科门类的综合性的研究型大学。作为我国最早开设研究院校的顶尖高校,清华大学是我国培养博士和硕士的重要基地。目前清华大学现有在学研究生32000人(含北京协和医学院-清华大学医学部4100人),其中博士生13000人,硕士生19000人。而清华大学的在读本科生总人数仅为15..._清华大学计算机夏令营名单

【java】StringUtils.isEmpty 和 StringUtils.isBlank的区别_java stringutils.isempty stringutils.isblank-程序员宅基地

文章浏览阅读1k次。1、所需要的包import org.apache.commons.lang.StringUtils;2、StringUtils.isEmpty这个用来判断字符串是否为空,等同于:str==null || str.length()==0System.out.println(StringUtils.isEmpty(null)); //trueSystem.out.printl..._java stringutils.isempty stringutils.isblank

SparkSQL把rdd转化为DataFrame时,想要把整个数组的值都放到Row中则么办?_spark list转dataframe 使用row-程序员宅基地

文章浏览阅读5.5k次。在使用sparkSQL,有时想要把rdd中的数据转换成DataFrame,RDD中的的数据可能时Array类型,或者是想要把数组类型中的所有元素放到Row中,当数组中的元素特别多时,可能就会变得更加麻烦,其实Row的Object中为我们提供了一个很好的方法,就是merge方法,话不多说,直接看代码吧Object Demo {def main(args: Array[String]): Un..._spark list转dataframe 使用row

SIT测试 和 UAT测试_sat uat-程序员宅基地

文章浏览阅读5.5w次,点赞7次,收藏49次。在企业级软件的测试过程中,经常会划分为三个阶段——单元测试,SIT和UAT,如果开发人员足够,通常还会在SIT之前引入代码审查机制(Code Review)来保证软件符合客户需求且流程正确。下面简单介绍一下SIT和UAT的基本情况。 SIT (System Integration Testing) 系统集成测试,也叫做集成测试,是软件测试的一个术语,在其中单独的软件模块被合并和_sat uat

java实现windows壁纸自动下载与切换_java pc动态切换壁纸怎么实现-程序员宅基地

文章浏览阅读5.2k次,点赞18次,收藏35次。壁纸风波许多有内涵的朋友都喜欢将自己的电脑桌面壁纸设置为美女图片,并且隔一段时间,自动更换,看起来十分炫酷。的确,用过windows的朋友们都知道,windows的个性化设置里面,可以将壁纸设置幻灯片放映,这就解决了壁纸常年不变的尴尬局面,原因在于很多懒猪们拿到自己的电脑以后,往往自己在网上找一张自己觉得好看的壁纸,设置为桌面壁纸以后,就懒得再去管它,这一用就是几个月,乃至上年。很多稍微有..._java pc动态切换壁纸怎么实现

随便推点

JQuery.Validation Usage._jquery validaet 日期比较-程序员宅基地

文章浏览阅读559次。在网页开发过程中Form的验证或者表单验证操作都是必不可少的。如今有许多的验证插件,这里只介绍JQuery Validation.js的插件使用,这个也是VS中自带的验证脚本。JQuery使用上也很广泛兼容性也很好,是许多开发人员的最佳选择,还有其它的验证插件有EasyUI. bootstrap框架的验证方式(bootstrap jQuery-Validation-Bootstrap-tool_jquery validaet 日期比较

将二进制流转换成图片文件_android 二进制文件存储成图片-程序员宅基地

文章浏览阅读2.9k次。摘自:http://www.oschina.net/code/snippet_931591_17604importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.FileInputStream;import_android 二进制文件存储成图片

计算机主板i3 i5区别,装机那些事儿之挑选适合自己的CPU;i3/i5/i7的区别-程序员宅基地

文章浏览阅读2.3k次。DIY台式机,最重要之一就是CPU的选择,合适的CPU不仅能最大化满足自己需求的,而且还可以减少毛爷爷的支出。一般来说,主推的都是Intel CPU。所以在这里,我们详谈Intel CPU。如果有关于AMD CPU相关的问题,可以评论区在进行交流。对Intel CPU有过了解的小伙伴都知道,Core i3,i5,i7家族已经发展到了第八代(如i7-8700k,i5-8600k),新一代的CPU拥有..._i3与i5主板不同吗

关于spring boot整合mybatis使用oracle数据库出现could not load:oracle.jdbc.driver.OracleDriver问题的终极解决方案_cannot load jdbc driver class 'oracle.jdbc.driver.-程序员宅基地

文章浏览阅读3.4w次,点赞7次,收藏8次。由于开发用到数据库为oracle,特地从外网下载下来与spring整合的mybatis的jar包,接下来本以为轻松愉快的加入oracle驱动的pom依赖即可,结果报错,经查询发现Maven仓库由于版权的原因没有oracle的驱动jar包。  当时考虑的是Maven项目是否可以像普通的web项目一样在src/main/webapp/WEB-INF下创建一个lib文件,将oracle驱动放进去之后bui_cannot load jdbc driver class 'oracle.jdbc.driver.oracledriver

帧同步和状态同步_状态同步 预测算法-程序员宅基地

文章浏览阅读302次。帧同步:帧锁定算法解决游戏同步早期 RTS,XBOX360 LIVE游戏常用同步策略是什么?格斗游戏多人联机如何保证流畅性和一致性?如何才能像单机游戏一样编写网游?敬请观看《帧锁定同步算法》《帧锁定同步算法》转载请注明出处:http://www.skywind.me/blog/archives/131算法概念该算法普遍要求网速RTT要在100ms以内,一般人数不超过8人,在这样的情况下,可以像单机游戏一样编写网络游戏。所有客户端任意时刻逻辑都是统一的,缺点是一个人卡机,所有人等待。1.客户端定时_状态同步 预测算法

OpenCart之账户(Account)模块教程_opencart account blog-程序员宅基地

文章浏览阅读1.4k次。账户(Account)模块指的是如下图所示的部分:后台设置路径:【扩展功能(Extensions)】 -> 【模块管理(Modules)】 -> 【账户(Account)】,点击安装(Install)后进行编辑(Edit),出现下图所示:【布局】:指你要将【账户(Account)模块】显示于哪些页面,比如上图中选择了account布局,它表明凡是网站_opencart account blog