12/2/2009 - İki cismin çarpışmasına örneklerle ulaşmak: Örnek1

Merhaba,
Bugünkü yazıda bitirme projeme başlamadan önce yapmam gerektiğine inandığım bir kaç grafiksel örneği paylaşacağım. Aslında çok fazla bir işe yaramasalar da ya da çok amatörce programlar olsa da bazı fikirlerin aklımda canlanması açısından ve size de sunmak açısından güzel örnekler olduklarını düşünüyorum. Kodların bazı kısımlarında bir kaç arkadaşımdan yardım aldığımı da belirtmek isterim. Onlara buradan teşekkür ediyorum. [ Mehmet, Ali ve Onur :D ]
İlk örnek pendulum'a geçişi sağlayabilmek için kendimce tasarladığım bir programdır. Pendulum da bilineceği üzere sarkaç sistemidir. Belli başlı formüllerle hesaplamaları yapılıp frekansı ya da hareket açıları hesaplanır. Programda bu formülleri kullanırken de aynen kağıt üstünde işlem yapar gibi işlem yapmak zorundayız. http://www.physics-lab.net/applets/simple-pendulum örneği gerçekten ileri düzey. Benim örneğim biraz daha amatör, sınırlamalar var ilk örnekte örneğin belirli bir noktaya vardığında o noktaya çarpmasını istedim.
/** * * @author KAYWINSOFT */ import java.awt.*; import java.applet.*;
public class BallMove extends Applet implements Runnable{
int x_pos = 10; int y_pos = 100; int radius = 20; int y_speed = 1; Image dbImage; Graphics dbg; int appletsize_x = 100; int appletsize_y = 100; int x_speed = 1; //X yönünde top hızı public void start () {
// define a new thread Thread th = new Thread (this); // start this thread th.start ();
} //ilk değişikliklerin yapıldığı yer. public void init() { setBackground (Color.yellow); } public void run () { Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
// Thread doğru olarak çalıştıkça devam et while (true) { // top sınıra yaklaştığında yukarı kaldır if (x_pos > appletsize_x - radius) { // top yönünü değiştirme x_speed = -1; } // top sınırdan uzaklaştığında aşağı indir else if (x_pos < radius) { x_speed = +1; } if (y_pos > appletsize_y - radius) { y_speed = -1; } else if (y_pos < radius) { y_speed = +1; }
//x koordinat değiştirme x_pos += x_speed; y_pos += y_speed;
repaint();
try { Thread.sleep (20); } catch (InterruptedException ex) { // do nothing }
Thread.currentThread().setPriority(Thread.MAX_PRIORITY); }
} public void update (Graphics g) { if (dbImage == null) { dbImage = createImage (this.getSize().width, this.getSize().height); dbg = dbImage.getGraphics (); }
dbg.setColor(Color.YELLOW); dbg.setColor (getBackground ()); dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
dbg.setColor (getForeground()); paint (dbg); g.drawImage (dbImage, 0, 0, this); g.drawLine(x_pos, y_pos, 0,0); } public void paint (Graphics g) { // set color g.setColor (Color.red); // paint a filled colored circle g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
} }
henüz dosya upload'ı uygun olmadığı için resimlerle idare etmenizi rica edeceğim. Fakat şunu belirteyim, böyle gözlendiğinde cidden baya bir amatörce oluyor.

|
|
Yorum yaz!
|
|
Hakkımda
Kategoriler
Arkadaşlarım
|