Как стать автором
Обновить

Комментарии 13

Для меня всегда разница между структурой и классом была в первую очередь эмоциональной) Структура — она как бездуховная куча данных, а класс — он как живой организм с функциями)
Я знаю компании, в которых за неотличие класса от структуры больно бьют в подсобке ногами. Под предлогом попить чаю выводят беднягу из комнаты, накидывают мешок на голову и тащат… А тимлиду выжигают на груди ещё одну звезду за то, что схалявил на собеседовании при приёме того на работу.
Эмоциональной… Вы плачете при виде заката?
Он выбрал неподходящее слово, но я его понимаю. Отличий в C++ мало для структур и классов, только доступом по умолчанию. Как кто-то писал «главное идейное отличие».
Очевидно чтобы не писать два раза public
Между прочим использование для данных реализаций структуры и класса соответсвует code style, принятом в Яндексе. Класс — имеет методы и не имеет публичных свойств. Логика работы с его свойствами инкапсулирована в нем самом. Структура же состоит из публичных свойств, а логики не содержит. Другое дело, что такие структуры получаются довольно редко.

А вот std::vector вместо C style масивов очень напрашиваются.
Во-первых, какую вы используете нотацию для именования в коде?
Во-вторых, как мне кажется, используемый метод будет давать нестабильную симуляцию.
И, наконец, как планируется симулировать упругие отскоки? Ввиду отсутствия явного вектора скорости, отражать будет нечего.

Алсо:

Point* Points[ MAX_VERTICES ];

Почему не std::vector<Point *>?
Отскоки симулируются за счёт всё того же изменения координат. До обработки столкновения с твёрдым телом старая координата находится вне тела, текущая — в теле, следовательно вектор скорости направлен в тело. После обработки старая координата находится в теле, новая — вне тела. Вектор скорости направлен от тела.
А как будет задаваться масса?

И не лучше ли будет использовать традиционный подход для твердых тел, когда не производится симуляция взаимодействия вершин, а просто выделяются «макро» параметры типа положения, угла, поступательной и угловой скоростей, центра массы, массы, момента инерции? Это позволит ускорить симуляцию, т.к. при отсутствии столкновений можно не «погружаться» внутрь объекта, а просто обновлять положение, угол и скорости.
Что то я с формулами не понял. Формула Верле выглядит вот так:
X(t+dt) = 2*X(t) — X(t-dt) + A(t) * dt^2 (скобки раскрывать нельзя)
где:

X(t+dt) — новая позиция;
X(t) — текущая позиция;
X(t-dt) — предыдущая позиция;
A(t) — текущее ускорение;
dt — промежуток времени.

Первую систему вообще не понял. Вы берете формулу из равноускоренного движения и подставляете в формулу равномерного движения. Оно не становиться от этого равноускоренным. Систему нужно обосновать.
У него в коде как раз-таки правильная формула, а в статье неправильная.
И вообще, с Верле будет проблема: где взять X(t-dt), ведь шаг симуляции скачет во времени. Но если учесть, что шаг постоянный — то сойдет. И это еще одно ограничение этого движка. Хотя можно исправить простым домножением на dt1/dt2.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории