CAD原理实验报告.docx
《CAD原理实验报告.docx》由会员分享,可在线阅读,更多相关《CAD原理实验报告.docx(34页珍藏版)》请在冰豆网上搜索。
CAD原理实验报告
服装CAD原理与应用
实验报告
实验报告
(一)三点画圆弧----------------------(02-07)
实验报告
(二)两点画圆弧----------------------(08-12)
实验报告(三)Bezier曲线的绘制----------------(13-17)
实验报告(四)Hermite曲线的绘制---------------(18-22)
实验报告(五)B样条曲线的绘制-----------------(23-27)
实验报告
(一)
一、实验题目
使用VB软件实现三点画圆弧
二、实验目的
1.了解服装CAD中的常用曲线,灵活运用理论知识加以运用,实现操作;
2.掌握三点画圆弧的基本原理和绘制方法;
3.运用VisualBasic6.0软件编写程序实现通过三点的控制成功绘制圆弧。
三、实验目的
1.实验原理
已知三个点A(x1,y1),B(x2,y2)C(x3,y3)的坐标
①根据中垂线相交于圆心可以求出圆心(x,y)的坐标以及半径r
②根据圆心以及已知三点的坐标,判断出所画圆弧的起始角,终止角和中间角的正切角度值,进而求出这三个角的角度。
③比较起始角,终止角和中间角这三点的角度大小,判断出所画圆弧的方向。
2.源代码
VERSION5.00
BeginVB.FormForm1
Caption="三点画圆弧"
ClientHeight=5835
ClientLeft=120
ClientTop=450
ClientWidth=8280
LinkTopic="Form1"
ScaleHeight=5835
ScaleWidth=8280
StartUpPosition=3'窗口缺省
BeginVB.CommandButtonCommand3
Caption="退出"
Height=615
Left=6000
TabIndex=3
Top=4800
Width=1455
End
BeginVB.CommandButtonCommand2
Caption="取消"
Height=615
Left=3360
TabIndex=2
Top=4800
Width=1455
End
BeginVB.CommandButtonCommand1
Caption="画弧"
Height=615
Left=720
TabIndex=1
Top=4800
Width=1455
End
BeginVB.PictureBoxPicture1
Height=4335
Left=360
ScaleHeight=4275
ScaleWidth=7515
TabIndex=0
Top=240
Width=7575
End
End
AttributeVB_Name="Form1"
AttributeVB_GlobalNameSpace=False
AttributeVB_Creatable=False
AttributeVB_PredeclaredId=True
AttributeVB_Exposed=False
Privatept()Asmypoint
PrivateSubForm_Load()
ReDimpt
(1)
EndSub
PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
DimsAsInteger
pt(UBound(pt)).x=x
pt(UBound(pt)).y=y
Picture1.Circle(x,y),15
s=Val(UBound(pt))
SelectCases
Case1
Picture1.Print"A"
Case2
Picture1.Print"B"
Case3
Picture1.Print"C"
EndSelect
IfUBound(pt)>1Then
Picture1.Line(pt(UBound(pt)-1).x,pt(UBound(pt)-1).y)-(pt(UBound(pt)).x,pt(UBound(pt)).y)
EndIf
ReDimPreservept(UBound(pt)+1)
EndSub
PrivateSubCommand1_Click()
DimA1,A2,B1,B2,C1,C2AsSingle
DimX0,Y0,r,PIAsDouble
Dimt1,t2,t3AsDouble
DimtAsDouble
A1=pt
(1).x^2+pt
(1).y^2-pt(3).x^2-pt(3).y^2
A2=pt
(2).x^2+pt
(2).y^2-pt(3).x^2-pt(3).y^2
B1=2*pt(3).x-2*pt
(1).x
B2=2*pt(3).x-2*pt
(2).x
C1=2*pt
(1).y-2*pt(3).y
C2=2*pt
(2).y-2*pt(3).y
X0=(A1*C2-A2*C1)/(B2*C1-B1*C2)
Y0=(A1*B2-A2*B1)/(B2*C1-B1*C2)
r=Sqr((pt
(1).x-X0)*(pt
(1).x-X0)+(pt
(1).y-Y0)*(pt
(1).y-Y0))
PI=4*Atn
(1)
t1=Atn((pt
(1).y-Y0)/(pt
(1).x-X0))
Ifpt
(1).x-X0>0Andpt
(1).y-Y0>0Then
t1=t1
Else
Ifpt
(1).x-X0<0Andpt
(1).y-Y0>0Then
t1=t1+PI
Else
Ifpt
(1).x-X0<0Andpt
(1).y-Y0<0Then
t1=t1+PI
Else
t1=t1+2*PI
EndIf
EndIf
EndIf
t2=Atn((pt
(2).y-Y0)/(pt
(2).x-X0))
Ifpt
(2).x-X0>0Andpt
(2).y-Y0>0Then
t2=t2
Else
Ifpt
(2).x-X0<0Andpt
(2).y-Y0>0Then
t2=t2+PI
Else
Ifpt
(2).x-X0<0Andpt
(2).y-Y0<0Then
t2=t2+PI
Else
t2=t2+2*PI
EndIf
EndIf
EndIf
Ift1Fort=t1Tot2Step0.001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
ElseIft2t2=t2+2*PI
Fort=t1Tot2Step0.001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
ElseIft3t2=t2+2*PI
Fort=t1Tot2Step0.001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
ElseIft1t1=t1+2*PI
Fort=t2Tot1Step0.001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
ElseIft3t1=t1+2*PI
Fort=t2Tot1Step0.001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
ElseIft2Fort=t2Tot1Step0.001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
EndIf
EndSub
PrivateSubCommand2_Click()
Picture1.Cls
ReDimpt
(1)
EndSub
PrivateSubCommand3_Click()
End
EndSub
四实验结果
实验报告
(二)
一、实验题目
使用VB软件实现两点画圆弧
二、实验目的
1.了解服装CAD中的常用曲线,灵活运用理论知识加以运用,实现操作;
2.掌握使用两端点,以及其中一端点切线画圆弧的基本原理和绘制方法;
3.运用VisualBasic6.0软件编写程序实现通过两端点,以及其中一端点切线成功绘制圆弧。
三、实验内容
1、实验原理
已知一圆弧两端点A,B和A端点切线的方向数L
①根据向量的知识,由已知一圆弧两端点A,B和A端点切线的方向数L求出圆心的坐标和半径大小;
②计算在圆心为原点的新坐标系下初始角和终止角的正切值,进而求出对应的角度;
③判断L和半径向量的乘积,若大于0,则为逆时针方向画圆弧,小于0,则为顺时针方向画圆弧;
④根据圆的参数方程表达式,利用VB绘制圆弧。
2、源代码
VERSION5.00
BeginVB.FormForm1
AutoRedraw=-1'True
Caption="两点加切线画圆弧"
ClientHeight=6810
ClientLeft=120
ClientTop=450
ClientWidth=8340
LinkTopic="Form1"
ScaleHeight=6810
ScaleWidth=8340
StartUpPosition=3'窗口缺省
BeginVB.CommandButtonCommand3
Caption="退出"
Height=615
Left=6240
TabIndex=3
Top=6000
Width=1575
End
BeginVB.CommandButtonCommand2
Caption="取消"
Height=615
Left=3360
TabIndex=2
Top=6000
Width=1575
End
BeginVB.CommandButtonCommand1
Caption="画弧"
Height=615
Left=480
TabIndex=1
Top=6000
Width=1575
End
BeginVB.PictureBoxPicture1
AutoRedraw=-1'True
Height=5175
Left=360
ScaleHeight=5115
ScaleWidth=7515
TabIndex=0
Top=480
Width=7575
End
End
AttributeVB_Name="Form1"
AttributeVB_GlobalNameSpace=False
AttributeVB_Creatable=False
AttributeVB_PredeclaredId=True
AttributeVB_Exposed=False
Privatept()Asmypoint
PrivateSubForm_Load()
ReDimpt
(1)
EndSub
PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
DimsAsInteger
pt(UBound(pt)).x=x
pt(UBound(pt)).y=y
Picture1.Circle(x,y),1
s=Val(UBound(pt))
SelectCases
Case1
Picture1.Print"A"
Case2
Picture1.Print"B"
Case3
Picture1.Print"L"'曲线在A点处的切线矢量
Picture1.Line(pt
(1).x,pt
(1).y)-(pt(3).x,pt(3).y)
EndSelect
ReDimPreservept(UBound(pt)+1)
EndSub
PrivateSubCommand1_Click()
DimX0,Y0,rAsDouble
Dima1,a2,b1,b2,c1,c2AsDouble
Dimt,t1,t2,i,j,k,m,nAsDouble
DimpiAsSingle
pi=4*Atn
(1)
a1=2*pt
(1).x-2*pt
(2).x
a2=pt(3).x-pt
(1).x
b1=2*pt
(1).y-2*pt
(2).y
b2=pt(3).y-pt
(1).y
c1=pt
(1).x^2-pt
(2).x^2+pt
(1).y^2-pt
(2).y^2
c2=(pt
(1).x-pt(3).x)*pt
(1).x+(pt
(1).y-pt(3).y)*pt
(1).y
X0=(b2*c1-b1*c2)/(a1*b2-a2*b1)
Y0=(a1*c2-a2*c1)/(a1*b2-a2*b1)
r=Sqr((pt
(1).x-X0)^2+(pt
(1).y-Y0)^2)
k=(pt(3).y-pt
(1).y)*(pt
(1).x-X0)-(pt(3).x-pt
(1).x)*(pt
(1).y-Y0)
m=pt
(1).x-X0
n=pt
(1).y-Y0
t1=Atn(Abs(n/m))
Ifm>0Andn>0Then
t1=t1
ElseIfm<0Andn>0Then
t1=pi-t1
ElseIfm<0Andn<0Then
t1=pi+t1
ElseIfm>0Andn<0Then
t1=2*pi-t1
EndIf
i=pt
(2).x-X0
j=pt
(2).y-Y0
t2=Atn(Abs(j/i))
Ifi>0Andj>0Then
t2=t2
ElseIfi<0Andj>0Then
t2=pi-t2
ElseIfi<0Andj<0Then
t2=pi+t2
ElseIfi>0Andj<0Then
t2=2*pi-t2
EndIf
Ifk>0Then
Ift1Fort=t1Tot2Step0.0001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
Else:
t2=t2+2*pi
Fort=t1Tot2Step0.0001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
EndIf
Else
Ift1>t2Then
Fort=t2Tot1Step0.0001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
Else:
t1=t1+2*pi
Fort=t2Tot1Step0.0001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
EndIf
EndIf
EndSub
PrivateSubCommand2_Click()
Picture1.Cls
ReDimpt
(1)
EndSub
PrivateSubCommand3_Click()
End
EndSub
四、
实验结果
实验报告(三)
一、实验题目
运用VB软件绘制Bezier曲线
二、实验目的
1、了解服装CAD中的常用曲线,通过实际操作加以深入认识;
2、了解Bezier曲线的特点,根据Bezier曲线的基本原理,推断出绘制方法并进行操作;
3、运用VisualBasic6.0软件编写程序实现曲线的成功绘制。
三、实验内容
1、实验原理
设空间有n+1个点P0,P1,P2,……,Pn,则称下列函数所决定的参数曲线为Bezier曲线:
在给定几个点时,可在t
[0,1]区间取一系列值,相应的计算一系列的x(t),y(t),z(t)的值,由此可确定空间曲线上各点的位置,连接后即得该空间曲线。
2、源代码
VERSION5.00
BeginVB.FormBezier
Caption="Bezier曲线"
ClientHeight=7575
ClientLeft=60
ClientTop=450
ClientWidth=9255
LinkTopic="Form1"
ScaleHeight=7575
ScaleWidth=9255
StartUpPosition=3'窗口缺省
BeginVB.CommandButtonCommand2
Caption="取消"
Height=495
Left=3840
TabIndex=3
Top=6600
Width=1455
End
BeginVB.CommandButtonCommand3
Caption="退出"
Height=495
Left=6720
TabIndex=2
Top=6600
Width=1455
End
BeginVB.CommandButtonCommand1
Caption="画弧"
Height=495
Left=1080
TabIndex=1
Top=6600
Width=1455
End
BeginVB.PictureBoxPicture1
Height=5655
Left=600
ScaleHeight=5595
ScaleWidth=7995
TabIndex=0
Top=480
Width=8055
End
End
AttributeVB_Name="Bezier"
AttributeVB_GlobalNameSpace=False
AttributeVB_Creatable=False
AttributeVB_PredeclaredId=True
AttributeVB_Exposed=False
Privatept()Asmypoint
PrivateSubForm_Load()
ReDimpt
(1)
EndSub
PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
DimsAsInteger
pt(UBound(pt)).x=x
pt(UBound(pt)).y=y
Picture1.Circle(x,y),15
s=Val(UBound(pt))
SelectCases
Case1
Picture1.Print"P0"
Case2
Picture1.Print"P1"
Case3
Picture1.Print"P2"
Case4
Picture1.Print"P3"
Case5
Picture1.Print"P4"
Case6
Picture1.Print"P5"
Case7
Picture1.Print"P6"
Case8
Picture1.Print"P7"
Case9
Picture1.Print"P8"
Case10
Picture1.Print"P9"
Case11
Picture1.Print"P10"
EndSelect
IfUBound(pt)>1Then
Picture1.Line(pt(UBound(pt)-1).x,pt(UBound(pt)