初期のVBはPictureBoxに直接点描画が出来たので、簡単にグラフの作成が出来た。
VB.NETあたりからPSetが無くなってしまったようだけれども、GraphicsのDrawLineで1ピクセルの線を引けばなんとかなるのではと思って実験してみました。
画像は
y=30 * ( cos( Root( x^2 + z^2 ) ) + cos(3 * Root( x^2 + z^2 ) ) )
という三次元関数の回転変換による軸測投影
(技術評論社 VisualBasic5.0 入門編 例題5)
以下はVB5のソースをVB2008 Express Editionでコンパイルできるように改造したもの。
640×480のピクチャーボックス(名前:Picture1)を置いてボタンクリックのイベントを記述。
背景色は白いものを選択しておくのが良いでしょう。
Imports System.Math
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ymin(640) As Integer, ymax(640) As Integer, px As Integer, py As Integer, y As Integer
Dim Rd As Double
Dim g As Graphics = Picture1.CreateGraphics()
Rd = 3.14159 / 180
For i = 0 To 639
ymin(i) = 399 : ymax(i) = 0
Next i
For z = 200 To -200 Step -10
For x = -200 To 200
y = 30 * (Cos(Sqrt(x * x + z * z) * Rd) + Cos(3 * Sqrt(x * x + z * z) * Rd))
px = 320 + x * Cos(-30 * Rd) + z * Sin(-30 * Rd)
py = 200 - (y * Cos(30 * Rd) - (-x * Sin(-30 * Rd) + z * Cos(-30 * Rd)) * Sin(30 * Rd))
If py < ymin(px) Then
ymin(px) = py
g.DrawLine(Pens.Black, px, py, px + 1, py + 1)
End If
If py > ymax(px) Then
ymax(px) = py
g.DrawLine(Pens.Black, px, py, px + 1, py + 1)
End If
Next x
Next z
End Sub
End Class
追記2024年06月17日:VB2019使用の現時点、PSet関数はGraphics.SetPixel関数に置き換わっています。他にもサインコサインなどの三角関数、平方根などはMath.Cos, Math.Sqrtなどとなっています。本のプログラムそのままを打ち込んでも動きませんが、単にベーシック言語の入門書とそしてではなく、アルゴリズムやデータ構造などの抽象的概念自体は言語が変わっても生きていると思います。ただね、右も左も分からないうちは「こう打ち込む」という具体的なプログラムコードの載った入門書の方が分かりよいと。そのため、自分のパソコンと使えるプログラム言語を確認して、時代に合ったものから入るのが良いのかなとは思いますが、古い本でも読んでみたい方はどうぞ。
初版は河西出版でリンクの書籍は出版社が技術評論社となっていますが、恐らく同じ本と思われます。でもアンタ今ならVisualBasic2022でしょ。 俺の本じゃないけどこっちのほうがおススメよ?(無責任に)