绘制凸多面体三面投影图和正轴测图._第1页
绘制凸多面体三面投影图和正轴测图._第2页
绘制凸多面体三面投影图和正轴测图._第3页
绘制凸多面体三面投影图和正轴测图._第4页
绘制凸多面体三面投影图和正轴测图._第5页
已阅读5页,还剩7页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、绘制凸多面体三面投影图和正轴测图班级:姓名:当口子亏: 指导老师:,立体图及顶点编号、各点坐标表面编号:二,数据文件:A:60,0,0,60,30,0,30,60,0,0,60,0,0,0,0,60,0,20,60,30,20,30,60,47,15,60,60,0,60,60,0,0,60,15,0,60NPS : 5,5,6,5,6,5,6,6S :1,2,7,6,1,0,2,3,8,7,2,0,3,4,10,9,8,3,5,11,10,4,5,0,7,8,9,12,6,7,9,10,11,12,9,0,1,6,12,11,5,1,1,5,4,3,2,1三,程序清单:Option Base

2、 1Dim g As IntegerPrivate Sub Command1_Click() Form2.Visible = TrueForm1.Visible = False Form2.Height = 10000Form2.Width = 12000 Form2.Pic2.Width = 9000 Form2.Pic2.Height = 9000Form2.Pic2.Scale (-140, 120)-(160, -140) Form2.Pic2.DrawWidth = 2 m = Val(Text1.Text) n = Val(Text2.Text) ns = Val(Text3.Te

3、xt) np = Val(Text4.Text) theta = Val(Text5.T ext) phi = Val(Text6.Text)将输入的数据输出给各项值Dim ss As IntegerReDim a(m, n), b(m, n), nv(m, n), s(ns, np) ReDim t(4, 4), nps(1, ns), f(ns), e(24, 3) FileName = a.txtCall inputdat(m, n - 1, a(), FileName)For i = 1 To m a(i, 4) = 1Next iFileName = nps.txtCall inpu

4、tdat(1, ns, nps(), FileName)FileName = s.txtCall inputdat(ns, np, s(), FileName)theta = theta * 0.01745phi = phi * 0.01745Rem 矩阵初始化For i = 1 To 4For j = 1 To 4t(i, j) = 0Next jNext iFor ss = 1 To 3For i = 1 To 4For j = 1 To 4t(i, j) = 0Next j, iRem通过select语句分别给正面投影、水平投影、侧面投影变换矩阵赋值Select Case ssCase

5、1给正面投影变换矩阵赋值t(1, 1) = 1: t(2, 2) = 0: t(3, 3) = 1: t(4, 3) = 40: t(4, 1) = 40Case 2给水平投影变换矩阵赋值t(1, 1) = 1: t(2, 3) = -1: t(4, 3) = -20: t(4, 4) = 1: t(4, 1) = 40 Case 3给侧面投影变换矩阵赋值 t(2, 1) = -1: t(3, 3) = 1: t(4, 1) = -10: t(4, 4) = 1: t(4, 3) = 40 End SelectRem 矩阵相乘Call mult(a(), t(), b(), m, n, 4)R

6、em 绘图输出Rem 绘制三视图For i = 1 To nsFor k = 1 To nps(1, i)x = -b(s(i, k), 1): y = b(s(i, k), 3)If k = 1 ThenForm2.Pic2.PSet (x, y)ElseForm2.Pic2.Line -(x, y)End IfNext kNext iNext sst(1, 1) = Cos(theta): t(1, 3) = -Sin(theta) * Sin(phi)t(2, 1) = -Sin(theta): t(2, 3) = -Cos(theta) * Sin(phi)t(3, 3) = Cos(

7、phi): t(4, 4) = 1Call mult(a(), t(), b(), m, n, 4)Call judge(s(), b(), f(), ns)Call creat_edgetable(s(), nps(), f(), e(), ns, g)Call plot1(b(), e(), g - 1)Form2.Pic1.Print 棱 边 表 Form2.Pic1.Print 棱号; 起点; 终点; 可见性g = g - 1For i = 1 To gj = e(i, 1): k = e(i, 2)Form2.Pic1.Print i; ; j; ; k; ; e(i, 3)Next

8、 iEnd SubSub inputdat(row, column, metry(), datfilename)Open App.Path & datfilename For Input As #1For i = 1 To rowFor j = 1 To columnInput #1, metry(i, j)Next jNext iClose #1End SubSub mult(a(), t(), b(), m, n, l)矩阵相乘子程序For i = 1 To mFor j = 1 To nb(i, j) = 0 For k = 1 To lb(i, j) = b(i, j) + a(i,

9、k) * t(k, j) Next kNext jNext iEnd SubRem 判别表面的可见性并加以标记。Sub judge(s(), nv(), f(), ns)For i = 1 To nsx1 = nv(s(i, 1), 1)z1 = nv(s(i, 1), 3)x2 = nv(s(i, 2), 1)z2 = nv(s(i, 2), 3)x3 = nv(s(i, 3), 1)z3 = nv(s(i, 3), 3)b = (z2 - z1) * (x3 - x1) - (x2 - x1) * (z3 - z1)If b 0 Thenf(i) = 1Elsef(i) = 0End If

10、Next i创建棱边表子程序End SubSub creat_edgetable(s(), nps(), f(), e(), ns, g)g = 1For i = 1 To nsIf f(i) = 1 ThenFor j = 1 To nps(1, i) - 1e1 = s(i, j)e2 = s(i, j + 1)For k = 1 To gIf e(k, 1) = e2 And e(k, 2) = e1 ThenExit ForEnd IfNext kIf k = g + 1 Thene(g, 1) = e1: e(g, 2) = e2e(g, 3) = 1g = g + 1End If

11、e1 = e2Next jEnd IfNext iFor i = 1 To nsIf f(i) = 0 ThenFor j = 1 To nps(1, i) - 1e1 = s(i, j) e2 = s(i, j + 1)For k = 1 To gIf e(k, 1) = e2 And e(k, 2) = e1 Then Exit ForEnd IfNext kIf k = g + 1 Thene(g, 1) = e1: e(g, 2) = e2e(g, 3) = 0 g = g + 1 End If e1 = e2Next jEnd IfNext iEnd SubRem 根据变换后的坐标矩

12、阵 b(m,n) 、面表 s(ns,np) 以及指针表 nps(1,ns) 将可见 表面输出到窗体上的模块Sub plot1(b(), e(), g)For i = 1 To gIf e(i, 3) = 1 ThenForm2.Pic2.Line (-b(e(i, 1), 1) + 75, b(e(i, 1), 3) - 75)-(-b(e(i, 2), 1) + 75, b(e(i, 2), 3) - 75)ElseCall hidline(-b(e(i, 1), 1) + 75, b(e(i, 1), 3) - 75, -b(e(i, 2), 1) + 75, b(e(i, 2),3) -

13、 75, Form2.Pic2)End IfNext iEnd SubSub hidline(x1, y1, x2, y2, ob)绘制虚线子程序lk = 2: ls = 5: ll = lk + lsIz = Sqr(x2 - x1)八 2 + (y2 - y1)八 2)cs = (x2 - x1) / lzsn = (y2 - y1) / lzn = Int(lz / ll)x = x1: y = y1: k = 0: Call drawline(x, y, k, Form2.Pic2)For i = 1 To nx = x + ls * cs: y = y + ls * snk = 1: Call drawline(x, y, k, Form2.Pic2)x = x + lk * cs: y = y + lk * snk = 0: Call drawline(x, y, k,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论