CAD原理实验报告Word下载.docx
《CAD原理实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《CAD原理实验报告Word下载.docx(34页珍藏版)》请在冰豆网上搜索。
![CAD原理实验报告Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/2/1f030260-0d5d-4a8e-85bb-e503140f78f2/1f030260-0d5d-4a8e-85bb-e503140f78f21.gif)
三点画圆弧"
ClientHeight=5835
ClientLeft=120
ClientTop=450
ClientWidth=8280
LinkTopic="
Form1"
ScaleHeight=5835
ScaleWidth=8280
StartUpPosition=3'
窗口缺省
BeginVB.CommandButtonCommand3
退出"
Height=615
Left=6000
TabIndex=3
Top=4800
Width=1455
End
BeginVB.CommandButtonCommand2
取消"
Left=3360
TabIndex=2
BeginVB.CommandButtonCommand1
画弧"
Left=720
TabIndex=1
BeginVB.PictureBoxPicture1
Height=4335
Left=360
ScaleHeight=4275
ScaleWidth=7515
TabIndex=0
Top=240
Width=7575
End
AttributeVB_Name="
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
B"
Case3
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)
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<
t1=t1+PI
0Andpt
(1).y-Y0<
t1=t1+2*PI
t2=Atn((pt
(2).y-Y0)/(pt
(2).x-X0))
Ifpt
(2).x-X0>
0Andpt
(2).y-Y0>
t2=t2
Ifpt
(2).x-X0<
t2=t2+PI
0Andpt
(2).y-Y0<
t2=t2+2*PI
Ift1<
t3<
t2Then
Fort=t1Tot2Step0.001
x=X0+r*Cos(t)
y=Y0+r*Sin(t)
Picture1.PSet(x,y)
Nextt
ElseIft2<
t1<
t3Then
ElseIft3<
t2<
t1Then
ElseIft1<
Fort=t2Tot1Step0.001
PrivateSubCommand2_Click()
Picture1.Cls
PrivateSubCommand3_Click()
四实验结果
实验报告
(二)
使用VB软件实现两点画圆弧
2.掌握使用两端点,以及其中一端点切线画圆弧的基本原理和绘制方法;
3.运用VisualBasic6.0软件编写程序实现通过两端点,以及其中一端点切线成功绘制圆弧。
三、实验内容
1、实验原理
已知一圆弧两端点A,B和A端点切线的方向数L
①根据向量的知识,由已知一圆弧两端点A,B和A端点切线的方向数L求出圆心的坐标和半径大小;
②计算在圆心为原点的新坐标系下初始角和终止角的正切值,进而求出对应的角度;
③判断L和半径向量的乘积,若大于0,则为逆时针方向画圆弧,小于0,则为顺时针方向画圆弧;
④根据圆的参数方程表达式,利用VB绘制圆弧。
2、源代码
AutoRedraw=-1'
True
两点加切线画圆弧"
ClientHeight=6810
ClientWidth=8340
ScaleHeight=6810
ScaleWidth=8340
Left=6240
Top=6000
Width=1575
Left=480
Height=5175
ScaleHeight=5115
Top=480
Picture1.Circle(x,y),1
L"
'
曲线在A点处的切线矢量
Picture1.Line(pt
(1).x,pt
(1).y)-(pt(3).x,pt(3).y)
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>
ElseIfm<
t1=pi-t1
0Andn<
t1=pi+t1
ElseIfm>
t1=2*pi-t1
i=pt
(2).x-X0
j=pt
(2).y-Y0
t2=Atn(Abs(j/i))
Ifi>
0Andj>
ElseIfi<
t2=pi-t2
0Andj<
t2=pi+t2
ElseIfi>
t2=2*pi-t2
Ifk>
Fort=t1Tot2Step0.0001
Else:
t2=t2+2*pi
Ift1>
Fort=t2Tot1Step0.0001
t1=t1+2*pi
四、
实验结果
实验报告(三)
运用VB软件绘制Bezier曲线
1、了解服装CAD中的常用曲线,通过实际操作加以深入认识;
2、了解Bezier曲线的特点,根据Bezier曲线的基本原理,推断出绘制方法并进行操作;
3、运用VisualBasic6.0软件编写程序实现曲线的成功绘制。
设空间有n+1个点P0,P1,P2,……,Pn,则称下列函数所决定的参数曲线为Bezier曲线:
在给定几个点时,可在t
[0,1]区间取一系列值,相应的计算一系列的x(t),y(t),z(t)的值,由此可确定空间曲线上各点的位置,连接后即得该空间曲线。
2、源代码
BeginVB.FormBezier
Bezier曲线"
ClientHeight=7575
ClientLeft=60
ClientWidth=9255
ScaleHeight=7575
ScaleWidth=9255
取消"
Height=495
Left=3840
Top=6600
退出"
Left=6720
画弧"
Left=1080
Height=5655
Left=600
ScaleHeight=5595
ScaleWidth=7995
Width=8055
Bezier"
P0"
P1"
P2"
Case4
P3"
Case5
P4"
Case6
P5"
Case7
P6"
Case8
P7"
Case9
P8"
Case10
P9"
Case11
P10"
Picture1.Line(pt(UBound(pt)-1).x,pt(UBound(pt)