Как я могу создать набор координат для круга, который избегает нескольких указанных областей? - PullRequest
0 голосов
/ 18 мая 2018

Я работаю над 2D-игрой, и сейф не велик Текущая система получает случайную координату и проверяет столкновение, снова пытаясь столкнуться с другим объектом. После 15 неудачных попыток он сдастся и появится поверх другого объекта. Мне интересно, есть ли способ создать формулу для расчета позиции за пределами массива позиций. Например, скажем, у меня есть этот массив:

var coveredArea = [
    {x: 200, y: 100, r: 50}
    {x: 100, y: 300, r: 50}
    {x: 300, y: 200, r: 50}
];

Для визуального представления, скажем, холст выглядит так: https://i.imgur.com/ZfPPL4P.png

Я хочу составить формулу для расчета положения вне этих объектов без случайного угадывания и проверки. Это возможно? Я хотел бы получить базовую идею, которая поможет мне двигаться в правильном направлении, если решение будет слишком сложным, чтобы его можно было отдать.

1 Ответ

0 голосов
/ 18 мая 2018

Если размеры сцены являются резонансными, запрещенные объекты не часто меняют положение, и вам приходится выполнять много запросов, самый простой и быстрый из них - это картографический подход:

Создайте растровое изображение, заполните его черным и нарисуйте все объектызакрашены белым цветом (если вам нужно различить разные объекты, нарисуйте каждый из них по определенному цвету # 000001, # 000002 и т. д.).

Затем просто проверьте цвет пикселя в нужных координатах.

Если у вас есть определенный радиус окружности (а не только точки), тогда используйте широкое перо для границ фигуры (lineWidth = 2 * R + 1), lineJoin = round)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...