Съдържание:

Симулация на слънчевата система: 4 стъпки
Симулация на слънчевата система: 4 стъпки

Видео: Симулация на слънчевата система: 4 стъпки

Видео: Симулация на слънчевата система: 4 стъпки
Видео: Топ 10 Удивителни неща за Земята, които не знаехте 2024, Юли
Anonim

За този проект се опитах да създам симулация на това как гравитацията влияе върху движението на планетарните тела в Слънчевата система. Във видеото по -горе \, слънчевото тяло е представено от сфера от телена мрежа, а планетите са генерирани на случаен принцип.

Движението на планетите се основава на реалната физика, Закона за всеобщото привличане. Този закон определя гравитационната сила, упражнявана върху маса от друга маса; в този случай Слънцето на всички планети, и планетите една върху друга.

За този проект използвах Processing, среда за програмиране, базирана на java. Използвах и примерния файл за обработка, който симулира гравитацията на планетите. Всичко, от което се нуждаете, е софтуерът за обработка и компютър.

Стъпка 1: 2 -мерна симулация

Започнах с гледане на няколко видеоклипа за това как да кодирам това, което Дан Шифман създаде в канала си в YouTube, Кодиращият влак (част 1/3). В този момент си помислих, че ще използвам рекурсия за генериране на Слънчевата система, подобно на това, което Шифман прави само използвайки законите на физиката.

Създадох обект на планета, който имаше „детски планети“, които от своя страна също имаха „детски“планети. Кодът за 2D симулация не беше завършен, защото нямах чудесен начин да симулирам гравитационните сили за всяка планета. Аз се отклоних от този начин на мислене, в посока, основана на вградения пример за обработка на гравитационното привличане. Въпросът беше, че трябваше да изчисля гравитационната сила от всички останали планети на всяка планета, но не можех да измисля как лесно да извлека информацията за отделна планета. След като видях как работи урокът за обработка, разбрах как точно да го направя, използвайки вместо това цикли и масиви

Стъпка 2: Привеждане в 3 измерения

Използвайки примерния код за планетарно привличане, който идва с обработка, стартирах нова програма за 3D симулация. Основната разлика е в класа Planet, където добавих функция за привличане, която изчислява гравитационната сила между две планети. Това ми позволи да симулирам как работят нашите слънчеви системи, където планетите не са привлечени само от слънцето, но и от всяка друга планета.

Всяка планета има произволно генерирани характеристики като маса, радиус, начална орбитална скорост и др. Планетите са твърди сфери и Слънцето е сфера от телена мрежа. Освен това местоположението на камерата се върти около центъра на прозореца.

Стъпка 3: Използване на истински планети

Image
Image

След като свалих рамката за 3D симулация, използвах Wikipedia, за да намеря действителните планетарни данни за нашата Слънчева система. Създадох масив от планетни обекти и въведох реалните данни. Когато направих това, трябваше да намаля всички характеристики. Когато направих това, трябваше да взема действителните стойности и да умножа по коефициент, за да намаля мащабите на стойностите, вместо това го направих в единици на Земята. Тоест взех съотношението между стойността на Земята и стойността на другите обекти, например Слънцето има 109 пъти по -голяма маса от Земята. Това обаче доведе до това, че размерите на планетите изглеждат твърде големи или твърде малки.

Стъпка 4: Заключителни мисли и коментари

Ако продължа да работя върху тази симулация, бих усъвършенствал/подобрил няколко неща:

1. Първо бих мащабирал всичко еднакво, използвайки същия коефициент на мащабиране. След това, за да подобря видимостта на орбитите, бих добавил следа зад всяка планета, за да видя как всяка революция се сравнява с предишната

2. Камерата не е интерактивна, което означава, че част от орбитите са извън екрана, гледайки „зад човека“. Има библиотека с 3D камери, наречена Peazy Cam, която се използва във част 2 от видео поредицата на Coding Train по тази тема. Тази библиотека позволява на зрителя да завърта, премества и приближава камерата, така че да може да следи цялата орбита на планетата.

3. И накрая, в момента планетите са неразличими една от друга. Бих искал да добавя „кожи“към всяка планета и Слънцето, така че зрителите да могат да разпознаят Земята и подобни.

Препоръчано: