构建三维形体线框模型实现正投影变换和旋转变换.docx
《构建三维形体线框模型实现正投影变换和旋转变换.docx》由会员分享,可在线阅读,更多相关《构建三维形体线框模型实现正投影变换和旋转变换.docx(10页珍藏版)》请在冰点文库上搜索。
![构建三维形体线框模型实现正投影变换和旋转变换.docx](https://file1.bingdoc.com/fileroot1/2023-8/20/b72ce571-a1cb-4338-b917-02c0bee01498/b72ce571-a1cb-4338-b917-02c0bee014981.gif)
构建三维形体线框模型实现正投影变换和旋转变换
作业:
构建三维形体线框模型,实现正投影变换和旋转变换
要求打印:
1、设计说明书参照《毕业设计》模板要求;
2、程序清单;
目录
摘要 1
1.构建三维线框模型2
2.VB演示3
3.源程序代码5
参考文献8
摘要
近年来随着计算机技术被广泛而迅速的普及,工程设计人员越来越青睐电脑辅助软件来解决实际工程问题。
重要的是如何用计算机来表现实际的事物,应用数学的方法表示图形,是计算机易于接受并处理的数据模式。
在计算机领域,图形编程是一个很重要的内容。
VisualBasic作为一门功能强大的计算机语言,为用户提供了一系列的属性、方法和控件,利用它们,可以轻松的实现一般图形绘制。
关键词:
CAD/CAMVisualBasic语言
1.构建三维线框模型
1、定义
用线条表示轮廓、交线、棱线来反映形状的模型,提供形体表面不连续处的信息。
1.2模型
点6个
xyz
1.000
2.1000
3.0100
4.01010
5.0010
6.10010
线9条
1.12
2.23
3.34
4.46
5.26
6.13
7.45
8.56
9.15
2.VB演示
VB演示程序截图如下
演示效果图如下
3.源程序代码
1.模块代码(通用)
OptionBase1
Dimdian()AsDouble,xian()AsInteger
Dimzbd()AsDouble,zbx()AsInteger
Sub初始化数据(filenameAsString)
OpenfilenameForInputAs#1
Do
Input#1,a$
LoopUntilLeft(a,1)="点"
num=Val(Mid(a,2))
ReDimdian(num,4)
Fori=1Tonum
Input#1,dian(i,1),dian(i,2),dian(i,3)
dian(i,4)=1
Nexti
Do
Input#1,a$
LoopUntilLeft(a,1)="线"
num=Val(Mid(a,2))
ReDimxian(num,2)
Fori=1Tonum
Input#1,xian(i,1),xian(i,2)
Nexti
Close#1
ReDimzbd(4,4)
ReDimzbx(3,2)
zbd(1,1)=0
zbd(1,2)=0
zbd(1,3)=0
zbd(1,4)=1
zbd(2,1)=20
zbd(2,2)=0
zbd(2,3)=0
zbd(2,4)=1
zbd(3,1)=0
zbd(3,2)=20
zbd(2,1)=20
zbd(2,2)=0
zbd(2,3)=0
zbd(2,4)=1
zbd(3,1)=0
zbd(3,2)=20
zbd(3,3)=0
zbd(3,4)=1
zbd(4,1)=0
zbd(4,2)=0
zbd(4,3)=20
zbd(4,4)=1
zbx(1,1)=1
zbx(1,2)=2
zbx(2,1)=1
zbx(2,2)=3
zbx(3,1)=1
zbx(3,2)=4
Timer1_Timer
EndSub
Subdraw(dian()AsDouble,xian()AsInteger,XAsInteger,YAsInteger)
Fori=1ToUBound(xian,1)
Picture1.Line(X+dian(xian(i,1),1),Y-dian(xian(i,1),3))-(X+dian(xian(i,2),1),Y-dian(xian(i,2),3))
Nexti
EndSub
PrivateSubLabel1_Click()
EndSub
PrivateSubTimer1_Timer()
Dimtx1()AsDouble,tx2()AsDouble
Picture1.Cls
dian=txbh(dian,5)
zbd=txbh(zbd,5)
tx1=txbh(dian,1)
tx2=txbh(zbd,1)
drawtx1,xian,0,0
drawtx2,zbx,0,0
tx1=txbh(dian,2)
tx2=txbh(zbd,2)
drawtx1,xian,0,0
drawtx2,zbx,0,0
tx1=txbh(dian,3)
tx2=txbh(zbd,3)
drawtx1,xian,0,0
drawtx2,zbx,0,0
tx1=txbh(dian,4)
tx2=txbh(zbd,4)
drawtx1,xian,80,60
drawtx2,zbx,80,60
EndSub
PrivateSub打开_Click()
CommonDialog1.ShowOpen
IfCommonDialog1.filename<>""Then
初始化数据CommonDialog1.filename
EndIf
EndSub
PrivateSub启动_Click()
Timer1.Enabled=True
EndSub
PrivateSub停止_Click()
Timer1.Enabled=False
EndSub
PrivateSub退出_Click()
End
EndSub
2.窗体代码
Functionjzc(a()AsDouble,b()AsDouble)AsDouble()
Dimc()AsDouble
c=a
Fori=1ToUBound(a,1)
Forj=1ToUBound(a,2)
c(i,j)=0
Fork=1ToUBound(b,1)
c(i,j)=c(i,j)+a(i,k)*b(k,j)
Nextk
Nextj
Nexti
Fori=1ToUBound(c,1)
Forj=1ToUBound(c,2)
c(i,j)=c(i,j)/c(i,UBound(c,2))
Nextj
Nexti
jzc=c
EndFunction
'完成图形变换
'a模型数据b变换类型
'b=1正投影
'b=2侧投影
'b=3水平投影
'b=4正等侧投影
'b=5绕Z轴旋转5度
Functiontxbh(dian()AsDouble,bAsInteger)AsDouble()
Dimbhjz(4,4)AsDouble
SelectCaseb
Case1:
bhlx$="正投影"
Case2:
bhlx$="侧投影"
Case3:
bhlx$="水平投影"
Case4:
bhlx$="正等侧投影"
Case5:
bhlx$="绕Z轴旋转5度"
EndSelect
OpenApp.Path+"\bhjz.txt"ForInputAs#2
Do
Input#2,temp$
LoopUntiltemp=bhlx
Fori=1To4
Forj=1To4
Input#2,bhjz(i,j)
Nextj
Nexti
Close#2
txbh=jzc(dian,bhjz)
EndFunction
参考文献
[1]薛晓萍,韩育.VisualBasic程序设计.北京:
中国科学技术出版社,2006.5
[2]李龙星.线性代数.北京:
机械工业出版社,2006.8
[3]夏齐霄,雷红.设计VB编程基础及应用实例.北京:
国防工业出版社,2010.8
[4]苏金明.用VisualBasic开发交互式CAD系统.北京:
电子工业出版社,2003.5