Мне удалось получить физику бурундука и некоторые другие вещи, чтобы положить мяч на мой экран, и я могу влиять на гравитацию с помощью некоторых кнопок / акселерометра. Ура мне!
Затем я хотел бы отключить гравитацию и смоделировать вид сверху вниз, где этот мяч перемещается по экрану по собственной воле. Я могу прикладывать силы к мячу, используя body -> f = cpv(dx, dy)
, но я не очень хорошо разбираюсь в физике и математике, поэтому я пытаюсь понять, как два значения, которые я передаю, вызывают движение.
Я понимаю, что положительные значения будут перемещать его вправо или вниз, а отрицательные значения будут перемещать его влево или вверх, но это все, что я понимаю на данный момент.
Если бы я хотел, скажем, выбрать случайный азимут по компасу (0–359 градусов) и переместить его по этому азимуту, как бы такое значение преобразовалось в вектор?
Я создал этот метод, но он не работает должным образом, и я не уверен, что делаю неправильно:
- (CGPoint) getVectorFromAngle: (float) angle AndMagnitude: (float) magnitude
{
float x = magnitude * cos(angle);
float y = magnitude * sin(angle);
CGPoint point = CGPointMake(x, y);
NSLog(@"Made a CGPoint of X: %f and Y: %f.", point.x, point.y);
return point;
}
Если я передам ему угол 45
и величину 10
, он создаст X как 5,253220 и 8,509035. Однако калькулятор, найденный здесь, показывает, что он должен создавать X и Y как 7,0711.
Что у меня здесь не так?
(x, y)
— это вектор в декартовых координатах, а величина + угол описывают вектор в полярных координатах. Преобразование описано в этой статье Википедии или любой книге/статье по тригонометрии. - person Martin R   schedule 09.01.2013