En primer lugar, vamos a precisar qué singularidades medio. Definimos dos mapeos de vectores $M$ y $N$ como cerrar si $|M(v)-N(v)|\le\epsilon|v|$ para todos $v$ (al menos para los mapeos lineales). Definimos dos representaciones (que son vectores) $r(M)$ como cerrar si $|r(M)-r(N)|\le\epsilon$ . Definimos lejos mapeos: $|M(v)-N(v)|>E|v|$ , $E>>\epsilon$ para algunos $v$ . Representaciones lejanas: $|r(M)-r(N)|>E$ , $E>>\epsilon$ .
Nos enfrentamos a dos tipos de singularidades de coordenadas:
- Adelante en el que $r(M)$ y $r(N)$ están cerca, pero $M$ y $N$ están lejos (es decir, los ángulos eulares y el bloqueo del cardán).
- Hacia atrás en el que $r(M)$ y $r(N)$ están lejos, pero $M$ y $N$ están cerca (es decir, los polos en un sistema de latitud-longitud [aunque esto no es una cartografía]).
En 2D, se puede representar la rotación+escala como un vector 2D: La longitud es la escala y la dirección es el ángulo. No hay singularidades si lo representas en formato cartesiano.
En 3D, casi se puede hacer un truco con los cuaterniones, en el que su longitud es la escala (ya no son cuaterniones unitarios). Sin embargo, se pierden las longitudes negativas. En 2-D, las longitudes negativas son sólo rotaciones de 180 grados, pero en 3-D, reflejan. Afortunadamente, dos cuaterniones opuestos son equivalentes, por lo que tiene sentido asignar uno a una longitud positiva, y otro negativa. Sin embargo, esto falla porque no hay manera de dividir los cuaterniones sin introducir "ramificaciones".
¿Hay otra manera sin introducir otro grado de libertad?
Edición: ¡Permitimos la doble cobertura!