обнаружение столкновения дуги 2d android - PullRequest
4 голосов
/ 10 июня 2011

у меня повернутая дуга, нарисованная с использованием 2D-графики Android

c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);

дуга будет вращаться во время игры,

я хочу знатькак я могу определить, сталкиваются ли с ним какие-либо другие игровые объекты (линии, круги) ??

я впервые пишу игру:)

я увидел что-токак это в http://hakim.se/experiments/html5/core/01/

Заранее спасибо

1 Ответ

7 голосов
/ 11 июня 2011

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

Посмотрите на следующую картинку.

Здесь есть 3 объекта. Черная сфера, это визуализирует вашу дугу, если с ней что-то сталкивается, это может быть внутри вашей дуги. Красная сфера сверху черной сферы, это визуализирует «внутри» дуги, если что-то находится внутри красной сферы, это определенно не «внутри» дуги. Теперь есть также зеленый треугольник, который визуализирует «обрезание» вашей дуги, все, что находится внутри зеленого треугольника, также определенно не находится в вашей дуге.

Тестирование, если что-то находится внутри черной сферы, легко. (расстояние объекта до центра сферы <= радиус сферы). То же самое для красной сферы. Зеленый треугольник немного хитрый, вы должны сначала построить это. Найдите начальный и конечный радианы вашей дуги. и поверните единичный вектор начальными радианами. Затем поверните единичный вектор на конечные радианы. Удлините оба этих вектора на 2 * радиуса черной сферы. Теперь используйте центральную точку вашей дуги и положения двух векторов с добавлением центрального положения в качестве 3-х точек треугольника. Затем вы можете использовать один из решателей столкновения точка-треугольник: <a href="http://www.bing.com/search?q=point+triangle+collision&go=&form=QBLH&scope=web" rel="noreferrer">http://www.bing.com/search?q=point+triangle+collision&go=&form=QBLH&scope=web

Помните: столкновение с дугой = (столкновение с черной сферой) &&! (Столкновение с красной сферой) &&! (Столкновение с зеленым треугольником).

ARC Collision

...