Хобрук: Ваш путь к мастерству в программировании

Глянувшее столкновение между кругами

Я моделирую объекты в прототипе игры в виде кругов. У каждого объекта есть масса, радиус, скорость и местоположение. Нет двух объектов с одинаковой массой и радиусом.

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

private void handleCollision(JumpObject a, JumpObject b) {
        double newVelAX = (a.getVelocity().x * (a.getMass() - b.getMass()) + (2 * b.getMass() * b.getVelocity().x)) 
                / (a.getMass() + b.getMass());
        double newVelAY = (a.getVelocity().y * (a.getMass() - b.getMass()) + (2 * b.getMass() * b.getVelocity().y)) 
                / (a.getMass() + b.getMass());
        double newVelBX = (b.getVelocity().x * (b.getMass() - a.getMass()) + (2 * a.getMass() * a.getVelocity().x)) 
                / (a.getMass() + b.getMass());
        double newVelBY = (b.getVelocity().y * (b.getMass() - a.getMass()) + (2 * a.getMass() * a.getVelocity().y)) 
                / (a.getMass() + b.getMass());

        a.getVelocity().setLocation(newVelAX, newVelAY);
        b.getVelocity().setLocation(newVelBX, newVelBY);
}

Мне нужно иметь дело со случаем, когда один из кругов попадает в другой под скользящим углом (я могу сделать диаграмму позже, если это необходимо), например, когда маленький круг едва задевает край большего круга, когда он проходит.

Как изменить алгоритм столкновения, чтобы учесть, где один круг касается другого?


  • Вам нужно atan2 вместе с расстоянием между центрами. 16.08.2013
  • Вы хотите немного физики? Практически невозможно заставить код работать без понимания физики. 17.08.2013

Ответы:


1

См. Ссылки.

столкновение круг-круг

Столкновение мяча с мячом - обнаружение и обработка

http://gamedev.tutsplus.com/tutorials/implementation/when-worlds-collide-simulating-circle-circle-collisions/

http://processing.org/examples/circlecollision.html

16.08.2013
  • Это хорошие ссылки. Третий, на gamedev.tutsplus, на самом деле точно воспроизводит мою проблему. Если вы посмотрите их последнюю демонстрацию, вы заметите, что скользящие столкновения делают то же самое, что и прямые. Код столкновения кругов обработки, кажется, имеет то, что мне нужно. 20.08.2013
  • Мое последнее решение заключалось в импорте класса Vector2D для обработки некоторых математических операций. Я могу разобраться в векторной математике, но выполнение всех триггеров тоже меня запутало. 25.08.2013
  • @MartinCarney Похоже, проблема с симуляцией на gamedev.tutsplus решена. 23.11.2014
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..