C# Grafik Programlama – “Eppur Si Muove”

Sat, Mar 18, 2017 One-minute read

Daha önceden hazırladığımız 3 boyutlu bir nesneyi bakış açısına göre döndürüyor ve ölçeklendiriyoruz.

Eppur Si Muove sözü Galileo Galilei tarafından söylenmiştir.

Şeklimiz ve koordinatlarımız hazır olarak elimizde mevcut. Şimdi bunları ölçeklendirelim. C# WPF kullandığımız için timer oluşturabliriz. Böylelikle şeklimizin büyüyüp küçülmesini milisaniye cinsinden gözlemleme şansımız oluyor.

private System.Windows.Forms.Timer dondur;

Daha sonra mantık kısmımızı ekliyoruz. Eğer ölçek oranımız 0.5ten büyük ve 2.0’dan küçükse ölçek oranını arttır. Değilse azalt.

ScaleArtsinMi = ((scale > 2 || scale <= 0.5) ? !ScaleArtsinMi : ScaleArtsinMi);

Daha sonra

Scale4D(noktalar , scaleoranimiz , scaleoranimiz , scaleoranimiz);

metodumuzla matris ile noktayı çarpıyoruz. Elde ettiğimiz nokta bizim ölçeklenmiş noktamız oluyor.

Çağırma buttonumuzda dondur.Start() yazarak zamanlamayı başlatıyoruz ve nesnemiz 100ms büyüyüp küçülüyor.

Döndürme yapabilmek için kameramızın ayarlanması gerekiyor.

Kameramızın ayarlanması için 3 vektöre ihtiyacımız var bunlar “eye,target ve up”.

Bu 3 vektör noktasal çarpımla hesaplandıktan sonra Kameramızın görüşü belirlenmiş oluyor. Bundan sonra yine zamanlayıcıyla eye vektörünün x , y ve/veya z koordinatlarına değer arttırımı yaparak döndürülmesini sağlayabiliriz.

twitter kart resmimiz https://xceed.com/wp-content/documentation/xceed-datagrid-for-wpf/CardflowView3DCamera.html bu linkten alınmıştır