2014-01-06 3 views
-1

Я пытаюсь запрограммировать проблему с двумя телами в SDL 1.2 Итак, в этой программе у меня было бы два тела правильно, мой вопрос в том, какие данные мне нужны для каждого тела? Программа - это только два тела, вращающиеся вокруг по определенной орбите. Я бы создал класс для каждого Тела и сохранил данные там. Я считаю, что мне нужны следующие данные mass1, mass2 (масса для каждого тела) speed1, speed2 (начальная скорость для каждого объекта) angle1, angle2 (угол, в направлении которого объект будет перемещаться в начале моделирования) расстояние (расстояние между объектами друг от друга)Переменные, необходимые для двух движений тела

Я не уверен, что я прав или нет, нужны ли мне какие-либо другие данные для объектов или какая-то дата, о которой я сказал немного ?

+0

Это немного открытый вопрос, а не большой вопрос. Но спросите себя, как вы будете определять положение тел, используя ручку и бумагу. – Skizz

+0

Возможно, существует несколько разных способов сделать это, но я начну с каждого объекта, имеющего массу, векторную позицию и вектор для скорости (который включает в себя как скорость, так и направление). Вы можете хранить такие вещи, как угол и т. Д., Но поскольку эта же информация может быть получена просто из вектора скорости, она будет избыточной - хотя в определенных ситуациях она может быть полезна как «кэшированное значение», поэтому вы не придется повторно пересчитать его повторно ... – twalberg

ответ

1

Поскольку ваша проблема в трехмерном пространстве, вам понадобится 6 позиционных параметров для каждого тела и массы. Как именно вы кодируете эти параметры, зависит от вас. Если вы хотите дать координаты в декартовых координатах, храните в них x, y и z компонентами положения и x, y и z компонентами скорости. Если вы хотите использовать полярные координаты, вам понадобятся величина, азимутальный угол и угол места. Конфигурация, о которой вы говорили до сих пор, имеет массу, скорость, азимут и скорость. Вам также необходимо включить начальные позиции. Я бы рекомендовал переключиться на декартовы координаты, поскольку интеграция будет выглядеть более однородной в разных направлениях.

+0

Я также рекомендовал бы поддерживать полную энергию системы, импульс и угловой момент. Они сохраняются. Хранение их означает, что набор переменных чрезмерно расширен, но вам необходимо устранить накопление ошибок округления. Также может быть полезно хранить центр тяжести (в дополнение к импульсу) и делать все вычисления относительно CoG. – MSalters

+0

@MSalters. Это хороший совет. –

Смежные вопросы