Conversión de ángulo radianes a CGVector

Utilizando Sprite Kit estoy tratando de establecer unSKPhysicsBody moviéndose de acuerdo con un ángulo dado, por ejemplo, si quisieras que el sprite viajara a la derecha, especificarías 1.571 radianes. Para convertir el ángulo especificado en una velocidad, estoy usando el siguiente método para convertir radianes a unCGVector. La versión ORIGINAL que implementé desde la memoria tiene el extraño efecto de compensar todos los ángulos en 90 grados. (es decir, si se usan 0 grados, el sprite se mueve a la derecha (como si lo hiciera si especificara 90 grados)

Pregunta:

He arreglado esto en la NUEVA versión cambiando eldx ydy tareas Mi pregunta es por qué sucede esto, ¿estoy equivocado en el original (parece que hay otros que lo hacen de esa manera en la web) o hay alguna razón basada en el sistema de coordenadas en particular que se está utilizando?

// 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;
}

NOTA: también en Sprite Kit las rotaciones en sentido horario son negativas, hasta ahoraconvertAngleToVector está haciendo rotaciones positivas en el sentido de las agujas del reloj (es decir, 1.571 radianes están a la derecha, donde deberían quedar).cos(radians*-1) ysin(radians*-1) pero podría haber alguna razón subyacente para esto basada en que intercambie dx y dy.

Kit Sprite (Coordenadas SKView):

Respuestas a la pregunta(2)

Su respuesta a la pregunta