Оглавление:

Моделирование солнечной системы: 4 шага
Моделирование солнечной системы: 4 шага

Видео: Моделирование солнечной системы: 4 шага

Видео: Моделирование солнечной системы: 4 шага
Видео: Как на самом деле движутся планеты Солнечной системы? 2024, Ноябрь
Anonim

Для этого проекта я намеревался создать симуляцию того, как гравитация влияет на движение планетных тел в солнечной системе. На видео выше / тело Солнца представлено сферой из проволочной сетки, а планеты генерируются случайным образом.

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

Для этого проекта я использовал Processing, среду программирования на основе Java. Я также использовал файл примера Processing, который имитирует гравитацию планет. Все, что вам понадобится для этого, - это программное обеспечение для обработки и компьютер.

Шаг 1: 2-мерное моделирование

Я начал с просмотра нескольких видеороликов о том, как писать код, которые Дэн Шиффман создал на своем канале YouTube, The Coding Train (Часть 1/3). В этот момент я подумал, что буду использовать рекурсию для создания солнечной системы, подобно тому, как это делает Шиффман, используя только законы физики.

Я создал объект-планету, у которого были «дочерние планеты», которые, в свою очередь, также имели «дочерние» планеты. Код для 2D-моделирования не был закончен, потому что у меня не было отличного способа имитировать гравитационные силы для каждой планеты. Я отказался от этого образа мышления в направлении, основанном на примере встроенной обработки гравитационного притяжения. Проблема заключалась в том, что мне нужно было вычислить гравитационную силу от всех других планет на каждой планете, но я не мог придумать, как легко получить информацию об отдельной планете. Увидев, как это делается в руководстве по обработке, я точно понял, как это сделать, используя вместо этого циклы и массивы.

Шаг 2: доведение до трех измерений

Используя пример кода для планетарного притяжения, который идет с обработкой, я запустил новую программу для трехмерного моделирования. Основное отличие заключается в классе Planet, где я добавил функцию притяжения, которая вычисляет гравитационную силу между двумя планетами. Это позволило мне смоделировать работу нашей солнечной системы, в которой планеты притягиваются не только к Солнцу, но и ко всем остальным планетам.

Каждая планета имеет случайно сгенерированные характеристики, такие как масса, радиус, начальная орбитальная скорость и т. Д. Планеты - это твердые сферы, а Солнце - сфера из проволочной сетки. Кроме того, камера вращается вокруг центра окна.

Шаг 3: Использование реальных планет

Image
Image

После того, как я разработал основу для 3D-моделирования, я использовал Википедию, чтобы найти фактические планетарные данные для нашей Солнечной системы. Я создал массив объектов планет и ввел реальные данные. Когда я это сделал, мне пришлось уменьшить все характеристики. Когда я сделал это, я должен был взять фактические значения и умножить их на коэффициент, чтобы уменьшить значения, вместо этого я сделал это в единицах Земли. То есть я взял отношение стоимости Земли к стоимости других объектов, например, Солнце имеет массу в 109 раз больше, чем Земля. Однако это привело к тому, что размеры планет выглядели слишком большими или слишком маленькими.

Шаг 4: Заключительные мысли и комментарии

Если бы я продолжил работу над этой симуляцией, я бы уточнил / улучшил пару вещей:

1. Сначала я бы масштабировал все равномерно, используя один и тот же коэффициент масштабирования. Затем, чтобы улучшить видимость орбит, я бы добавил след за каждой планетой, чтобы увидеть, как каждый оборот сравнивается с предыдущим.

2. Камера не интерактивная, а это значит, что часть орбит находится за пределами экрана, «за спиной» просмотра. Существует библиотека 3D-камер Peazy Cam, которая используется во второй части серии видеороликов Coding Train по этой теме. Эта библиотека позволяет зрителю вращать, панорамировать и масштабировать камеру, чтобы они могли следить за всей орбитой планеты.

3. Наконец, планеты в настоящее время неотличимы друг от друга. Я хотел бы добавить «скины» к каждой планете и Солнцу, чтобы зрители могли узнать Землю и тому подобное.

Рекомендуемые: