三视图+正轴测投影(图形学)-vb
Option Explicit
Dim x, y, z, s, e
Dim i As Integer
Dim x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer
Dim ax As Integer, ay As Integer, bx As Integer, by As Integer, cx As Integer, cy As Integer
Private Sub Command1_Click() '正视图
Label3.Visible = True
ax = Val(Text1.Text)
ay = Val(Text2.Text)
For i = 0 To 11
x1 = x(s(i)): y1 = y(s(i))
x2 = x(e(i)): y2 = y(e(i))
Picture1.Line ((x1 + ax), (y1 + ay))-((x2 + ax), (y2 + ay)), vbRed
Next i
For i = 11 To 23
x1 = x(s(i)): y1 = y(s(i))
x2 = x(e(i)): y2 = y(e(i))
Picture1.Line ((x1 + ax), (y1 + ay))-((x2 + ax), (y2 + ay)), vbRed
Next i
End Sub
Private Sub Command2_Click() '侧视图
Label4.Visible = True
bx = Val(Text3.Text)
by = Val(Text4.Text)
For i = 0 To 11
x1 = z(s(i)) + bx: y1 = y(s(i)) + by
x2 = z(e(i)) + bx: y2 = y(e(i)) + by
Picture1.Line (x1, y1)-(x2, y2), vbGreen
Next i
For i = 11 To 23
x1 = z(s(i)) + bx: y1 = y(s(i)) + by
x2 = z(e(i)) + bx: y2 = y(e(i)) + by
Picture1.Line (x1, y1)-(x2, y2), vbGreen
Next i
End Sub
Private Sub Command3_Click() '俯视图
Label5.Visible = True
cx = Val(Text5.Text)
cy = Val(Text6.Text)
For i = 0 To 11
x1 = x(s(i)) + cx: y1 = -z(s(i)) + cy
x2 = x(e(i)) + cx: y2 = -z(e(i)) + cy
Picture1.Line (x1, y1)-(x2, y2), vbBlue
Next i
For i = 12 To 23
x1 = x(s(i)) + cx: y1 = -z(s(i)) + cy
x2 = x(e(i)) + cx: y2 = -z(e(i)) + cy
Picture1.Line (x1, y1)-(x2, y2), vbBlue
Next i
End Sub
Private Sub Command4_Click()
Picture1.Cls
Label3.Visible = False
Label4.Visible = False
Label5.Visible = False
Label6.Visible = False
End Sub
Private Sub Command5_Click()
End
End Sub
Private Sub Command6_Click() '正轴测投影
Label6.Visible = True
Dim f As Single
Dim c As Single
Dim dx As Integer, dy As Integer
dx = Val(Text7.Text): dy = Val(Text8.Text)
f = 45 * 3.14 / 180
c = f
For i = 0 To 11
x1 = x(s(i)) * Cos(f) + z(s(i)) * Sin(f) + dx
y1 = x(s(i)) * Sin(f) * Sin(c) + y(s(i)) * Cos(c) - z(s(i)) * Cos(f) * Sin(c) + dy
x2 = x(e(i)) * Cos(f) + z(e(i)) * Sin(f) + dx
y2 = x(e(i)) * Sin(f) * Sin(c) + y(e(i)) * Cos(c) - z(e(i)) * Cos(f) * Sin(c) + dy
Picture1.Line (x1, y1)-(x2, y2), vbRed
Next i
For i = 12 To 23
x1 = x(s(i)) * Cos(f) + z(s(i)) * Sin(f) + dx
y1 = x(s(i)) * Sin(f) * Sin(c) + y(s(i)) * Cos(c) - z(s(i)) * Cos(f) * Sin(c) + dy
x2 = x(e(i)) * Cos(f) + z(e(i)) * Sin(f) + dx
y2 = x(e(i)) * Sin(f) * Sin(c) + y(e(i)) * Cos(c) - z(e(i)) * Cos(f) * Sin(c) + dy
Picture1.Line (x1, y1)-(x2, y2), vbRed
Next i
End Sub
Private Sub Form_Load()
Label3.Visible = False
Label4.Visible = False
Label5.Visible = False
Label6.Visible = False
x = Array(0, 1000, 1000, 0, 0, 1000, 1000, 0, 0, 500, 500, 0, 0, 500, 500, 0)
y = Array(0, 0, 2000, 2000, 0, 0, 2000, 2000, 2000, 2000, 3000, 3000, 2000, 2000, 3000, 3000)
z = Array(0, 0, 0, 0, 3000, 3000, 3000, 3000, 0, 0, 0, 0, 1500, 1500, 1500, 1500)
s = Array(0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15, 8, 9, 10, 11)
e = Array(1, 2, 3, 0, 5, 6, 7, 4, 4, 5, 6, 7, 8, 10, 11, 8, 13, 14, 15, 12, 12, 13, 14, 15)
End Sub