C# da 2D Çizim Uygulamaları
![]() |
||
| Page rank |
5
|
|
![]()
C# da grafik işlemleri ile uğraşıyorsak öncelikle formun koordinat sisteminin nasıl olduğunu bilmemiz gerekir…
Formun sol üst köşesi 0,0 noktası koordinat sisteminin orijinidir…
Orijinin konumunu değiştirmek istiyorsanız aşağıdaki kod parçasına bakabilirsiniz..
örnek :
System.Drawing.Graphics GrafikAlanı=this.CreateGraphics();
GrafikAlanı.TranslateTransform(X,Y);
Buradaki X ve Y yeni orijini formun hangi noktasından başlamasını istediğimiz değerlerdir..
Bilindiği üzere her çizim,şekil,resim vs. noktalardan meydana gelmektedir. Noktaları be çizgileri kullanarak bir küp çizebiliriz bu çok basit bir işlemdir. Fakat çizdiğimiz küpü hareketlendirmek (Öteleme,Boyutlandırma,Döndürme) biraz daha zor olabilir. Madem ki çizimler noktalardan oluşuyor demekki noktaları hareket ettirirsek yaptığımız çizim de hareketlenmiş olur.. Bununla ilgili birkaçbilgi vermek istiyorum…
Nokta, uzaydaki en basit birimdir. 2 boyutlu uzayda bir nokta x ve y değerleriyle belirtilir. Bu değerler belli bir orijine olan uzaklıklarını belirtirler. Eksi değerler aldıklarında noktanın koordinat orijinin boyuta temel alınan yönüne ters yönde olduğu anlamı çıkar. Noktalar P(x,y) şeklinde bir gösterimle belirtilebilir. A(2,-3) noktası x’i 2 y’si -3 olan A adında bir nokta demektir.
Dönüştürme (Transformation)
Bir noktannın yerinin değiştirilmesi işlemine ‘dönüştürme’ denir. P(x,y) şeklinde bir nokta P’(x’,y’) noktasına dönüştürülebilir.
Öteleme
n basit dönüşüm ötelemedir. Bir noktanın x ve y değerlerine belli bir değer eklenmesi ve çıkartılası sonucu oluşur :
x’=x+dx
y’=y+dy
P P’ Noktasına Dönüştü
Öteleme ‘toplama’ tabanlı bir operasyondur. Elbette dx ve dy eksi değerler alırsa çıkarma olur. Yeni nokta eski noktanın kaydırılmış halidir.
Boyutlandırma (Scaling)
Bir noktanın boyutlarını belli katsayılarla çarpma işlemine boyutlandırma denir.
x’=x*sx
y’=y*sy
u işlem de çarpma tabanlıdır. Katsayılar 1′den büyükse çekil büyümüş, değilse küçülmüş olur.
Döndürme (Rotation)
Bir nokayı belli bir açı kadar çevirme işleminde döndürme denir. Bu işlemin formulü
x’=x*cos(t)-y*sin(t)
y’=x*sin(t)+y*cos(t)
Trigonometrik yöntemlerle elde edilen bu formüller, t kadar döndürülen bir noktanın yeni konumunu verir. Öteleme ve boyutlandırma’nın aksine bu dönüşümde x ve y’Nin yeni değerleri hem x’in hem de y’nin eski değerlerine bağlıdır. Yani x’in yeni değeri sadece eski değerine bir işlem uygulamak suretiyle elde edilemez.
Vectör ve Matris Gösterimleri
Nokta Vectörü
X Y
şeklide yatay veya
X
Y
şeklinde bir dikey vektör (tek boyutlu matris)’le belirtilebilir. Genellikle dikey gösterim kullanılır.
Dönüşüm Matrisi
Dönüşüm işlemi de 2×2 bir matrisle gösterilebilir:
a b
c dx’
y’= sx 0
sy 0* x
yP’=S*P
şeklinde belirtilebilir. Bu matris çarpma işlemi yapıldığında
x’=x*sx
y’=y*sy
sonucu çıkar ki bu da matris kullanmadan önceki bağıntının aynısıdır.
Homojen Koordinatlar
Toplama işlemini de matris çarpımıyla göstermek, bir çok dönüşümü birleştirip tek indirmek gibi kolaylıklar sağladığı için ‘homojen koordinatlar’ denilen bir yapı kullanılır. Bununla x ve y’nin dışında bir üçüncü boyut da varmış gibi gösterilir. Ancak üçüncü boyuttaki değer 1′dir. P(x,y) noktası
x
y
1
şekilnde belirtilir. Dönüştürme işlemi
x’
y’
1′= a b c
d e f
g h i* x
y
1
şeklinde belirtitilir. Buna göre öteleme işlemi
x’
y’
1′= 1 0 dx
0 1 dy
0 0 1* x
y
1
şeklinde belirtilebilir. Matris çarpımı yapılırsa yine asıl bağıntıya ulaşılır. Boyutlandırma
x’
y’
1′= sx 0 0
0 sy 0
0 0 1* x
y
1
şeklinde, döndürme de
x’
y’
1′= cos(t) -sin(t) 0
sin(t) cos(t) 0
0 0 1* x
y
1
şeklinde belirtilir.
Diğer Dönüşümler
Yansıma (Reflection)
Bir noktanın belli bir exsene göre simetriğini alan dönüşüme yansıma denir. Y exsenine göre yansıma dönşüm matrisi x’i ilgilendiren katsayının -1 verilmesiyle elde edilir. X exsenine göre yansıma da y’yi ilgilendiren katsayının -1 olmasıyla elde edilir. Her iki katsayının da -1 olması durumunda her iki kesene göre de yanısıma elde edilir
Y Eksenine -1 0 0
0 1 0
0 0 1X Eksenine 1 0 0
0 -1 0
0 0 1Hem X hem Y’ ye -1 0 0
0 -1 0
0 0 1
Hatta, y=x doğrusuna ve y=-x doğrusuna göre yanısmalar da yazılabilir. Bu durumda yeni x’değeri y’ye, yeni y değeri de x’e bapluı olur :
y=x e Göre 0 1 0
1 0 0
0 0 1y=-x e Göre 0 -1 0
-1 0 0
0 0 1
Kaykıltma (Shear)
Bir koordinat sabitken diğerdiğerinde bu koordinata bağlı değişiklik yapılında kaykıltma dönüşümü oluşur.
y ye Göre 1 hx 0
0 1 0
0 0 1x e Göre 1 0 0
hy 1 0
0 0 1
Bileşik Dönüşümler
Herhangi bir noktaya yapılan birden fazla dönüşüm birleştirilip tek bir dönüşüm elde edilebilir. Hernokta için çok sayıda dönüşümün ayrı ayrı uygulanması zorunluğundan kurtulunduğu için bu işlem performansı arttırıcı etti gösterir. İki dönüşümün bilişiği iki dönüşüm matrisinin çarpılması demektir.
M = A*B
bu şeklide
P’ = A*P
P” = P’Byerine
P”=B*(A * P)
P”=M*Peşitliği üretilir.
Önce A sonra B uygulama demek B*A uygulama demektir, A*B değil. Genel olarak A*B != B*A
Önce belli bir noktaya ötelenen orada boyutlandırılan ve döndürülen dönüşüm
M=T*S*R
şeklinde üretilebilir.
Göreli Dönüşümler
Şimdiye kadar anlatılan bütün dönüşümler orijine veya belli bir eksene göre belirtilmiştir. Döndürme işlemi orijine göre döndürme demekir. Bazı durumlarda orijine göre değil noktanın belli bir noktaya göre, örneğin kendi merkeszine göre döndürülmesi gerekebilir.
Orijine Öteleme
Bir P(x,y) noktasının belli bir P(xo,yo) noktasına göre bir işleme tabi tutulmasını sağlamak için öncelikle P(xo,yo) noktasını oijinb kabul edecek bir dönüşüm yapılır
T = 1 0 -x0
0 1 -y0
0 0 1buna göre
P’=T*P
yapıldığında noktanın yeni hali orijini belirtilen nokta olacak şekilde değiştirilmiş olur. Noktayı geri gerimek de aynı ötelemenin ters işaretlisidir.
T’ = y=-x e Göre 1 0 x0
0 1 y0
0 0 1
Bir Noktaya Göre Döndürme
Orjine Göre Döndürme
Kendi Merkezine Göre Döndürme
Bir şekli beli bir noktaya göre döndürmek için, önce şekli o noktaya göre orijine ötelemek, döndürmek sonra tekrar eski noktasına getirmek gerekir. Bu da bileşik bir dönüşümdür. Bir P(x,y) noktasını P(xo,yo) noktasına göre t kadar dönürmek için. Önce orijine öteleme, sonra döndürme, sonra da geri öteleme yapılır.
Geri Ötele 1 0 x0
0 1 y0
0 0 1* Orjine Göre Döndür cos(t) -sin(t) 0
sin(t) cos(t) 0
0 0 1* Orijine Ötele 1 0 -x0
0 1 -y0
0 0 1
bu dönüşüm sonunda ortaya çıkan bileşik dönüşüm, cos(t) yerine ct, sin(t) yerine st koyarak yazılınca
M = cos(t) -sin(t) x0(1-cos(t))+y0*sin(t)
sin(t) cos(t) y0(1-cos(t))-x0*sin(t)
0 0 1
Bir Noktaya Göre Boyutlandırma
Orjine Göre
Merkezine Göre
Bir şekli bir noktaya göre boyutlandırma, önce o noktaya göre orjine öteleme, sonra boyutlandırma sonra da geri ötelemekten ibarettir. Bunun için
M = T’ * S * T
işlemi
1 0 x0
0 1 y0
0 0 1* sx 0 0
0 sy 0
0 0 1* 1 0 -x0
0 1 -y0
0 0 1şeklinde yazılırsa
M = sx 0 x0(1-sx)
0 sy y0(1*sy)
0 0 1
elde edilir.
Bir Yönde Boyutlandırma
Boyutlandırma işlemi x’e göre ve/veya y’ye göre yapılmaısnın dıında belli bir yöne göre de yapılabilir. Bunun için noktalarıyı belli bir açıya göre döndürmek, sonra boyutlandırmak sonra da tekrar geri döndürmek gereklidir.
Bir oktayı t açısında göre scale etmek için
M = R’ * S * R
biçiminde bir işlem yapılıyapılır. R’ matrisi -t açısında göre döndürme işlemidir. Matrislerde döndürüldükten sonraki y boyutlandırmasında sy, x boyutlandırmasına sx, sin(t) yerine st, sin(-t) yerine -st, cos(t) ve cos(-t) yerine ct yazılırsa matris çarpımının sonucu,
M = sx*ct*ct + sy*st*st (sy-sx)*ct*st 0
(sy-sx)*ct*st sx*st*st + sy*ct*ct 0
0 0 1
Koordinat Sisitemleri Arasında Dönüşümler
Ötelenme
Boyutlandırma
Döndürme
X ve Y eksenlerinden oluşan koordinat sisteminde tanımşlı noktaların , X’ ve Y’ şeklinde başka bir koordinat sistemindeki değerlerini bulmak için çeşitli dönüşümler yapılır. Bir sistem, sadece orijin ötelenemesinden oluşuyorsa noktaların ters yönde ötelenmesi gerekir. Döndürme işlemi ve boyutlandırma işlemi için de aynı şekilde tersine dönüşümler yapılır.
Orijin P(xo,yo) noktasında bulunan, t kadar açıyla dönmü, sx ve sy kadar boyutlandırılmuş bir koordinat sistemi için önce 1/sx ve1/sy ile boyutlandırma, -x0 ve -y0 kadar öteleme, -t kadar da döndürme yapılmalıdır.
P’(x’,y’)=R(-t) * T(-x0,-y0) * S(1/sx,1/sy)
Ve Son olarak da bu işlemler için Yazdığım ve tamamiyle bana ait olan 2D Çizim Uygulamasına bakabilirsiniz. Ufak tefek Yanlışları olabilir. Onları da Siz Düzeltin
Bu yazımdan onra 3D Küp Çizimi ve Hareketlendirilmesinden Bahsedeceğim…
Buyrun Buradan İndirin… Rar Şifre : burhanemre
Popularity: 5% [?]




şifre nedir dosyanın?
Şifre : burhanemre
Kolay Gelsin İyi Çalışmalar…
Güzel bir uygulama
Elinize sağlık.
Çok güsel anlatmışınız teşekkürler emeğiniz için..Yanlız bu dosya indirmede sorun var galiba..
Dosya indirmedeki Sorun Düzeltildi fakat program tam olarak çalışmıyor yanlışları var düzeltilmesi gerekir.
Bilgisayar grafikleri dersi ödevi için bu uygulamayı direk öğretmene vermeyin içinde adım yazıyor.
Bu uygulama doğru çalışmıyor düzeltilmesi gerekir.
Dosya indirmede sorun hala devam ediyor..
Sorun Kalıcı Olarak Düzeltilmiştir..
Mail Adresinizi Yanlış yazmışsınız galiba ondan yardımcı olamadım.
güzel çalışma da bunun rar şifresi nedir?
Rar Şifresi : burhanemre