Мяч отскакивает от изогнутой линии iPhone - PullRequest
0 голосов
/ 13 ноября 2011

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

Я решил отойти от метода исчисления, так как используемые матрицы кажутся страшнее, чем нужно.Вместо этого я делаю в событии -(void)touchesMoved запись текущей точки касания в массиве CGPoint.Затем, чтобы найти коллизию, у меня есть цикл for, подобный for (int i = 2; i <= numberOfPoints; i++) {, который просматривает все значения для i по мере увеличения numberOfPoints.Так что для столкновений я предполагал, что получу наклон линии между i и i-1, затем получу перпендикулярное расстояние от мяча до этой линии, и когда он приблизится к нулю, произошло столкновение, как я это делал в прямой линии.

Однако это не работает.У кого-нибудь есть какие-либо советы для лучшего способа сделать это?Я действительно подчеркнул все мои варианты для этого

1 Ответ

1 голос
/ 18 ноября 2011

Использование i и i-1 для вычисления наклона слишком сильно упрощает его.Я бы предложил:

  1. Расширение расстояния между двумя точками для расчета наклона (например, i и i-4).Причина в том, что для человеческого глаза разница неощутима для двух последовательных точек.Глаз будет воспринимать один и тот же наклон для точек чуть дальше друг от друга.Однако точки, расположенные дальше друг от друга, могут предоставить вам более точный наклон.

  2. Если точка столкновения равна i, попробуйте усреднить наклоны между (i, i-1), (i, i-2), (i, i-3), (i, i + 1), (i, i + 2), (i, i + 3).Я чувствую, что это также должно дать вам лучший результат.

На вашем месте я бы использовал вариант 2.

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

Также, в качестве примечания, я предполагаю, что вы уже знаете об этом, но слышали ли вы о Box2D

РЕДАКТИРОВАТЬ:

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

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