Buena pregunta! Hay una respuesta no demasiado obvia pero es fácil de calcular:
Llamemos al eje de fila "r" y el eje de columna "c", y consideremos la primera imagen, donde la extensión a lo largo del eje r es 5 y la extensión a lo largo del eje c es 3.
El incremento de la unidad a lo largo del eje r, relativo al plano de dibujo, está en el ángulo +30 = (cos 30 °, sen 30 °) = (sqrt (3)/2 , 0.5), y el incremento de la unidad a lo largo del eje c está en -30 = (cos 30 °, -sin 30 °) = (sqrt (3)/2, -0.5).
Debe tener en cuenta las dos diagonales de su rectángulo isométrico. En la primera imagen, esas diagonales son D1 = [+ 5 * U a lo largo del eje ry + 3 * U a lo largo del eje c] y D2 = [+ 5 * U a lo largo del eje ry -3 * U a lo largo del eje c ], donde U es la longitud de la losa en el plano isométrico. Cuando se transforma en el plano de dibujo, esto se convierte en D1 = ((5 + 3) * sqrt (3)/2 * U, (5-3)/2 * U) = (4 * sqrt (3) * U, 1 * U) y D2 = ((5-3) * sqrt (3)/2 * U, (5 + 3)/2 * U) = (sqrt (3) * U, 4 * U). El ancho y el alto de la pantalla, por lo tanto, son el máximo de las dos extensiones = 4 * sqrt (3) * U, 4 * U.
Esto se puede generalizar: si hay Nr filas y Nc columnas, y la longitud de la losa es U, la extensión de las diagonales del rectángulo en el plano de dibujo es D1 = ((Nr + Nc) * sqrt (3)/2 * U, (Nr-Nc)/2 * U) y D2 = ((Nr-Nc) * sqrt (3)/2 * U, (Nr + Nc)/2 * U), y el ancho de la pantalla y la altura, por lo tanto, son:
W = U*(Nr+Nc)*sqrt(3)/2
H = U*(Nr+Nc)/2
proyección isométrica no es una rotación. –
Ops, lo siento, pero eso no cambia la solución realmente. En lugar de usar la matriz de rotación, puede usar la matriz de proyección, luego hacer el mismo cálculo. – Rafid
Blimey. Esto es complicado. Creo que mi ángulo theta es de 45 grados, pero realmente no entiendo las fórmulas de matriz escritas en el artículo de Wikipedia. Me siento bastante tonto (¡mi experiencia no es matemática o informática!). – Garry