C语言WFC实现绘制贝塞尔曲线的函数

前言:

贝塞尔曲线于 1962 年,由法国工程师皮埃尔·贝济埃(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计,贝塞尔曲线最初由保尔·德·卡斯特里奥于1959年运用德卡斯特里奥算法开发,以稳定数值的方法求出贝塞尔曲线.

 定义
贝塞尔曲线(Bezier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如PhotoShop等
————————————————
版权声明:本文为CSDN博主「beijing_txr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_35676815/article/details/120884682

代码实现:

//贝塞尔曲线插值法
void CCGDrawingView::Bezier(double* x, double* y, int num, CDC* pDC)
{if (num < 1)return;int xrange = int(x[num - 1] - x[0]);if (xrange < 1)return;//画原始点CPen redPen(PS_SOLID, 1, RGB(255, 0, 0));CBrush redBrush(RGB(255, 0, 0));CPen* pOldPen = pDC->SelectObject(&redPen);CBrush* pOldBrush = pDC->SelectObject(&redBrush);for (int i = 0; i < num; ++i) {pDC->Ellipse(int(x[i] - 5),int(y[i] - 5),int(x[i] + 5),int(y[i] + 5));}//绘制bezier曲线pDC->SelectObject(pOldPen);pDC->SelectObject(pOldBrush);double delt = 1.0 / xrange;double t = 0.0;double* Rx = new double[num];double* Ry = new double[num];double* Qx = new double[num];double* Qy = new double[num];for (int i = 0; i <= xrange; i++) {for (int j = 0; j < num; ++j) {Rx[j] = x[j];Ry[j] = y[j];}for (int m = num; m > 1; m--) {for (int j = 0; j < m - 1; ++j) {Qx[j] = Rx[j] + t * (Rx[j + 1] - Rx[j]);Qy[j] = Ry[j] + t * (Ry[j + 1] - Ry[j]);}for (int j = 0; j < m - 1; j++) {Rx[j] = Qx[j];Ry[j] = Qy[j];}}pDC->SetPixel((int)Rx[0], (int)Ry[0], RGB(0, 0, 0));t += delt;}delete[] Rx;delete[] Ry;delete[] Qx;delete[] Qy;
}

结果呈现:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259871.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RTL编码(3)——语句优化与布线优化

目录 一、语句优化 1.1 if与case 1.1.1 条件语句避免出现锁存器 1.1.2 if与case语句综合效果的差异 1.2 阻塞赋值与非阻塞赋值 1.3 算法改进 1.3.1 算法改进提升速度 1.3.2 算法改进缩小面积 二、布线优化 2.1 热点 2.2 瓶颈 2.3 广播 三、总结 一、语句优化 1…

STM32的BKP与RTC简介

芯片的供电引脚 引脚表橙色的是芯片的供电引脚&#xff0c;其中VSS/VDD是芯片内部数字部分的供电&#xff0c;VSSA/VDDA是芯片内部模拟部分的供电&#xff0c;这4组以VDD开头的供电都是系统的主电源&#xff0c;正常使用时&#xff0c;全部都要接3.3V的电源上&#xff0c;VBAT是…

这是最后的战役了

不变因子 初等因子 行列式因子 smith标准型 酉矩阵 H-阵等等 A H A A^H A AHA 就是 H-阵 正定H阵的性质 若 A A A 为正定的H-阵. 存在可逆矩阵 Q Q Q&#xff0c; 使得 A Q H Q AQ^H Q AQHQ.存在 P P P, 使得 P H A P I P^HAPI PHAPI.A的特征值大于0. Q − 1 A Q Q^{…

springboot3远程调用

RPC 两个服务器之间的调用 远程请求 内部服务之间的调用 可以通过 cloud 注册中心 openfeign等 外部服务的调用 http请求 外部协议 api:远程接口 sdk&#xff1a;本地调用 调用阿里云的天气请求

T5论文个人记录

参考&转载自&#xff1a; 介绍Google推出的大一统模型—T5_谷歌大模型_深度之眼的博客-CSDN博客 T5 和 mT5-CSDN博客 T5&#xff1a;Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer&#xff08;万字长文略解T5&#xff09;_t5论文…

关于前端原生技术-Jsonp的理解与简述

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/134777717 出自【进步*于辰的博客】 在学习了Jsoup这个知识点之后&#xff0c;发觉js的这一特点…

易错C语言选择题

1.void main() {int a2,b5; printf("a%%d,b%%d\n"); } 结果为&#xff1a;&#xff08;&#xff09; A. a%2&#xff0c;b%5 B. a2&#xff0c;b5 C. a%%d&#xff0c;b%%d D. a%d&#xff0c;b%d 答案&#xff1a;D 2.若有说明&#x…

react Hooks实现原理

Fiber 上篇文章fiber简单理解记录了react fiber架构&#xff0c;Hooks是基于fiber链表来实现的。阅读以下内容时建议先了解react fiber。 jsx -> render function -> vdom -> fiber树 -> dom vdom 转 fiber 的过程称为 recocile。diff算法就是在recocile这个过程…

零基础快速搭建一个属于自己的网站或博客

博客网站是众多的网站类型中应用属于比较频繁的一种&#xff0c;另外一种就是企业网站。今天我就给大家来分享一些常用的免费个人博客网站系统以及如何搭建一个属于自己的个人博客网站&#xff01;&#xff01; 好了&#xff0c;废话不多说&#xff0c;直接上才艺&#xff01; …

ELK(六)—Filebeat安装部署

目录 一、介绍1.1特点1.2使用原因1.3结构图1.4工作流程 二、安装部署2.1下载2.2启动2.3监控日志文件2.4自定义字段 三、连接Elasticsearch四、工作原理 一、介绍 Filebeat是一个轻量级的日志和文件数据收集器&#xff0c;属于Elastic Stack&#xff08;ELK Stack&#xff09;中…

华为数通---配置Smart Link主备备份示例

定义 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个接口作为另一个的备份。Smart Link常用于双上行组网&#xff0c;提供可靠高效的备份和快速的切换机制。 目的 下游设备连接到上游设备&#xff0c;当使用单上行方式时&…

深度学习疲劳检测 驾驶行为检测 - python opencv cnn 计算机竞赛

文章目录 0 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习加…