Создание региона из пути в Android - PullRequest
2 голосов
/ 05 октября 2011

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

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

В классе path нет такого метода пересечения, который я могу найти, поэтому я прибег к использованию областей, которые я протестировал для пересечения, для работы с двумя обычными прямоугольниками, но я не могу создать область, используя область.setPath по какой-то причине.Насколько я понимаю, путь должен быть закрыт, чтобы сформировать область для создания региона, а это не совсем то, что мне нужно.

Есть ли способ создать область вне пути, а не область, созданную путем?Например: если путь был прямой линией толщиной 10 пикселей, как мне сделать область толщиной 10 пикселей?

Вот пример короткого кода, который я делаю:

Path p1path = new Path();
p1path.moveTo(startPos,startPos); 
p1path.lineTo(newPos,newPos);
p1path.moveTo(newPos, newPos);
Region p1region = new Region();
p1region.setPath(p1path, new Region(0,0,480,800); // this is where the region isn't setting as I thought it would...

// do same for p2
if(p1.quickReject(p2)) // checks for intersection

Спасибо:)

1 Ответ

2 голосов
/ 26 апреля 2012

Итак, я решил это довольно давно, но чтобы помочь тем, кто в итоге наткнулся на это и хочет получить подобную функциональность:

Этот пост довольно давно - так что позвольте мне вспомнить, что произошло.

Создание области вокруг пути действительно работало, но для очень ограниченного набора путей.Под «созданием области вокруг пути» я подразумеваю, что для пути, который идет от x1, y1 до x2, y2, создайте прямоугольную область, которая охватывает (например) x1-50, y1-50 до x2 + 50, y2+50, где 50 - удельный вес пикселя пути.

Если вы можете визуализировать его, он в основном создает прямоугольную область, которая покрывает путь, и его ход в 50 пикселей, так что вы можете «подделать» пересечение пути, используя области.Где бы ни находился путь, есть регион, и поэтому, когда 2 пути «пересекаются», вы можете проверить наличие пересечения области (что вы можете сделать, но я забыл имена методов).

Однако это доказало свою эффективность.на несколько путей.Хотя я хотел бы думать, что мое знание математики является адекватным, я не мог получить его так, чтобы в каком бы направлении ни шел Путь, Регион работал.Различные углы, разные направления и т. Д. Приводили к тому, что Регион не отображался должным образом под Путем.Приведенный выше пример использования ширины 50 штрихов будет работать только для движения в определенном направлении.

Решением, на которое я и мой партнер наткнулись, было создание двумерного целочисленного массива, который отображался на экране.Везде, где путь шел в определенном направлении, мы заполняли каждую ячейку массива, на которую отображался путь, определенным значением (1).Мы сделали бы то же самое для другого пути, но с другим значением (2).При каждом перемещении вы проверяете 2D-массив по координатам пути, чтобы увидеть, занят он или нет.Была важная математическая формула, которая экстраполировала бы, какие клетки посещались при переходе от x1, y2 к x2, y2, что оказалось очень полезным - я полагаю, что это было названо как-то по формуле Брасенхайма, или как-то еще.

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

Удачи!

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