İçindekiler:

Güneş Sistemi Simülasyonu: 4 Adım
Güneş Sistemi Simülasyonu: 4 Adım

Video: Güneş Sistemi Simülasyonu: 4 Adım

Video: Güneş Sistemi Simülasyonu: 4 Adım
Video: GEZEGENLER - Güneş Sistemi Hakkında Her Şey - Eğitici Öğretici Eğlenceli Video 2024, Temmuz
Anonim

Bu proje için yerçekiminin bir güneş sistemindeki gezegen cisimlerinin hareketini nasıl etkilediğine dair bir simülasyon oluşturmaya başladım. Yukarıdaki videoda\, Güneş gövdesi tel örgü küre ile temsil edilir ve gezegenler rastgele oluşturulur.

Gezegenlerin hareketi gerçek fiziğe, Evrensel Yerçekimi Yasasına dayanmaktadır. Bu yasa, bir kütleye başka bir kütle tarafından uygulanan yerçekimi kuvvetini tanımlar; bu durumda tüm gezegenler üzerinde Güneş, birbirleri üzerinde gezegenler.

Bu proje için Java tabanlı bir programlama ortamı olan Processing'i kullandım. Ayrıca gezegenlerin yerçekimini simüle eden Processing örnek dosyasını da kullandım. Bunun için tek ihtiyacınız olan İşleme yazılımı ve bir bilgisayar.

Adım 1: 2 Boyutlu Simülasyon

Dan Shiffman'ın YouTube Kanalında Kodlama Treni (Bölüm 1/3) üzerinde oluşturduğu bu kodlamanın nasıl yapılacağına dair bazı videolar izleyerek başladım. Bu noktada, Shiffman'ın sadece fizik yasalarını kullanarak yaptığı gibi, güneş sistemini oluşturmak için özyinelemeyi kullanacağımı düşündüm.

'Çocuk gezegenleri' olan ve aynı zamanda 'çocuk' gezegenleri olan bir gezegen nesnesi yarattım. 2B simülasyonun kodu tamamlanmamıştı çünkü her gezegen için yerçekimi kuvvetlerini simüle etmek için harika bir yolum yoktu. Yerçekimi çekiminin yerleşik işleme örneğine dayanan bir yönde bu düşünce biçiminden döndüm. Sorun şu ki, her gezegendeki diğer tüm gezegenlerden gelen yerçekimi kuvvetini hesaplamam gerekiyordu, ancak tek bir gezegenin bilgisini kolayca nasıl çekeceğimi düşünemiyordum. İşleme öğreticisinin bunu nasıl yaptığını gördükten sonra, bunun yerine döngüler ve diziler kullanarak tam olarak nasıl yapılacağını anladım.

Adım 2: 3 Boyuta Getirmek

İşleme ile birlikte gelen Gezegensel Çekim için örnek kodu kullanarak, 3B simülasyon için yeni bir program başlattım. En büyük fark, iki gezegen arasındaki çekim kuvvetini hesaplayan bir çekim fonksiyonu eklediğim Planet sınıfında. Bu, gezegenlerin sadece güneşe değil, aynı zamanda diğer tüm gezegenlere çekildiği güneş sistemlerimizin nasıl çalıştığını simüle etmeme izin verdi.

Her gezegenin kütle, yarıçap, ilk yörünge hızı vb. gibi rastgele oluşturulmuş özellikleri vardır. Gezegenler katı kürelerdir ve Güneş bir tel örgü küredir. Ek olarak, kamera konumu pencerenin merkezi etrafında döner.

3. Adım: Gerçek Gezegenleri Kullanma

Image
Image

3B simülasyonun çerçevesini indirdikten sonra, güneş sistemimizin gerçek gezegen verilerini bulmak için Wikipedia'yı kullandım. Bir dizi gezegen nesnesi yarattım ve gerçek verileri girdim. Bunu yaptığımda, tüm özellikleri küçültmek zorunda kaldım. Bunu yaptığımda, değerleri küçültmek için gerçek değerleri alıp bir faktörle çarpmalıydım, bunun yerine bunu Dünya birimlerinde yaptım. Yani Dünya'nın değerinin diğer nesnelerin değerine oranını aldım, örneğin Güneş, Dünya'dan 109 kat daha fazla kütleye sahip. Ancak bu, gezegenlerin boyutlarının çok büyük veya çok küçük görünmesine neden oldu.

4. Adım: Son Düşünceler ve Yorumlar

Bu simülasyon üzerinde çalışmaya devam edecek olsaydım, birkaç şeyi düzeltir/iyileştirirdim:

1. İlk önce, aynı ölçeklendirme faktörünü kullanarak her şeyi eşit şekilde ölçeklendirirdim. Ardından yörüngelerin görünürlüğünü iyileştirmek için her bir devrimin bir öncekiyle nasıl karşılaştırıldığını görmek için her gezegenin arkasına bir iz eklerdim.

2. Kamera etkileşimli değildir, bu da yörüngelerin bir kısmının ekranın dışında, "kişinin arkasında" görüntülendiği anlamına gelir. Coding Train'in bu konuyla ilgili video serisinin 2. Kısmında kullanılan Peazy Cam adında bir 3D kamera kütüphanesi var. Bu kitaplık, izleyicinin bir gezegenin tüm yörüngesini takip edebilmesi için kamerayı döndürmesine, kaydırmasına ve yakınlaştırmasına olanak tanır.

3. Son olarak, gezegenler şu anda birbirinden ayırt edilemez. İzleyicilerin Dünya'yı ve benzerlerini tanıyabilmeleri için her gezegene ve Güneş'e 'kaplamalar' eklemek istiyorum.

Önerilen: