10 Aralık 2009

Analog Saat



Meslek lisesinde görev yaparken
programlama dili dersinde
öğrencilere grafik kapsamında örnek olarak analog saat yapmalarını istemiştim.

Bu bizim ne işimize yarayacak dedikleri matematik konuları
bu proje kapsamında karşılarına çıkmıştı.

Biraz trigonometri bilgisi bu proje için yeterli idi.

Projeyi yaptırdığıma pişman olmuştum.
Çünkü programlama kısmını geçmiş matematik anlatmaya başlamıştım.

Sağ olsun ö.s.s nedeniyle şık eleme , formül ezberleme, hızlı çözme derken bir
çok şeyin mantığından habersiz , öğrendiklerini başka bir alana aktarma konusunda
yetersiz bir nesil yetiştirmekteyiz.

Bende bu sistemin bir parçası olmaktan çok mutlu olduğumu söylenemez.

ha bu yazı nerden çıktı.
Üniversite öğrencileri bile programlama sitelerinde şu analog saatin nasıl yapılacağını
soruyorlar. Çözüm olarak öyle şeyler yazılmış ki.

Neyse bu arkadaşlarımız için şöyle bir kaç kod yazayım dedim

1- Gerçek hayatda akrep,yelkovanı temsil eden çubuğunu boyu değişirmi
2- Bu çubukların bir noktası daima sabitmidir
3- Bu çubuklar sabit açılarla hareket edermi
4- Programlamada açı birimi olarak, derece değilde radyan kullanılırmı


Örneğin
ben yelkovanı her dakika kaç derece hareket ettirecem.
bir daire 360 ise 60 hareket yapacaksa 360/60=6 derece
Bu altı dereceyi radyana çevir.

x1,y1 merkez nokta olsun.
x2,y2 yi hesapla.


derece = (derece + 6) Mod 360
radyan = (derece * Math.PI / 180)

x2 = x1 + (uzunluk * Math.Sin(radyan))
y2 = y1 - (uzunluk * Math.Cos(radyan))

grafik.DrawLine(kalem, x1, y1, x2, y2)

Yukarıdaki kodlara bakarakta daha yapamayan varsa programcılıktan vazgeçsin.
Belki başka bir alanda yeteniği var. Ama malesef ülkemizde senin bu yeteneğin pek keşfedilmeyecek. Mezun olacak ve mezun olduğun alan dışında bir işte çalışacaksın.