Anasayfa > Kodlar > Visual Basic 6 ile 3D grafik çizici yapmak

Visual Basic 6 ile 3D grafik çizici yapmak


Z = F( X , Y ) türünden 3 boyutlu fonksiyonların grafiğini çizen program. Zoom ve Bakış Açısı ayarlaması da mevcut.

FORM NESNELERİ VE AYARLARI


İlk önce basit bir çizim için gereken nesneleri ekleyelim.


picturebox :
--------------
name = ekran
backcolor = beyaz
height = 4800
width = 6400
AutoReDraw = true

command button :
---------------------
name= cmdCiz
caption = &Çiz

Program içerisinde belirlediğimiz bir fonksiyonu butona basıp çizdireceğiz. Bu fonksiyon :

Z = sin( X + Y ) fonksiyonu olsun. Fonksiyonun çizim aralığı -3 < X < 3 ve -3 < Y < 3 olsun.


Dim h As Long, V As Long                    ' Ekrandaki konum değişkenleri
Dim XX As Double, YY As Double, ZZ As Double ' Denklemdeki X,Y ve Z değeri
Dim TX As Integer, TY As Integer, TZ As Integer
Dim k As Integer

Const E = 2.7182818281
Const pi = 3.14159265358

Private Sub cmdciz_Click()
k = 400     ' Zoom Değişkeni
hh = 0.3    ' Çizim Hassasiyeti Değişkeni. Pixel Adımlarını Belirler.

TX = 0      ' X yönü Bakış Açısı
TY = 30     ' Y yönü Bakış Açısı
TZ = 90     ' Z yönü Bakış Açısı

ekran.Cls

YY = -3

For XX = -3 To 3 Step hh
YY = -3
DenklemAl
IzdusumHesapla
ekran.PSet (h, V)

For YY = -3 To 3 Step hh
DenklemAl
IzdusumHesapla

' Ekran Sınırları Kontrol Edilir.
If Not (h > ekran.Width Or V > ekran.Height Or h < 0 Or V < 0) Then
ekran.Line -(h, V), RGB(255, 0, 0)
DoEvents
End If

Next YY
Next XX

For YY = -3 To 3 Step hh
XX = -3

DenklemAl
IzdusumHesapla

ekran.PSet (h, V)

For XX = -3 To 3 Step hh

DenklemAl
IzdusumHesapla

' Ekran Sınırları Kontrol Edilir.
If Not (h > ekran.Width Or V > ekran.Height Or h < 0 Or V < 0) Then
ekran.Line -(h, V), RGB(0, 0, 255)
DoEvents
End If

Next XX
Next YY
End Sub

Sub DenklemAl()
ZZ = Sin(XX) + Cos(YY) ' Buraya abidik gubidik denklemler yazılabilir.
End Sub

Sub IzdusumHesapla()
' X, Y ve Z için yatay ve düşey nokta bulunur.
x = XX * k  ' Zoom Değeri Kadar Genişletilir.
y = YY * k
z = ZZ * k

h = x * Cos(pi / 180 * TX) + y * Cos(pi / 180 * TY) + z * Cos(pi / 180 * TZ) + ekran.Width / 2
V = 1 * (0 - x * Sin(pi / 180 * TX)) - y * Sin(pi / 180 * TY) - z * (pi / 180 * TZ) + ekran.Height / 2
End Sub

Görüldüğü gibi önce X düzlemleri sonra da Y düzlemleri çizildi ve 3 boyutlu bir grafik oluştu. Kodlardaki DoEvents ifadesini kaldırarak daha hızlı bir sonuç elde edebilirsiniz.

Bu ilk giriş kodlarında zoom ayarları ve çizim hassasiyeti değişkenleri sabit. Bunu programın çalışması sırasında değiştirmek istiyebiliriz. Bu durumda bir ComboBox ile her iki değişken için seçenekler listesi hazırlayabiliriz. Ayrıca çizimde kullanılan renkleri de değiştirebiliriz.

Ekran bakış açıları TX,TY ve TZ için ayrı bir nesne düşündüm: ScrollBar nesnesi. Yatay veya düşey farketmez. Program pencerenizin tasarımına göre istediğinizi seçebilirsiniz. 3 adet kullanmanız gerekir. X,Y ve Z açıları için. Bunların ayarları aşağıdaki gibi olabilir :


min = 0 ' Alabileceği En Küçük Değer
max = 359 ' Alabileceği En Büyük Değer
SmallChange = 1 ' Oklara Basılınca Değişim Değeri
LargeChange = 5 ' Çubuğun Boş Alanına Tıklayınca Değişim Değeri
value = 0 ' başlangıç değeridir. Sırasıyla 0 - 30 ve 90 vermenizi öneririm.

Ayrıca birer adet label kullanarak scrollbar nesnelerinin değerleri de kullanıcıya gösterilebilir. Hangi açı değerinde olduğumuzu anlamak için :


Private Sub scrollX_Change()
label1.caption = scrollX.Value
TX = scrollX.Value
cmdCiz_click
End Sub

Bu şekilde 3 adet açı değeri için label ve scrollbar nesnelerini kullanarak çizimin açılarını da değiştirebiliriz.

UY


TD Software


Reklamlar
  1. Selim Bek
    22/08/2013, 00:51

    Kardeşim ben bunu perspektif resim üzerinde 3d kabartma olarak yapmak istiyorum yardımcı olurmusun ??

    Beğen

  1. No trackbacks yet.

Bir Yanıt Bırakın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: