Universe sandbox 3 или вращающиеся сферы
Всем привет! ? Уже некоторое время, а именно целую неделю (!), я осваиваю Unity. Это довольно удобная среда для разработки приложений и игр в 3D и не только.
После бесчисленных попыток сделать различные проекты, я решил сделать симулятор космоса наподобие University Sandbox.
Сначала был хаос (и математика)
Давайте же начнём создание с небольшого количества математики. Самая главная формула здесь - это формула всемирного закона тяготения. F = (G * m1 * m2) / r^2 (над F, по идее, стоит стрелочка, так как это векторная величина), где G - это константа (она очень маленькая), m1 и m2 - это масса первого и второго тела, а r^2 - это расстояние между этими телами во второй степени.

Затем, когда мы нашли силу, возникающую между 2 телами нам нужно найти ускорение. Здесь нам опять поможет И. Ньютон, который выяснил, что F = m * a (m - масса, a - ускорение. Над F опять стрелочка, наверно), а значит a = F / m. Итак, теперь самое сложное. Получившееся ускорение необходимо разложить на оси.

Здесь нам поможет подобие треугольников. Давайте для простоты рассмотрим 2-х мерное, а не 3-х мерное пространство. Если мы проведём 2 прямоугольных треугольника. В обоих катеты будут параллельны осям. В первом гипотенуза - это отрезок от 1 тела до 2, а во втором это вектор ускорения (или как-то так). Так вот, эти 2 треугольника будут подобны по 2 углам(!). Значит, мы легко можем разложить вектор ускорения на оси.

Итак, таким образом мы рассчитали ускорение для одного из тел. Таким образом мы рассчитываем ускорение для каждого из тел относительно каждого из тел. Затем конечное ускорение мы прибавляем к скорости, а скорость прибавляем к положению нашей планеты.
В конце концов у меня получилось что-то такое.

Как-то здесь пустовато!
Как вы заметили на второй картинке, как-то здесь пустовато (не считая тех звёзд, которые на фоне). Давайте что-то добавим!

Интересный факт: если Google Translator работает правильно, то поверхность этого солнца на самом деле не светится, а просто игнорирует свет вокруг себя.
Зададим нашему солнцу довольно большую массу по сравнению с планетами. Теперь, добавим немного планет.

Где-то на этом голубом шарике мы ходили в виртуальный поход. Итак, давайте всё расположим и....

Планета так ступенчато движется, так как это gif. Итак, как мы видим, всё работает. Давайте сделаем что-нибудь интересное.
Что-то интересное
Итак, давайте сделаем в нашем мире, полном спокойствия, угрозу уровня Брюса Уиллиса.

Это птица? Это самолёт? Нет, это ужасающий астероид летящий на землю. Давайте посмотрим, сможет ли кто-то спасти Землю.

Ура, на этот раз Земля была спасена!
Спасибо, если дочитали всё это. Пишите, что можно ещё добавить или попробовать сделать, ну и почаще заходите на этот сайт. ?