|
Ana Menü | |
Forumlar | |
| |
1D Uzay
(3613 kelime) (567 okuma)
1D Uzay
Hiç lafı uzatmayacağım, öyle giriş gelişme sonuç pek yapabileceğim bir
iş değil. Ayrıca bu bir hikaye de değil neticede bir şeyler öğrenmeye
çalışıyoruz. Hemen örneklerle bakalım olaya. Çünkü açıkçası ne
anlatacam ben de bilmiyom ölesine bi yazıyom bakalım yazı nereye kadar
gidecek.Fakat herkesin ilk önce kabul etmesi gereken tek konu şu:
“İlkokul matematiği bitti...”
Neyse dediğim gibi fazla uzatmayacam. Kalkıp matrix, vector anlatacak
değilim burada. Bi şekil öğrenilir onlar. Fakat çok daha önemli konular
var ki gözden kaçan (yani benim insanlarda gözlediğim), olayın temelini
kavrayış biraz farklı. Neyse hop...
Başladık:
(-x)|------------------------0--->--------------------|(+x)
Bunun adına 1D uzay(space) diyeceğiz. Bütün 1D uzayları bu şekilde
göstereceğim. Öncelikle bu çizdiğim şekli anlatiim. Bir merkez(origin)
var ve bi vektor(basis) var ve bu vector ‘>’ ile gosterilmiş. Yani
bir uzayı belirtmek için aslında o uzayın referans noktası (merkez,
origin) ve o uzayı geren basis’ler (vektor, bilmiyom turkçesini
basis’in) yeterlidir. Örneğin yukarıda ki örneğin parametreleri şunlar:
(-x)|------------------------0--->--------------------|(+x)
origin
: [0]
basis
: [1]
Bu tek boyutlu bir uzay olduğu için, bir adet basis vectörümüz var.
Eğer birden çok boyutlu bir uzay için konuşuyo olsaydık; ki bunu da
yapacağız; o zaman birden çok basis ile uğraşacaktık. Her boyut için
bir basis gerekiyor. Basis kavramına bir nevi : “birim uzunluk o uzayda
nasıl tanımlanmış. Yani ben o uzayda bir birim ilerlersem aslında
koordinat sisteminde ne kadar ilerlemiş olurum”. Eğer basis vektörüm
[-1] ise örneğin ben bir birim ilerlersem (+1 birimden bahsediyorum)
aslında geriye doğru bir birim gitmiş olurum. Eğer basis vektörüm [+3]
ise ben bir birim ilerlediğimde +3 birim ileri gitmiş olurum. Bilmiyom
azıcık anlaşıldı mı? Daha üstüne duracam sonra.
Şimdi bir başka uzay tanımına bakalım.
(-x)|----------------------------------------4------->|(+x)
origin
: [4]
basis
: [2]
Gördüğümüz gibi bunu tanımlamak sadece bize ait. Yani bu uzayı
istediğimiz gibi ifade edebiliriz.
Şimdi diyelim ‘rufus’ ve ‘pedro’ isimlerinde iki insan var, ve
birbirlerine sayılar söylüyorlar. Fakat beyinlerinde kullandıkları
‘uzay’ kavramları farklı. Yani aslında aynı uzayı ifade etme biçimleri
farklı. Rufus’un dunyasında uzay bizim birinci şekilde ifade ettiğimiz
gibi ifade ediliyor. Pedronun ise ikinci şekildeki gibi. Acaba rufus
pedro’ya “2” derse, pedro buradan ne anlar. Aslında yanlış şeyler
anlar. Çünkü “2” onun dunyasında tamamen başka bi noktaya tekabül
ediyor.(yuh şu fiil’i de kullandım ya şu tutor’da.. eh yani) yani rufus
ile pedro arasında bir uzaydan öbür uzaya geçiş lazım.
Pedro, rufus’un dediklerini ancak ve ancak, rufus’un uzayının tanımını
bildikten sonra anlayabilir. Aynı şey tersi için de geçerli. Yani pedro
rufus’a bir şey derse onun anlamasi için, rufus’un pedro’nun uzayını
bilmesi lazım.
Şimdi basit bir örnek yapalım. Diyelim rufus’un dunyasi bizim birinci
uzayımız olsun ve pedro’nun dunyası da ikinci uzayımız olsun. Pedro ‘x’
dediğinde rufus ne anlamalı?
Öncelikle bu iki uzayı bizim temel aldığımız bi uzayda ifade etmeliyiz
ki bu da bizim bildiğimiz :
(-x)|------------------------0--->--------------------|(+x)
origin
: [0]
basis
: [1]
Uzayı. Bütün evren 1 boyutlu uzaylar için bunu kullanıyor standart
olarak. Biz de bunu kullanacağız.
O zaman rufus’un uzayı bu ‘standart uzay’a göre:
RUFUS:
(-x)|------------------------0--->--------------------|(+x)
origin
: [0]
basis
: [1]
Yani gene aynısı. Pedronun ki ise gene:
PEDRO:
(-x)|----------------------------------------4------->|(+x)
origin
: [4]
basis
: [2]
Öncelikle bu işlemleri matrix ve vector aritmetiği kullanmadan yapmaya
çalışalım ve buradan kendimiz bir şeyler çıkaralım.
Pedro kendi uzayında rufus’a xpedro derse eğer, aslında standart uzayda
şoole bir yer göstermiş oluyor:
[4+(xpedro)*2]
Bu standart kabul ettiğimiz uzaydaki yansıması. Peki bu rufus’un
dunyasında neye karşılık geliyor:
[0+(xrufus)*1]
= [4+(xpedro)*2]
xrufus =
([4+(xpedro)*2] – 0) / 1
Peki şimdi de tersini yapalım. Rufus kendi uzayında pedro’ya xrufus
derse pedro ne anlayacak. Önce standart uzaydaki demek istediğine
bakalım.
[0+(xrufus)*1]
demek istiyor. (Aslında kendi uzayı ile standart uzay aynı)
ve pedronun bundan anlıyacağı.
[4+(xpedro)*2]
= [0+(xrufus)*1]
xpedro =
([0+(xrufus)*1] – 4) / 2
tamam. Güzel bir şeyler çıkmaya başlıyor. Durmak yok devam.
Şimdi herkes kendi uzayını bildiği için kendi uzayının bütün
parametrelerini biliyor. Ancak bir başkasının uzayından bir bilgi
geldiğinde onu anlaması için o uzayın parametrelerine ihtiyacı vardır.
Bu sadece bu uzay, matrix ve vector sistemlerinde değil dünyadaki hemen
hemen bütün olaylarda geçerlidir. Sen bir sistemin içinde bulunursun.
Başka bir sistemden sana bir input gelir. O input o sistemin doğasında
geldiyse (yani senin sisteminde anlayacağın bir forma
dönüştürülmediyse), senin o sisteme ait parametreleri bilmen lazım ki
bunu dönüştürebilesin.
Özetle rufus’un, pedronun uzayının parametrelerine yani
origin
: [4]
basis
: [2]
ve pedronun da rufus’un uzayının parametrelerine
origin
: [0]
basis
: [1]
ihtiyaci var. Bunları bilmeden hiç birisi öbürünün dediğini anlayamaz.
Umarım buraya kadar biraz bişiler yerleştirmişimdir, çünkü biraz
compleksleşecek galiba.
Şimdi bu yaptığımız her şeyi matrixlere dökelim. Bir uzayı ifade etmek
için genelde <uzay boyutu> + 1 boyutlu kare bir homojen matrix
kullanılır. Homojen matrix’i çok basit şekilde açıklamak gerekirse, son
satırı (veya sütunu) (n-1) adet [0] dan ve (n x n)’i elemanı [1] den
oluşan matrix’e deniyor. Örnek vermek gerekirse.
[a b c d]
[e f g h]
[i j k l]
[0 0 0
1] (satır (row))
veya
[a e i 0]
[b f j 0]
[c g k 0]
[d h l
1] (sütun (column))
yapısındadır. Bununla ilgili gerek özellik veya optimizasyonları bu
dökümanda bulamayacaksınız. Üzgünüm. Hedef başka çünkü.
Neyse şimdi bizim uzayımız için uzay matrix’imizi yaratalım. Genel yapı
şu şekildedir. Bundan sonraki bütün space matrix’lerimizi 2. şekildeki
(sütun(column)) yapısında gösterecem. DirectX bu yapıda kullandığı için
bunu seçiyorum. Ancak bir uyarı olarak söyliim OpenGL 1. şekli
kullanyor. OpenGL ile ilgilenenlere şimdiden bir detay...
Bizim basislerimiz b1, b2, b3, b4..., bn-1, bn olsun. ve originimiz o
olsun. Buna göre bizim space matrix definitionımız şu şekilde define
edilmiştir:
[b1 b2 b3 .
. . bn 0]
[b1 b2 b3 .
. . bn 0]
[b1 b2 b3 .
. . bn 0]
[.
. . . . . . .]
[.
. . . . . . .]
[.
. . . . . . .]
[b1 b2 b3 .
. . bn 0]
[o
o o . . . o 1]
Bilmiyom anlatabildim mi? Basislerimizi yukarıdan aşağı sütun halinde
yazıyoruz. Ve originimizi tam en alt satıra yazıyoruz. Şimdi bakalım
böyle bir tanım bizim işimizi kolaylaştıracak mı?
Hatırlatmak amacı ile rufus ve pedro’nun uzay parametrelerini bir daha
yazıyorum:
pedro:
origin
: [4]
basis
: [2]
rufus:
origin
: [0]
basis
: [1]
Şimdi bunların uzay matrix’leri nedir o zaman:
pedro:
(-x)|----------------------------------------4------->|(+x)
[2 0]
[4 1]
rufus:
(-x)|------------------------0--->--------------------|(+x)
[1 0]
[0 1]
di mi ?
Güzel. Şimdi yaptığımız örnekleri tekrar yapalım.
xpedro dediğinde pedro, eğer rufus pedronun uzay matrix’ini biliyorsa,
kolayca bu değişimi yapabilir. Öncelikle unutmamak gereken bir şey bu
matrix’lerin hepsinin belli bir varolan uzay referans alınarak
yapılması lazım. (ki neticede standard uzayı kabul ederek yazdık
ikisini de. Hoş rufus zaten standard uzayı kullanıyor. Hali ile de
görüldüğü gibi birim matrix oluştu onun matrix’ini oluşturduğumuzda)
Şimdi buna bir kaç değer vererek deneyelim. Diyelim pedro xpedro = [-1]
dedi. Bu rufus’un uzayında kaça denk geliyor. Amacımız bu soruya cevap
aramak. Tek yapacağımız şey pedronun verdiği vector’u (evet vector. 1x1
lik bi vector) bizim matrix’le çarpmak. Ama bakıyoruz ki elimizde ki
matrix 2x2.. hmmm. Çarpılmıyorlar, demek ki ne yapmak lazım. Verdiği
noktayı 1x2 yapmak lazım. Bunu da noktanın sonuna 1 ekleyerek
yapabiliriz. (neden 1, neden 0 değil, neden PI değil veya neden e değil
bunun tartışması şu an değil. Şu an bilmemiz gereken tek bir şey var. O
da oraya ‘1’ yazmak. Bunu elimize bir (dikkat!) ‘nokta’ geldiğinde
yapıyoruz. Daha fazla detaylı bilgi sonra. Kafa karıştırabilir.)
evet pedro xpedro = [-1] dedi. biz bunu :
[-1 1]
yaptık. Şimdi bakalım çarpınca neler olup bitiyor.
[-1 1][2 0]
= [-1 * 2 + 1 * 4 -1 * 0 + 1 * 1] = [2 1]
[4 1]
Elde ettiğimiz nokta [2 1] noktası, ne demek bu? Hah şu demek. Yani
başta sonuna ‘1’ eklemiştik ya. Gene onu bulduk. (zaten ööle çıkması
gerekiyor). Hah işte onu attık mı elimizde ne kaldı ? [2]. İşte
rufus’un anladığı nokta bu. Bakalım diagrama doğru mu ?
pedro:
(-x)|--------------------------------*-------4------->|(+x)
(-1 birim
ilerle)
<-------- (-1)
|
rufus:
| bu noktaya geliyor.
(-x)|------------------------0--->---*----------------|(+x)
--->---> (2 birim)
demek ki rufus’un uzayinda yansiyan nokta [2] olmush oluyor. yani
cozumumuz dogru. peki ayni sheyi rufus’un achisindan yapsaydik ne
yapacaktik. hemen ona bakalim. yani rufus [2] dese pedro [-1]
anlarmiydi. sadece rufus’un matrix’ini bilerek. yaptigimiz ishlemi gene
yapalim.
[2 1][1 0] =
[2 * 1 + 1 * 0 2 * 0 + 1 * 1] = [2 1]
[0 1]
Eee.. aynı nokta çıktı. Ee. Hani sadece onun matrix’ini bilmesi ile
oluyordu.? Evet yanlış. Bu değil. Beklediğimiz cevap [-1 1] olmalıydı.
(Yani bizim elimizde [-1 1] noktası olmalı. Hmm bir gariplik olmalı.?
Hayır yok. Çünkü yaptığımız olay çok saçma. İşte burada bir kurala
gireceğim. Bunu uyduracağız.
Öncelikle ANA UZAY(parent-space) / ALT UZAY(sub-space) kavramını
açıklayalım. Eğer bir uzay bir başka uzay içinde tanımlanmış ise ona
ANA UZAY onun altında tanımlanan uzaya’da ALT UZAY denir. Örneğin bizim
bu durumumuzda aslında rufus’un uzayı bizim STANDARD kabul ettiğimiz
uzay. Yani dünyada herkesin kullandığı uzay (basis:1, origin:0). Fakat
pedronun ki öyle değil. İşte onun dünyasında identity olan şey
(basis:2, origin:4) fakat bu bizim görüşümüz. Yani onun merkezini
anlamak için bile o koordinatları kendi anlayacağımız şekilde ifade
ediyoruz. yani aslında pedronun uzayı standart uzayın bi alt kümesi.
Yani onun altında ifade ediliyor. Ve bir bakışa göre rufus’un ki de
öyle ifade ediliyor. Yani bu ikisinin de uzayı aslında standard kabul
edilen uzayın dilinde anlatılıyor.
STANDARD UZAY
|--RUFUS
UZAYI
+--PEDRO
UZAYI
şeklinde bir hiyerarşi var aslında. (rufus ve standard aynı olmalarına
rağmen, ama olmadığı durumu da inceleyeceğimiz için, böyle açıklamayı
tercih ediyorum).
Şimdi bizim çalışan formülümüz gördüğümüz gibi PEDRO’dan RUFUS’a olan
bir çevirim için’di. (aslında pedro’dan rufus’a değil, pedro’dan
STANDARD’a çevirim idi. Ama standard ile rufus aynı olduğu için şu
anlık hali ile rufus’un uzayına çevirimi de tamamen aynı). Yani
kısacası:
BİR NOKTAYI BIR UZAYDAN, ANA
UZAYIN KORDİNATLARINA ÇEVİRMEK İÇİN, VERİLEN NOKTAYI O UZAYIN ANA
UZAYDA İFADE EDİLDİĞİ MATRİKS İLE ÇARPIYORUZ.
yani :
xstandart =
xpedro * Mpedro(standart)
Bizim en genel formülümüz. (M denen o uzayın matrix’inin ANA uzayı
altındaki ifadesi.)
Quick FAQ:
Q: Ya bi dakka, bi dakka kafam iyice karıştı. şu ‘ana uzay’ ‘alt uzay’
kavramları çok garip ve saçma geldi. Biraz daha açıklarmısın ?
A: Tamam o zaman şöyle diyelim:
(-x)|----------------------------------------o------->|(+x)
Uzayımızı gene böyle tanımlayalım. Fakat bu sefer hiç bir sayı
kullanmıyoruz. Yani sadece origini’i ve basis’i gösteriyorum. Şimdi
bunu bi şekil ifade etmek lazım. Bunu nasıl ifade edecez. ? Yani bunu
ifade edecek bi şekil bulmak lazım. Origin’e bişi demek lazım ‘o’ diye
bırakamayız di mi? Buna İSTEDİĞİNİ de. Hiç farketmez. Yanlız tek dikkat
edeceğin şey, tanımlayacağın bütün UZAYLARI aynı koordinat sistemini
göz önüne alarak yap ki çok daha büyük sorunlar çıkmasın. yani
(-x)|------------------------o--->--------------------|(+x)
Elinde şöyle bişi olursa yukarıdakinden bi şekil ayırabil. Yoksa
ikisini de tamamen farklı şekillerde yapsaydık olmazdı. Bak ne diyecem
? Hadi şimdi şeklen PEDRO’nun uzayını STANDART kabul edelim. ve ona
göre yapalım bakalım ne çıkıyor.
(-x)|----------------------------------------0------->|(+x)
bunu
standart alalım.
origin: [0]
basis : [1]
(-x)|------------------------o--->--------------------|(+x)
ee. bu
nooluyor şimdi.
ishte cevap:
origin: [-2]
basis : [ ½]
Tamam madem yaptık. Şimdi en son ne diyorduk. Tek beklediğimiz şey
rufus [2] dediğinde pedro’nun [-1] anlaması di mi? (değişen ne var...?
Hiç bir şey! Sadece base’imizi değiştirdik. Pedro’yu dünya standardı
kabul ettik.)
Hemen bakıyoruz gene... Matriksleeeer:
pedro:
[1 0]
[0 1]
rufus:
[ ½ 0]
[-2 1]
Güzel şimdi yani RUFUS’tan standart’a (ve hali ile PEDRO’nun uzayı’na,
çünkü standart ile aynı yaptık ya) çevirmeyi biliyoruz. Çünkü rufus
onun altında tanımlandı. Hiyerarşi gene aynı:
STANDARD UZAY
|--RUFUS
UZAYI
+--PEDRO
UZAYI
eee. çarpalım o zaman:
[2 1] [
½ 0] = [2 * ½ + -2 * 1 2 * 0 + 1 * 1] =
[-1 1]
[-2
1]
Sonuç [-1 1], at sondaki ‘1’ i ve elimizde [-1] kalıyor. Gördüğümüz
gibi anlamış olduk ki kullandığımız base uzay’ın ne olduğunun hiç bi
önemi yok. Yanlız hangi uzayı hangisinin altında tanımladığımıza çok
dikkat edelim. Önemli olan tek nokta o.
Q: Peki standard uzayda olan bir noktadan, (birinci örnekdeki)
pedro’nun uzayına nasıl çeviririz.
A: Bi saniye canım kardeşim, gelecez ona da.
Q: Tamam.!
End of Quick FAQ(okunuşu : ~fak)
Döndük geri. Güzel soru. Yani şu an bildiğimiz bulunduğumuz yerdeki
noktayı, ana uzayımızda nasıl ifade edeceğimiz. Peki bunun tersini
nasıl yapardık ? Yani ana uzayda bir noktamız olsa bunu bizim uzayda
nasıl ifade ederdik ?
!? !? Yaw ne farkeder şu işleme bakalım.
y = x * Mx(y)
dedik di mi ?
Eee güzel, işte Mx(y)’yi biliyoz. x’i yerine koyunca y’yi kolayca
bulabiliyoruz (EĞER Kİ EĞER oradaki Mx(y), x in uzayının y’nin uzayı
dikkate alınıp tanımlandıysa!! tek koşul bu!). tersi mi nasıl olur?
Ehh, eğer içinizden ‘ulan niye bu sefer y’nin x’e göre matrix’ini
(My(x)) çıkarmıyoruz ki!? sonra formül x = y * My(x) olmaz mı?’ diye
bir cümle geçirdiyseniz, hemen kendinize gidin iki çukulata hediye
edin, birini yiyip diğerini bana gönderin!. Çünkü evet aslında yapılan
şey o.
Peki bunu o an bilinen, daha doğrusu tek bildiğimiz şey olan Mx(y)’den
yapabilirmiyiz. ? Yani bu ikisi arasında ne gibi bir bağlantı var:
1) y = x *
Mx(y)
2) x = y *
My(x)
güzel şimdi 2. eşitlikte y yerine 1. eşitliği yazıyorum. (çünkü aynı x
ve y değerlerini sağlamak zorundalar, di mi?)
3) x = (x *
Mx(y)) * My(x)
4) x = x *
Mx(y) * My(x) (parantezleri yok ettik)
5) 1 = Mx(y)
* My(x) (x’ler sadeleşti)
Hmm demek ki bu iki matrix’i çarptığımda 1 (identity) elde etmem lazım.
Bu ancak ve ancak şu demek. Bu matrixler birbirinin TERSİ olmak
zorunda. İşte çok güzel. Bir şey daha bulduk:
Mx(y) =
My(x)-1
Mx(y) =
M(y)-1
tamam alalım madem.
[b 0]
b = basis.
[o 1]
o = origin.
[ 1/b 0] *
[b 0] = [1 0]
[-o/b
1] [o 1] [0 1]
tamam güzel tersi :
[ 1/b 0]
[-o/b 1]
imiş.
Şimdi aynı örneğe dönelim bakalım bu sefer yapabilecekmiyiz:
pedro:
(-x)|----------------------------------------4------->|(+x)
[2 0]
[4 1]
rufus:
(-x)|------------------------0--->--------------------|(+x)
[1 0]
[0 1]
İlk hali buydu,
ve neyin peşinde idik:
rufus’un uzayında [2] ile ifade edilen bakalım pedro’nun uzayında [-1]
olacak mı?
[2 0]-1 =
[½ 0]
[4
1] [-2 1]
[2 1] *
[0.50 0] = [2 * 0.50 - 1 * 2 1] = [-1 1]
[ -2 1]
Eevet. Gördüğümüz gibi aynı sonuç çıktı. Deyişimizi biraz değiştirelim:
BİR NOKTAYI BİR UZAYDAN, ANA
UZAYIN KOORDİNATLARINA ÇEVİRMEK İÇİN, VERİLEN NOKTAYI O UZAYIN ANA
UZAYDA İFADE EDİLDİĞİ MATRIX İLE ÇARPIYORUZ. EĞER ANA UZAYDA TANIMLANAN
BİR KOORDİNATTAN BAHSEDİYORSAK, ONU ALT UZAYIN KOORDİNATLARINA ÇEVİRMEK
İÇİN O UZAYIN ANA UZAYDA İFADE EDİLDİĞİ MATRIX’İN TERSİ İLE ÇARPIYORUZ.
Güzel iş biraz biraz oturmaya başladı. Çok kompleks bir örnek ele
alalım.
ANA_UZAY
ALT_UZAY_1
DAHA_ALT_UZAY_1 (x) verilen nokta.
ALT_UZAY_2
DAHA_ALT_UZAY_2 (y) hedef uzay.
Eh şimdi önverimiz şu, her bir uzayı kendi ana uzayı altında tanımlayan
matrikslerimiz olduğunu düşünelim (ki böyle olmak zorunda aslında. Bunu
tartıştık sanıyorsam.) Herbir matriksi kendi isimleri ile anacağım.
Amacımız DAHA_ALT_UZAY_1’de ki x noktasının DAHA_ALT_UZAY_2’deki
y’noktasında nasıl gözüktüğünü bulmak.
Öğrendiklerimizi hemen uygulayalım. Üst uzaya çıkmak için aynen
çarpıyoz. Alt uzaya inmek için tersi ile çarpıyoduk di mi?
Güzel başlayalım. Aşama aşama yapacam ki daha iyi belli olsun.
(1) x *
DAHA_ALT_UZAY_1 (shu an ALT_UZAY_1’deyiz)
(2) (1) *
ALT_UZAY_1 (şimdi de ANA_UZAY’dayız)
(3) (2) *
ALT_UZAY_2-1 (evet öbür uzaya dallandık)
(4) (3) *
DAHA_ALT_UZAY_2-1 (şimdi de vardık.)
yani çok çok genel hali ile.
y = (((x *
DAHA_ALT_UZAY_1) * ALT_UZAY_1) * ALT_UZAY_2-1) * DAHA_ALT_UZAY_2-1
yazabiliriz.
yani.
şu sıra ile:
DAHA_ALT_UZAY_1
ALT_UZAY_1
ALT_UZAY_2-1
DAHA_ALT_UZAY_2-1
çarptığımızda elimizde M diye matriks kaldığında:
y = x * M
Bize gene bu koordinat değiştirme işlemini sağlayacak. Eveeet güzel,
öğrendik. Hah işte şu an bir şey demenin zamanı geldi. Aklınıza gelen
herhangi bir boyutta bu işlemler aynen bu şekilde yürüyor. Burada
yazılan herhangi bir şeyi istediğiniz boyutlarda uygulayabilirsiniz.
Hatta deneyiniz.
Bundan sonrada geriye ne mi kaliyor, heh çok basit bir sonraki doc hali
ile “1D++” olacak. Haydi hoş eğlenceler. Pek bir şey farketmeyecek.
Aynı şeyleri yapacağız. Fakat belki biraz daha oturabilir. hop!.
sensei^rt :: 2004 :: www.oyunyapimi.org
|
[ Geri Dön: Oyun Yapımı (Genel) | Bölümler İndeksi ] |
|
|
|