实验10 Bezier曲线生成-实验提高-控制点生成B样条曲线
本代码根据已知控制点( 10, 5, 0 ),( 5, 10, 0 ),( -5, 15, 0 ),( -10, -5, 0 ),( 4, -4, 0 ),( 10, 5, 0 ), ( 5, 10, 0 ), ( -5, 15, 0 ), ( -10, -5, 0 )( 10, 5, 0 )来生成三次B样条曲线。#includeGL/glut.h#includestdio.h#includestdlib.h#includevectorusingnamespacestd;structPoint{floatc[2];floatxc[0];floatyc[1];Point(){x0,y0;}Point(floatx0,floaty0){xx0,yy0;}Point(constPointpt){xpt.x,ypt.y;}floatoperator[](constinti){returnc[i];}};vectorPointGctrlPt,GbsCurvePt;intGnumSegment10;voidCalcBSPoints(){intnumCtrPtGctrlPt.size();floatF0[2],F1[2],F2[2],F3[2];floatt0;floatdt1/(float)GnumSegment;//第一段NumSubSegment 1个点第二段之后每段为NumSubSegment个点,因为第二段之后的起点为前一段的终点intnumCurvePoint(GnumSegment1)GnumSegment*(numCtrPt-4);GbsCurvePt.resize(numCurvePoint);//第一段起点编号为0第二段之后的为1原因见上for(inti0;i(numCtrPt-3);i){for(intj0;j2;j){F0[j](GctrlPt[i][j]4*GctrlPt[1i][j]GctrlPt[2i][j])/6.0f;F1[j](-3*GctrlPt[i][j]3*GctrlPt[2i][j])/6.0f;F2[j](3*GctrlPt[i][j]-6*GctrlPt[1i][j]3*GctrlPt[2i][j])/6.0f;F3[j](-GctrlPt[i][j]3*GctrlPt[1i][j]-3*GctrlPt[2i][j]GctrlPt[3i][j])/6.0f;}t(i0)?0:dt;//第一段起点参数为0第二段之后的为dt原因同上for(intj(i0)?0:1;jGnumSegment1;j){for(intk0;k2;k){GbsCurvePt[jGnumSegment*i][k]F0[k]F1[k]*tF2[k]*t*tF3[k]*t*t*t;}tdt;}}}voidControlPoint(constvectorPointvpt){glPointSize(3);glBegin(GL_POINTS);for(unsignedinti0;ivpt.size();i){glVertex2f(vpt[i].x,vpt[i].y);}glEnd();}voidPolylineGL(constvectorPointvpt){glBegin(GL_LINE_STRIP);for(unsignedinti0;ivpt.size();i){glVertex2f(vpt[i].x,vpt[i].y);}glEnd();}voidmyDisplay(){glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0f,0.0f,0.0f);ControlPoint(GctrlPt);glColor3f(0.0f,1.0f,0.0f);PolylineGL(GctrlPt);if(GctrlPt.size()4){glColor3f(1.0f,1.0f,1.0f);CalcBSPoints();PolylineGL(GbsCurvePt);}glFlush();}voidInit(){glClearColor(0.0,0.0,0.0,0.0);glShadeModel(GL_SMOOTH);floatpoints[9][3]{{10,5,0},{5,10,0},{-5,15,0},{-10,-5,0},{4,-4,0},{10,5,0},{5,10,0},{-5,15,0},{-10,-5,0}};Point pt;for(inti0;i9;i){Point ptPoint(points[i][0],points[i][1]);GctrlPt.push_back(pt);}}voidmyReshape(intw,inth){glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(-30.0,30.0,-30.0*(GLfloat)h/(GLfloat)w,30.0*(GLfloat)h/(GLfloat)w,0.0,100.0);}intmain(intargc,char*argv[]){glutInit(argc,argv);glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);glutInitWindowPosition(100,100);glutInitWindowSize(640,480);glutCreateWindow(B-Spline Curve);Init();glutDisplayFunc(myDisplay);glutReshapeFunc(myReshape);glutMainLoop();return0;}

相关新闻

半导体/高端制造 设计EDA首席科学家 18维度权威简历范本

半导体/高端制造 设计EDA首席科学家 18维度权威简历范本

1. 底层理论与专业储备 深耕半导体先进工艺物理、计算微电子学、EDA底层数学建模、工业软件基础理论领域15年+,具备基础理论原创+前沿科学研究+工程产业化落地+产业战略顶层设计四维首席科学家理论体系。深耕3nm/2nm及以下GAA、CFET全新先进工艺物理机理、量子效应调控、工艺…

2026/7/22 15:44:45阅读更多 →
结尾号召写不好,再好的AI文案也白费,深度拆解头部品牌私藏的7类高响应结尾结构

结尾号召写不好,再好的AI文案也白费,深度拆解头部品牌私藏的7类高响应结尾结构

更多请点击: https://codechina.net 第一章:结尾号召写不好,再好的AI文案也白费 一句无力的“谢谢观看”或模糊的“欢迎尝试”,足以让精心构建的AI文案前功尽弃。用户在阅读完技术内容后,行为路径往往由结尾号召&…

2026/7/22 15:42:45阅读更多 →
Python的GIL把我坑惨了,原来多线程和多进程的区别这么大

Python的GIL把我坑惨了,原来多线程和多进程的区别这么大

一个让我怀疑人生的性能优化 前年接了一个图像批处理项目。每天有上万张商品图片需要做缩放、水印和格式转换。我心想:“这还不简单?多线程并行处理,分分钟搞定。” 代码写得行云流水: import threading from PIL import Image…

2026/7/22 15:42:45阅读更多 →
TI VPDMA中断配置实战:从寄存器解析到系统级调试

TI VPDMA中断配置实战:从寄存器解析到系统级调试

1. 项目概述 在嵌入式视频处理系统的开发中,尤其是面对德州仪器(TI)这类高性能SoC时,中断管理往往是决定系统稳定性和实时性的关键。很多工程师拿到芯片手册,看到动辄几十页的寄存器描述,尤其是像VPDMA&…

2026/7/22 16:38:54阅读更多 →
桌面图标隐藏工具!录屏怕桌面太乱?隐藏S+!

桌面图标隐藏工具!录屏怕桌面太乱?隐藏S+!

前言 常年录教程、直播、线上会议的朋友一定深有体会,满屏文件、快捷方式全暴露,隐私文件一览无余。录出来的视频里,桌面图标乱七八糟。要是手动把图标藏起来,录完还得再费劲挪回原位。 今天分享两款“桌面图标一键隐藏工具”&a…

2026/7/22 16:38:54阅读更多 →
AI副业如何从0到月入5万?揭秘头部玩家正在用的3个公域流量裂变公式

AI副业如何从0到月入5万?揭秘头部玩家正在用的3个公域流量裂变公式

更多请点击: https://kaifayun.com 第一章:AI副业如何从0到月入5万?揭秘头部玩家正在用的3个公域流量裂变公式 在抖音、小红书、B站等公域平台,头部AI副业玩家已不再依赖“单点内容曝光”,而是通过可复制、可度量、可…

2026/7/22 16:38:54阅读更多 →
速度与精度的结合:Faster R-CNN模型的性能剖析

速度与精度的结合:Faster R-CNN模型的性能剖析

目标检测作为计算机视觉领域的核心问题之一,其重要性随着深度学习技术的发展而日益凸显。本文深入探讨了基于深度学习的Faster R-CNN模型,这是一种革命性的目标检测框架,它通过引入区域提议网络(Region Proposal Network, RPN&…

2026/7/22 16:38:54阅读更多 →
深入解析IOMM特殊复用:ADC触发、ePWM同步与安全机制实战

深入解析IOMM特殊复用:ADC触发、ePWM同步与安全机制实战

1. 项目概述与IOMM核心价值在嵌入式系统,尤其是汽车电子和工业控制这类对实时性、可靠性和资源利用率要求极高的领域,微控制器(MCU)的引脚资源往往非常紧张。一颗MCU需要驱动电机、采样传感器、处理通信、管理故障保护&#xff0c…

2026/7/22 16:38:54阅读更多 →
TI VPDMA中断寄存器深度解析与嵌入式视频处理驱动实战

TI VPDMA中断寄存器深度解析与嵌入式视频处理驱动实战

1. 项目概述与中断机制在视频处理中的核心地位在嵌入式视频处理系统的开发中,尤其是面对德州仪器(TI)这类高性能多媒体SoC时,中断管理往往是决定系统实时性、稳定性和效率的“命门”。我处理过不少基于达芬奇(DaVinci&…

2026/7/22 16:36:54阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →