Преобразование радиан угла в CGVector

Используя Sprite Kit, я пытаюсь установитьSKPhysicsBody двигаясь в соответствии с заданным углом, например, если вы хотите, чтобы спрайт двигался вправо, вы должны указать 1.571 радиан. Чтобы превратить указанный угол в скорость, я использую метод ниже, чтобы преобразовать радианы вCGVector, ОРИГИНАЛЬНАЯ версия, которую я реализовал по памяти, имеет странный эффект смещения всех углов на 90 градусов. (т.е. если используется 0 градусов, спрайт движется вправо (как если бы вы указали 90 градусов)

Вопрос:

Я исправил это в новой версии, поменяв местамиdx а такжеdy задания. Мой вопрос: почему это происходит, неправильно ли я это делаю в оригинале (кажется, что другие делают это в Интернете) или есть какая-то причина, основанная на конкретной используемой системе координат?

// ORIGINAL
- (CGVector)convertAngleToVector:(CGFloat)radians {
    CGVector vector;
    vector.dx = cos(radians) * 10;
    vector.dy = sin(radians) * 10;
    NSLog(@"DX: %0.2f DY: %0.2f", vector.dx, vector.dy);
    return vector;
}


// NEW, SWAPPED DX & DY
- (CGVector)convertAngleToVector:(CGFloat)radians {
    CGVector vector;
    vector.dy = cos(radians) * 10;
    vector.dx = sin(radians) * 10;
    NSLog(@"DX: %0.2f DY: %0.2f", vector.dx, vector.dy);
    return vector;
}

НОТА: также в Sprite Kit вращения по часовой стрелке отрицательны, покаconvertAngleToVector делает положительные вращения по часовой стрелке (то есть 1.571 радиан вправо, там, где он должен быть оставлен), я мог бы просто сделатьcos(radians*-1) а такжеsin(radians*-1) но для этого может быть какая-то причина, основанная на том, что я меняю местами dx и dy.

Набор спрайтов (координаты SKView):

Ответы на вопрос(2)

Ваш ответ на вопрос