Aclaración: parece que no soy capaz de entender esto, porque QUIZÁS el programa que estoy usando para visualizar datos 3D realiza algún tipo de transformación que desconozco, por lo que produce resultados que no se ajustan a lo que yo esperaría.
Tengo un diagrama de antena en 3D, que se describe mediante una matriz 2D de 181 x 360 puntos (uno cada 1° para cada dimensión). Sea phi
sea el plano con 360 puntos (0° a 359°) asociado al ángulo acimutal, y theta
el que tiene 181 (0° a 180°) puntos asociados al ángulo de elevación. R
sería en cambio el valor de la matriz por las coordenadas phi y theta.
Como nos movemos sobre una superficie esférica, el punto phi = x
y theta = 180° + y
es igual a phi = x + 180°
y theta = 360° - (180° + y)
.
Ahora, supongamos que tengo que rotar el patrón 3D por una elevación de delta
grados.
Razonando estrictamente sobre la matriz, ¿cuál es la transformación que tendría que realizar? Lo he intentado:
-
Construir la matriz de 360 x 360 (con la "regla" mencionada anteriormente), y luego seleccionar una matriz de 181 x 360, cuyo primer elemento es el elemento delta de la matriz original.
-
Dividir la matriz de 181 x 360 en cuatro matrices de 181 x 90, que se desplazan en diferentes direcciones, y cuyos elementos faltantes (todos los datos que se desplazarían antes del primer índice o después del índice 181) se toman de los elementos "desplazados" de otras matrices (por ejemplo La matriz1 se desplaza 20 posiciones hacia arriba, por lo que las 20 posiciones de los índices finales se convierten en nulos. Matriz2 se desplaza 20 posiciones hacia abajo, por lo que Matriz1 hereda los datos "desplazados hacia abajo" de Matriz2 y Matriz2 los "desplazados hacia arriba" de Matriz1.
¿Cuál es la transformación correcta?
EDIT: Parece que aún no he encontrado el fallo de dividir la matriz en 4 columnas y rotarlas. Sin embargo, incluso si hago eso, la imagen 3D no se ve bien. ¿No estoy considerando algo aquí?
1 votos
¿Qué quiere decir con una "elevación de delta grados"? Si la transformación es una rotación, entonces también necesitas una dirección (phi = $x$ ) donde la elevación es por grados delta. En otras direcciones ( $x+180$ ) la elevación sería menos delta, en la dirección $x \pm 90$ sería cero (todo ello suponiendo que haya entendido correctamente la pregunta)
0 votos
Si quieres realizar la rotación simplemente desplazando los elementos del array, no tienes remedio. Añadiendo un incremento al acimut se realiza una rotación alrededor del eje Z. Pero la misma operación en la elevación no produce una rotación en absoluto (hace un extraño levantamiento de la superficie, dejando un casquete vacío en un polo y uno superpuesto en el otro.
0 votos
@wonko Tienes razón: busco rotar por delta grados con referencia a phi = 0°. Yves Daoust sí, tienes razón, pero después de tantas cosas que probé, valía la pena intentarlo aunque no tuviera ningún sentido.