Bezier曲线实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Bezier曲线实验报告
1015403072 任茜
一、.实验目的
1、了解服装CAD中Bezier曲线的应用。
2、掌握Bezier曲线的基本原理和方法,了解Bezier曲线的特点。
3、运用Visual Basic 6.0软件编写程序实现曲线的成功绘制,并认识Bezier曲线的形状及特点。
二、实验原理
在空间给定n+1个点P0,P1,P2,,,Pn,称下列参数曲线为n次的Bezier曲线。
其中Ji,n(t)是Bernstein基函数,即
一般称折线P0P1P2…Pn为曲线P(t)的控制多边形;称点P0,P1,P2,…,Pn为P(t)的控制顶点。
在空间曲线的情况下,曲线P(t)=(x(t),y(t),z(t))和控制顶点Pi=(Xi,Yi,Zi)的关系用分量写出即
当t在区间[0,1]上变动时,就产生了Bezier曲线。
若只考虑x和y,就是平面上的Bezier曲线。
以三次Bezier曲线为例,它可用矩阵形式表示如下
三、实验程序
Private pt() As mypoint
Private Sub Form_Load()
ReDim pt(1)
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Dim s As Integer
pt(UBound(pt)).x = x
pt(UBound(pt)).y = y
Picture1.Circle (x, y), 15
s = Val(UBound(pt))
Select Case s
Case 1
Picture1.Print "P0"
Case 2
Picture1.Print "P1"
Case 3
Picture1.Print "P2"
Case 4
Picture1.Print "P3"
Case 5
Picture1.Print "P4"
Case 6
Picture1.Print "P5"
Case 7
Picture1.Print "P6"
Case 8
Picture1.Print "P7"
Case 9
Picture1.Print "P8"
Case 10
Picture1.Print "P9"
Case 11
Picture1.Print "P10"
End Select
If UBound(pt) > 1 Then
Picture1.Line (pt(UBound(pt) - 1).x, pt(UBound(pt) - 1).y)-(pt(UBound(pt)).x, pt(UBound(pt)).y)
End If
ReDim Preserve pt(UBound(pt) + 1)
End Sub
Private Sub Command1_Click()
Dim i%, t#
Dim j, n As Integer
Dim s, x, y As Single
n = UBound(pt) - 1 - 1
For j = 1 To 1000
x = 0
y = 0
For i = 0 To n
t = j / 1000
x = x + pt(i + 1).x * B(i, n, t)
y = y + pt(i + 1).y * B(i, n, t)
Next i
Picture1.PSet (x, y)
Next j
End Sub
Private Function fact(n As Integer)
Dim i As Integer
Dim s As Long
s = 1
For i = 1 To n
s = s * i
Next i
fact = s
End Function
Private Function B(i%, n%, t#) As Single
B = (fact(n) * t ^ i * (1 - t) ^ (n - i)) / (fact(i) * fact(n - i)) End Function
Private Sub Command2_Click()
Picture1.Cls
ReDim pt(1) 'pt(1)为第一个点P0
End Sub
Private Sub Command3_Click()
End
End Sub
四、实验结果。