Комментарии 13
А почему Point структура, а Physics — класс, :-)?
и std::vector вам в помощь.
и std::vector вам в помощь.
+1
Для меня всегда разница между структурой и классом была в первую очередь эмоциональной) Структура — она как бездуховная куча данных, а класс — он как живой организм с функциями)
+11
Я знаю компании, в которых за неотличие класса от структуры больно бьют в подсобке ногами. Под предлогом попить чаю выводят беднягу из комнаты, накидывают мешок на голову и тащат… А тимлиду выжигают на груди ещё одну звезду за то, что схалявил на собеседовании при приёме того на работу.
Эмоциональной… Вы плачете при виде заката?
Эмоциональной… Вы плачете при виде заката?
-18
Очевидно чтобы не писать два раза public
+2
Между прочим использование для данных реализаций структуры и класса соответсвует code style, принятом в Яндексе. Класс — имеет методы и не имеет публичных свойств. Логика работы с его свойствами инкапсулирована в нем самом. Структура же состоит из публичных свойств, а логики не содержит. Другое дело, что такие структуры получаются довольно редко.
А вот std::vector вместо C style масивов очень напрашиваются.
А вот std::vector вместо C style масивов очень напрашиваются.
0
Во-первых, какую вы используете нотацию для именования в коде?
Во-вторых, как мне кажется, используемый метод будет давать нестабильную симуляцию.
И, наконец, как планируется симулировать упругие отскоки? Ввиду отсутствия явного вектора скорости, отражать будет нечего.
Алсо:
Point* Points[ MAX_VERTICES ];
Почему не std::vector<Point *>?
Во-вторых, как мне кажется, используемый метод будет давать нестабильную симуляцию.
И, наконец, как планируется симулировать упругие отскоки? Ввиду отсутствия явного вектора скорости, отражать будет нечего.
Алсо:
Point* Points[ MAX_VERTICES ];
Почему не std::vector<Point *>?
0
Отскоки симулируются за счёт всё того же изменения координат. До обработки столкновения с твёрдым телом старая координата находится вне тела, текущая — в теле, следовательно вектор скорости направлен в тело. После обработки старая координата находится в теле, новая — вне тела. Вектор скорости направлен от тела.
0
А как будет задаваться масса?
И не лучше ли будет использовать традиционный подход для твердых тел, когда не производится симуляция взаимодействия вершин, а просто выделяются «макро» параметры типа положения, угла, поступательной и угловой скоростей, центра массы, массы, момента инерции? Это позволит ускорить симуляцию, т.к. при отсутствии столкновений можно не «погружаться» внутрь объекта, а просто обновлять положение, угол и скорости.
И не лучше ли будет использовать традиционный подход для твердых тел, когда не производится симуляция взаимодействия вершин, а просто выделяются «макро» параметры типа положения, угла, поступательной и угловой скоростей, центра массы, массы, момента инерции? Это позволит ускорить симуляцию, т.к. при отсутствии столкновений можно не «погружаться» внутрь объекта, а просто обновлять положение, угол и скорости.
+1
Игра-то в итоге была написана? Обычно такие истории завершаются на стадии написания движка.
+7
Что то я с формулами не понял. Формула Верле выглядит вот так:
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) = 2*X(t) — X(t-dt) + A(t) * dt^2 (скобки раскрывать нельзя)
где:
X(t+dt) — новая позиция;
X(t) — текущая позиция;
X(t-dt) — предыдущая позиция;
A(t) — текущее ускорение;
dt — промежуток времени.
Первую систему вообще не понял. Вы берете формулу из равноускоренного движения и подставляете в формулу равномерного движения. Оно не становиться от этого равноускоренным. Систему нужно обосновать.
0
У него в коде как раз-таки правильная формула, а в статье неправильная.
И вообще, с Верле будет проблема: где взять X(t-dt), ведь шаг симуляции скачет во времени. Но если учесть, что шаг постоянный — то сойдет. И это еще одно ограничение этого движка. Хотя можно исправить простым домножением на dt1/dt2.
И вообще, с Верле будет проблема: где взять X(t-dt), ведь шаг симуляции скачет во времени. Но если учесть, что шаг постоянный — то сойдет. И это еще одно ограничение этого движка. Хотя можно исправить простым домножением на dt1/dt2.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Публикации
Изменить настройки темы
Рэгдолл физика своими руками. Часть первая