ブラウザの[戻る]を押してね!



< VB でのソースプログラム内容 >

'
' 3次元グラフィックス表示プログラム A
' (とりあえず、図形をひとつだけ表示してみたもの)
'
Dim icnt As Integer           ' ループカウンタなど用のワーク変数
Dim x3d, y3d, z As Integer      ' 3次元座標軸上でのx、y、zの値
Dim x2d, y2d As Integer        ' 2次元座標軸上でのx、y、zの値
Dim max(400) As Integer       ' 最大値格納用配列
Dim min(400) As Integer       ' 最小値格納用配列
Dim wait_time As Integer       ' 待ち時間

Private Sub Disp_Button_Click()

  Picture1.Width = 6000
  Picture1.Height = 6000
  Picture1.ScaleWidth = 400
  Picture1.ScaleHeight = 400
  Picture1.ScaleLeft = 0
  Picture1.ScaleTop = 0

  Picture1.Cls
  For icnt = 0 To 399        ' 最大値/最小値配列の初期化
    max(icnt) = 0: min(icnt) = 400
  Next icnt

  wait_time = 32766         ' 待ち時間の設定

  For y3d = 0 To 126 Step 2   ' 3次元図形表示処理
    For x3d = 0 To 158 Step 2
                      ' Z値算出処理(任意の関数 z=f(x3d, y3d) に置き換え可能)
      If (((x3d >= 20) And (x3d <= 140)) And ((y3d >= 20) And (y3d <= 108))) Then
        z = ((x3d - 80) * (x3d - 80)) / 60 + ((y3d - 64) * (y3d - 64)) / 40
      Else
        z = 110
      End If
                      ' 3次元→2次元座標変換処理
      x2d = 200 - (x3d - y3d)
      y2d = z + 290 - ((x3d / 4) + (y3d / 2) + 100)

                      ' 陰線処理(最大値/最小値判定による)
      If ((y2d >= max(x2d)) Or (y2d <= min(x2d))) Then
        If (y2d >= max(x2d)) Then
          max(x2d) = y2d
        End If

        If (y2d <= min(x2d)) Then
          min(x2d) = y2d
        End If

        If ((y2d >= 0) And (y2d < 500)) Then
          Picture1.PSet (x2d, y2d)            ' 点の描画
          ' Picture1.Line (x2d, y2d)-(x2d + 1, y2d)  ' 直線による点の描画
          For icnt = 0 To wait_time: Next icnt ' 描画後、ちょっと待たせる
        End If
      End If
    Next x3d
  Next y3d

End Sub

Private Sub End_Button_Click()
  End
End Sub