Любые идеи о том, как создать точную орбитальную гравитацию с помощью box2d? - PullRequest
2 голосов
/ 25 марта 2012

Я пытаюсь создать точную систему орбитальной гравитации с использованием box2d; я хочу иметь возможность стрелять в пулю на земле, и в зависимости от того, насколько быстро она будет лететь, она вылетит с Земли, останется на орбите вокруг Земли или приземлится, например, на 240 градусов или 45 градусов на поверхности земли. (при условии, что пуля будет стрелять при 0 градусах) Я провел много исследований и уже изучил законы физики Ньютона и т. Д. Базовое применение силы, кажется, не выполняет работу достаточно точно. Я также нашел формулу, которая вычисляет необходимую скорость, чтобы объект оставался на орбите, и мне удалось сделать это в box2d. Однако, если я захочу остановить пулю, пуля больше не упадет на землю. (приложенная сила используется для радиальной гравитации, а вторая применяемая сила используется для перемещения пули в «правое положение»). Она останется на орбите. Только если я добавлю демпфирование, пуля снова упадет на землю, но мне это кажется неправильным. Когда пуля сталкивается с чем-то другим, она также затухает.

Я подумал, что главная проблема здесь - изменить скорость пули. Пуля занимает х время, чтобы приземлиться, скажем: 180 градусов. Чем дальше пуля от поверхности земли, тем больше скорость, необходимая для посадки на 180 градусов за то же время. Я думаю, что скорость - это ключ к созданию точной радиальной гравитации, но мой вопрос таков; Это правда, что вы, ребята, думаете, у кого-нибудь есть подобный сценарий? Как можно контролировать скорость самым правильным способом, не используя демпфирование и заданную линейную скорость ??

Я также хочу иметь возможность контролировать скорость, необходимую, чтобы позволить орбите пули, убежать или приземлиться на землю. Это должно быть возможно, так как есть также формула, которая вычисляет скорость орбиты. Например. Когда он идет не так, пуля движется слишком быстро, сбегает с земли, но движется назад, потому что гравитация Земли изменит путь пули.

Кстати: я много искал в интернете, но не могу связать эти вещи с практическим кодом box2d, так что я надеюсь, что кто-то может указать мне верное направление. С уважением!

1 Ответ

3 голосов
/ 07 апреля 2012

Я обнаружил, что http://www.emanueleferonato.com/2012/03/28/simulate-radial-gravity-also-know-as-planet-gravity-with-box2d-as-seen-on-angry-birds-space/ дал отличный пример выполнения радиальной гравитации (гравитации планеты) с использованием Box2D для ActionScript3, но его можно легко перенести в Box2D для C ++. Есть несколько примеров Box2D для выполнения других трюков.

...