发布时间:2026/7/22 15:44:43
实验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;}

相关新闻

2026/7/22 15:44:43

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

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

2026/7/22 15:39:43

html之flex伸缩盒子;grid布局

flex伸缩盒子 利用flex伸缩盒子可以把父级下的div的换行去掉,排列在一行中 demo来自微信小程序 先将父级div定义成伸缩盒子,然后子级每份占据1份父类空间flex简述 flex中三个属性&#xff1b;在后端看来这是flex构造方法的3个入参 flex: <flex-grow> <flex-shrink>…

2026/7/22 16:54:54

HelloGitHub 第113期:开发者必备的开源工具与实战技巧

1. HelloGitHub 第113期&#xff1a;开源世界的宝藏地图刚打开这期月刊时&#xff0c;我正喝着咖啡准备开始一天的工作。作为长期关注开源动态的技术从业者&#xff0c;HelloGitHub 就像每月定期送达的技术包裹&#xff0c;总能带来意想不到的惊喜。第113期依然保持着这个开源社…

2026/7/22 16:54:54

2026科创资源丰富的国内EMBA中立测评择校指南

民营企业家、企业创始人选EMBA&#xff0c;核心纠结集中在三点&#xff1a;科创资源是否落地、国际视野是否适配业务、圈层是否贴合企业赛道。本文从全球办学排名、院校办学定位、课程体系、学员圈层、产业资源五大客观维度&#xff0c;对科创资源丰富的国内EMBA主流项目做横向…

2026/7/22 16:54:54

文件管理器标签软件:Clover

&#xff08;获取方式在文末&#xff0c;关注我进群获取更多软件资源哦&#xff09;小伙伴们大家是否跟我一样&#xff0c;每天对着 Windows 自带的资源管理器来回找文件夹&#xff0c;是不是感觉像在迷宫里绕路&#xff1f;今天安利一款“给文件夹加标签”的小工具——Clover&…

2026/7/22 16:49:54

Design Compiler:时序路径的统计方式

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 本文将讨论Design Compiler中的各命令对于时序路径的统计方式&#xff0c;关于时序路径的更详细介绍&#xff0c;可以参考下面的博客。 静态时序分析&#x…

2026/7/22 9:29:13

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述&#xff1a;为什么我们需要一个本地通信服务器&#xff1f;在游戏开发、数字孪生、仿真训练等众多领域&#xff0c;Unity作为强大的实时3D内容创作平台&#xff0c;其核心逻辑通常由C#驱动。然而&#xff0c;当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/22 0:02:17

抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具

抓包代理链路下的 TLS 指纹变化分析&#xff1a;为什么调试环境会影响访问结果 摘要 在网页调试、接口联调、自动化巡检和授权采集排查中&#xff0c;抓包是常见手段。但很多开发者会遇到一个现象&#xff1a;正常访问页面时没有问题&#xff0c;一进入抓包或代理调试环境&…

2026/7/22 0:02:17

微信QQ聊天记录误删恢复与备份方案全指南

1. 聊天记录误删的常见场景与恢复思路作为一名长期关注数据安全的技术博主&#xff0c;我处理过上百起聊天记录误删的求助案例。手机误操作、系统升级失败、设备损坏是三大常见诱因。上周就遇到用户更新微信时断电&#xff0c;导致近两年的工作群聊记录全部消失的极端案例。不同…

2026/7/22 0:02:17

2026最新8款个人AI编程免费工具深度实测

作为一名全栈独立开发者&#xff0c;我最近半年一直在折腾副业项目&#xff0c;每个月在AI编程工具上的订阅费算下来其实也不算便宜。作为个人开发者&#xff0c;我们追求的就是用最少的成本获得最高效的开发体验。TRAE 基础版免费&#xff0c;字节跳动出品的国内首款 AI 原生 …

2026/7/21 20:02:44

3个高效策略:快速掌握Axure中文界面配置

3个高效策略&#xff1a;快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…