Как реализовать коллизию между двумя окружностями?

SFML и C++ Уроки \ Разработка игр Форумы Логика игр Как реализовать коллизию между двумя окружностями?

Помечено: 

В этой теме 2 ответа, 2 участника, последнее обновление  KindRedSand 6 года/лет, 8 мес. назад.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #4858

    Zed
    Участник
    Сообщений:0

    Зарегистрирован:
    17.08.2017

    Репутация:0

    Нужно что бы при соприкосновений две окружности не входили друг в друга, а стояли впритык.

    Как это реализовать?

    #4859

    KindRedSand
    Участник
    Сообщений:82

    Зарегистрирован:
    05.04.2017

    Репутация:30

    Помоему в разы проще чем делать коллизию на SAT. Берёшь вектора цетров окружностей и проверяешь дистанцию между ними – если дистанция меньше чем сумма радиусов – выталкивай вектора центров в противоположных направлениях на велечину пересечения.
    Будет примерно так

     

    #4860

    KindRedSand
    Участник
    Сообщений:82

    Зарегистрирован:
    05.04.2017

    Репутация:30

    Поправочка. в строке vec = vectorRotate(sf::Vector2f(1,0),360  angle) должно быть не 360 а 180. Ночью котелок порой варит вообще не в ту сторону

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)

Для ответа в этой теме необходимо авторизоваться.