CAD原理实验报告.docx
- 文档编号:9127425
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:34
- 大小:85.13KB
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
Ift1 Fort=t1Tot2Step0.001 x=X0+r*Cos(t) y=Y0+r*Sin(t) Picture1.PSet(x,y) Nextt ElseIft2 t2=t2+2*PI Fort=t1Tot2Step0.001 x=X0+r*Cos(t) y=Y0+r*Sin(t) Picture1.PSet(x,y) Nextt ElseIft3 t2=t2+2*PI Fort=t1Tot2Step0.001 x=X0+r*Cos(t) y=Y0+r*Sin(t) Picture1.PSet(x,y) Nextt ElseIft1 t1=t1+2*PI Fort=t2Tot1Step0.001 x=X0+r*Cos(t) y=Y0+r*Sin(t) Picture1.PSet(x,y) Nextt ElseIft3 t1=t1+2*PI Fort=t2Tot1Step0.001 x=X0+r*Cos(t) y=Y0+r*Sin(t) Picture1.PSet(x,y) Nextt ElseIft2 Fort=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 Ift1 Fort=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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAD 原理 实验 报告