- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第三次作业三次Bezier曲线的绘制
一.解题思路:
Bezier曲线是用N+1个顶点〔控制点〕所构成的N根折线来定义一根N阶曲线。本次作业中的三次Bezier曲线有4个顶点,设它们分别为P0,P1,P2,P3,那么对于曲线上各个点Pi〔x,y〕满足以下关系:
x=x0*1-u)*(1-u)*(1-u)+x1*3*u*(1-u)*(1-u)+x2*3*u*u*(1-u)+x3*t*t*t
y=y0*(1-u)*(1-u)*(1-t)+y1*3*u*(1-u)*(1-u)+y2*3*u*u*(1-u)+y3*u*u*u
所以只要确定控制点的坐标,该曲线可通过编程即可绘制出来。
此题取的初始控制点为:p0(-600,100)、p1(-300,400)、p2(300,600)、p3(600,100)。还可以通过输入不同的控制点画出不同的三次Bezier曲线。
程序中有绘制曲线,清空,清屏,退出四个按钮,其中点击绘制曲线按钮可根据控制点绘制出相应的曲线;点击清空按钮那么可以将已绘制的曲线去除;点击清屏按钮可以将输入文本框中的数据去除,以方便输入新的数据;点击退出按钮那么退出程序。
二.程序代码
Functionf()
Picture1.FontSize=9
Picture1.Scale(-900,1000)-(900,-1000)
Picture1.Line(-800,0)-(800,0)
Picture1.Line(0,800)-(0,-800)
Fori=-7To7
Picture1.Line(100*i,0)-(100*i,20)
Picture1.CurrentX=i*100-50:Picture1.CurrentY=-5:Picture1.Printi*100
Nexti
Fori=-7To-1
Picture1.Line(0,100*i)-(20,100*i)
Picture1.CurrentX=-100:Picture1.CurrentY=100*i+20:Picture1.Printi*100
Nexti
Fori=1To7
Picture1.Line(0,100*i)-(20,100*i)
Picture1.CurrentX=-100:Picture1.CurrentY=100*i+20:Picture1.Printi*100
Nexti
EndFunction
PrivateSubForm_Load()
Picture1.AutoRedraw=True
Picture1.ScaleWidth=900
Picture1.ScaleHeight=900
f
Text1.Text=-600:Text2.Text=100:Text3.Text=-300:Text4.Text=400
Text5.Text=300:Text6.Text=600:Text7.Text=600:Text8.Text=100
EndSub
PrivateSubcommand1_Click()
x0=Text1.Text:y0=Text2.Text
X1=Text3.Text:Y1=Text4.Text
X2=Text5.Text:Y2=Text6.Text
X3=Text7.Text:Y3=Text8.Text
Picture1.FontSize=18
Picture1.CurrentX=800:Picture1.CurrentY=-5:Picture1.PrintX
Picture1.CurrentX=10:Picture1.CurrentY=810:Picture1.PrintY
Fort=0To1Step0.001
x=x0*(1-t)*(1-t)*(1-t)+X1*3*t*(1-t)*(1-t)+X2*3*t*t*(1-t)+X3*t*t*t
y=y0*(1-t)*(1-t)*(1-t)+Y1*3*t*(1-t)*(1-t)+Y2*3*t*t*(1-t)+Y3*t*t*t
Picture1.CurrentX=x0+10:Picture1.CurrentY=y0+10:Picture1
文档评论(0)