Category: Türkçe

Date:

Türk Bayrağı

Bu dönem içeriğinin yarısında Javada çizim, threading vs. konuları göreceğimiz Yazılım Mühendisliği dersinin ilk projesinde standartlarına uygun olarak Java ile Türk Bayrağı çizdik. Bunun için Javanın Graphics2D kütüphanelerini kullandım. Projeye başlamadan önce acaba bu işi kod ile yapan var mıdır diye düşünüp arasam da pek bir sonuca ulaşamadım. Ben de oturdum Türk Bayrağının ölçünlerini analiz ederek Analitik Geometri bilgileriyle her bir öğenin (ay, yıldız) koordinatlarını hesapladım.

Bayrağın koordinatları G ile ifade edilen genişlik miktarına orantılı olarak hesaplanıyor. Ancak dikkat etmek gerekiyor ki bu genişlik dikey eksende belirlendiği için bazı durumlarda ekran onu yükseklik olarak kabul edebiliyor. Hilal şeklinde ay yapabilmek için iç içe geçmiş iki daire yapmak gerekti.

Beyaz Büyük dairenin merkezi (G/2, G/2), yarı çapı G/4
Kırmızı Küçük dairenin merkezi (0.5625*G, G/2), yarı çapı G/5

Sıra geldi yıldız yapmaya. Burası oldukça zorladı. Verilen özelliklere bakılırsa bir daire çizip bunu 72 derecelik beş parçaya ayırmak gerekiyordu. Sonra her bir noktayı kendisine uzak olan 2 diğer nokta ile birleştirip şekli doldurunca yıldız oluşuyor. Bunun için polar koordinat sisteminden kartezyen koordinat sistemine dönüşüm yapmam gerekti. Açıların sinüs ve kosinüs hesaplarını yaparak yıldızın noktalarının koordinatlarını hesapladım.

Eğer yıldızı çevreleyen dikdörtgen (0,0) noktasında başlamış olsaydı (yani sol üst köşeden başlayacak şekilde sadece yıldız çiziyor olsaydık), yıldızın sivri uçlarının koordinatları şöyle olacaktı (yarıçap r = G/8)

(0 , r); (1.80901*r, 0.4123*r); (0.691*r, 1.951*r); (0.691*r, 0.049*r); (1.80901*r, 1.5877*r); (0, r)

İlk ve son koordinat aynı, çizim yaparken bu sırada yaparsanız ve doldur derseniz elinize dolu bir yıldız çıkıyor.

Ancak bu verdiğim yerel koordinatlara bir de yıldızı çevreleyen dikdörtgenin konumunu eklemek gerekiyordu. Böylelikle yıldızı hilalin hemen sağına getirebilirdim. Bunun için yukarıda hesapladığım her bir koordinatın x bileşenine (0.35 + 1/3.0)*G, y bileşenine 3*G/8 eklemem gerekti. Bunları ekledikten sonra elimde gerçek ölçünlere uygun bir Türk bayrağı vardı. Ancak bayrağın en solunda bulunan beyaz kısmı dahil etmedim. Öyle bir şey olsa yukarıdaki tüm koordinatlara belli bir x değeri eklememiz gerekirdi.

Bir de şunu fark ettim, hemen hiçkimse bunca zamandır yıldızın sivri ucunun hilalin ortasına baktığını fark etmemiş, nedense hep bayrağın alt üst çizgilerine paralel olduğunu düşünmüşüz :) Genişliği ortadan ikiye bölen çizgiyi hayal edin. O çizgi, yıldızın en soldaki sol açısının açıortayı durumunda.

Kodları şuradan edinebilirsiniz.


Share: FacebookGoogle+Email


Receive notification on my new posts

* required
Languages*   
* Different contents, not direct translation. You may choose both if you wish.
comments powered by Disqus