




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三次Bezier曲线一、程序设计功能:1.设计绘图窗口,能实现数据的多次输入;2.具有多次绘图功能,能实现不同数据的绘图;3.具有清屏功能,在画完该次图形后,清除图像并重建坐标系,4.具有数据完整性检测功能,当数据输入不完整时,通过弹窗提示用户数据输入不完整。二、程序设计思想:先在草稿纸上求出三次Bezier曲线的各坐标参数前的系数表达式:a1 = -px(0) + 3 * px(1) - 3 * px(2) + px(3) b1 = 3 * px(0) - 6 * px(1) + 3 * px(2) c1 = -3 * px(0) + 3 * px(1) d1 = px(0) a2 = -py(0) + 3 * py(1) - 3 * py(2) + py(3) b2 = 3 * py(0) - 6 * py(1) + 3 * py(2) c2 = -3 * py(0) + 3 * py(1) d2 = py(0)然后根据三次Bezier曲线的特点来定义为以u为变量的函数,然后根据取点速率的不同来绘制相应四个顶点的曲线。三、程序代码:Private Sub Command1_Click()Picture1.DrawWidth = 2Picture1.FontSize = 12 此处定义绘制坐标系时的字体大小,因为后面程序要用到字体设置,故此处字体设置要重新声明,不可用系统默认的字体,否则再次绘制图形时,坐标由于字体过大而很难看Picture1.Scale (-300, 300)-(300, -300) 定义PictureBox坐标系Picture1.Line (-300, 0)-(300, 0)Picture1.Line (0, 300)-(0, -300) VB编译系统中,其默认的是在Form(窗体)中画图,当需要在其他属性框中画图时,需要加上其对应的属性框名称Picture1.CurrentX = 270: Picture1.CurrentY = 40: Picture1.Print XPicture1.CurrentX = 15: Picture1.CurrentY = 285: Picture1.Print YPicture1.FontSize = 9 坐标上的数字字体小一些For i = -280 To 280 Step 40Picture1.Line (i, 0)-(i, 8)Picture1.CurrentX = i - 12: Picture1.CurrentY = -5: Picture1.Print iNext iFor j = -280 To -40 Step 40Picture1.Line (0, j)-(8, j)Picture1.CurrentX = -28: Picture1.CurrentY = j + 10: Picture1.Print jNext jFor j = 40 To 280 Step 40Picture1.Line (0, j)-(8, j)Picture1.CurrentX = -28: Picture1.CurrentY = j + 10: Picture1.Print jNext j Dim px(4) As Double 定义控制点的x坐标的数组 Dim py(4) As Double 定义控制点的y坐标的数组 Dim a1, b1, c1, d1 As Double 定义x系数 Dim a2, b2, c2, d2 As Double 定义y系数 Dim x, y, u As Double 定义曲线中的自变量u和变量x,y If (Not IsNumeric(Text1) Or Not IsNumeric(Text2) Or Not IsNumeric(Text3) Or Not IsNumeric(Text4) _ Or Not IsNumeric(Text5) Or Not IsNumeric(Text6) Or Not IsNumeric(Text7) Or Not IsNumeric(Text8) ThenMsgBox 对不起!系统检测到数据输入不完整,请您输入完整后绘图。谢谢配合!, , 友情提示Else px(0) = Text1.Text: py(0) = Text2.Text px(1) = Text3.Text: py(1) = Text4.Text px(2) = Text5.Text: py(2) = Text6.Text px(3) = Text7.Text: py(3) = Text8.Text Picture1.FontSize = 18 设置字体,为显示输入的四个点设置字体大小 Picture1.CurrentX = px(0): Picture1.CurrentY = py(0): Picture1.Print P; 0 P0单独打印 For i = 0 To 2 Picture1.DrawWidth = 1.5 Picture1.Line (px(i), py(i)-(px(i + 1), py(i + 1), vbGreen: Picture1.Print P; i + 1 P1,P2,P3用for循环打印 Next i For i = 0 To 3 绘制四个圆点,此处代码可优化,亦可用circle语句画小圆后填充颜色 Picture1.DrawWidth = 7 Picture1.Line (px(i), py(i)-(px(i) + 1, py(i) - 1) Next i a1 = -px(0) + 3 * px(1) - 3 * px(2) + px(3) 计算x和y的参数 b1 = 3 * px(0) - 6 * px(1) + 3 * px(2) c1 = -3 * px(0) + 3 * px(1) d1 = px(0) a2 = -py(0) + 3 * py(1) - 3 * py(2) + py(3) b2 = 3 * py(0) - 6 * py(1) + 3 * py(2) c2 = -3 * py(0) + 3 * py(1) d2 = py(0) For u = 0 To 1 Step 0.00001每当u增加0.00001求一次x和y x = a1 * u 3 + b1 * u * u + c1 * u + d1 求x的值 y = a2 * u 3 + b2 * u * u + c2 * u + d2 求y的值 If u = 0 Then Picture1.CurrentX = x 设置画线起点 Picture1.CurrentY = y Else Picture1.DrawWidth = 3 Picture1.Line -(x, y), RGB(255, 0, 0)连点成线 End If Next uEnd IfEnd SubPrivate Sub Command2_Click() 用于清空输入数据 Text1.Text = Text2.Text = Text3.Text = Text4.Text = Text5.Text = Text6.Text = Text7.Text = Text8.Text = End SubPrivate Sub Command3_Click() 清屏后再次绘制坐标系Picture1.ClsPicture1.DrawWidth = 2Picture1.FontSize = 12 此处定义绘制坐标系时的字体大小,因为后面程序要用到字体设置,故此处字体设置要重新声明,不可用系统默认的字体,否则再次绘制图形时,坐标由于字体过大而很难看Picture1.Scale (-300, 300)-(300, -300) 定义PictureBox坐标系Picture1.Line (-300, 0)-(300, 0)Picture1.Line (0, 300)-(0, -300) VB编译系统中,其默认的是在Form(窗体)中画图,当需要在其他属性框中画图时,需要加上其对应的属性框名称Picture1.CurrentX = 270: Picture1.CurrentY = 40: Picture1.Print XPicture1.CurrentX = 15: Picture1.CurrentY = 285: Picture1.Print YPicture1.FontSize = 9For i = -280 To 280 Step 40Picture1.Line (i, 0)-(i, 8)Picture1.CurrentX = i - 12: Picture1.CurrentY = -5: Picture1.Print iNext iFor j = -280 To -40 Step 40Picture1.Line (0, j)-(8, j)Picture1.CurrentX = -28: Picture1.CurrentY = j + 10: Picture1.Print jNext jFor j = 40 To 280 Step 40Picture1.Line (0, j)-(8, j)Picture1.CurrentX = -28: Picture1.CurrentY = j + 10: Picture1.Print jNext jEnd SubPrivate Sub Form_Load() 预输入数据,避免调试时多次输入数据,其随窗体运行而显示 Text1.Text = -260: Text2.Text = -230 冒号用于多条语句并行书写,以减小代码所占空间 Text3.Text = 260: Text4.Text = -230 Text5.Text = 200: Text6.Text = 230 Text7.Text = -260: Text8.Text = 230End SubVB程序运行结果图片展示:第三次程序设计心得在三次Bezier曲线的程序设计中,明白了计算机对于图行处理的能力是相当强的。对于VB而言,其能根据取点速率的不同而精确确定相应图形的图像,能很好的满足人们在日常工作中的图像需求。在本次程序设计中花费了大量时间在程序优化上,特别是在界面美化上。因为我始终觉得一个良好的可执行程序不仅要具有精确计算的能力及绘图能力,还应该具有良好的用户体验界面,真正让用户在使用该程序时能有愉悦爽朗
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 维修图纸销售合同范本
- 聘任合同范本2016公示
- 公司股份赠予合同范本
- 港口美甲店转租合同范本
- 2025公司职员试用合同模板
- 电商预约合同范本
- 正规产品供货合同范本
- 产床买卖合同范本
- 2025汽车销售委托代理合同范本
- 外贸运输合同范本英文
- 2025新租房合同范本(标准)
- 新版煤矿安全规程解读
- 儿童自闭症教学方法
- 五年级下学期数学期末质量分析
- 北京市通州区2024-2025学年七年级下学期期末道德与法治试题(含答案)
- 2025年甘肃高速公路处收费人员招聘考试(公共基础知识)历年参考题库含答案详解(5套)
- 2025年新版节能减排生态环保知识竞赛考试题库及答案
- 2025年重庆交安考试题库及答案
- 2025年岗前安全培训试题及答案
- 2025年甘肃兰州市事业单位招考笔试《公共基础知识》题库(共50题)及答案
- 地铁站基坑施工监测方案
评论
0/150
提交评论