Ahora que las eliminatorias del Code Jam han terminado, publicaré una solución completa.
En primer lugar, sabemos que el área mínima posible es $1$ que es el área de una sola cara. El área máxima es $\sqrt{3}$ que se da en el problema como límite superior para los puntos completos $-$ escrito como la desigualdad $1.000000<A<1.732050$ . También puede ver por qué es el máximo comprobando la respuesta Cabina G proporcionado.
En primer lugar, necesitaremos una forma de calcular el área de un cubo proyectado en función de sus vectores normales. Dejamos que $n_1=(n_{11},n_{12},n_{13}),n_2=(n_{21},n_{22},n_{23}),n_3=(n_{31},n_{32},n_{33})$ son los vectores que apuntan desde el centro del cubo al punto central de 3 caras no paralelas, y $n_p = (0,1,0)$ sea el vector normal del plano. Entonces, si $\phi_i$ es el ángulo entre $n_i$ y $n_p$ el área de la proyección es $A = \sum_{i=1}^3 |\cos\phi_i|$ . Podemos calcular $|\cos\phi_i| =\left|\frac{n_i\cdot n_p}{|n_i||n_p|}\right| = 2|n_{i2}|$ ya que $|n_i|=\frac{1}{2}$ . Esto nos da la fórmula del área $A = 2\sum_{i=1}^3 |n_{i2}| = 2|n_{12}|+2|n_{22}|+2|n_{32}|$ .
A continuación, tenemos que encontrar una configuración que dé la mínima superficie posible y otra que dé la máxima. El área mínima es fácil, ya que es el estado por defecto del cubo. Si escribimos las coordenadas como una matriz $N = (n_{ij})$ podemos ver que una configuración mínima es
$\frac{1}{2}I_3 = \begin{bmatrix}1/2&0&0\\ 0&1/2&0\\ 0&0&1/2\end{bmatrix}$ ,
y el área es el doble de la suma de la segunda fila: $A = 2(0+1/2+0) = 1$ . Se puede encontrar una configuración máxima cuando la diagonal larga del cubo (desde la parte delantera inferior izquierda hasta la parte trasera superior derecha) es paralela a $n_p$ . Para demostrarlo, lo veremos desde un sistema de coordenadas diferente, donde el cubo está alineado con los ejes, con vectores normales $m_i=\frac{1}{2}e_i$ y el vector normal del plano es $m_p = \left(\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}}\right)$ . En esta configuración, el coseno de los ángulos entre las normales del cubo y la normal del plano son $\cos\theta_i = \frac{1}{\sqrt{3}}$ , por lo que el área es $A=\sqrt{3}$ que se sabe que es el máximo.
Entonces, ahora que tenemos una configuración mínima y una configuración máxima, si podemos generar una función continua entre estas dos orientaciones, entonces el Teorema del Valor Intermedio garantizará que hay una solución a la función para cualquier posible $A$ . Para ello, tomamos como eje de rotación la línea $x=z, y=0$ que se escribe como $(\frac{1}{\sqrt{2}},0,\frac{1}{\sqrt{2}})$ en forma vectorial. Sea $\psi$ sea el ángulo en radianes girado sobre este eje desde la configuración mínima inicial. Entonces, $A = f(\psi)$ tiene $f(0) = 1$ . Además, si giramos por alguna cantidad $\psi_m$ alcanzaremos la configuración máxima, por lo que $f(\psi_m) = \sqrt{3}$ .
Para calcular $f(\psi)$ utilizamos la misma fórmula para calcular el área de la proyección, pero multiplicamos cada una de las $n_i$ por la correspondiente matriz de rotación $R = \begin{bmatrix}\frac{1+\cos\psi}{2} & -\frac{\sin\psi}{\sqrt{2}} & \frac{1-\cos\psi}{2}\\ \frac{\sin\psi}{\sqrt{2}} & \cos\psi & -\frac{\sin\psi}{\sqrt{2}} \\ \frac{1-\cos\psi}{2} & -\frac{\sin\psi}{\sqrt{2}} & \frac{1+\cos\psi}{2} \end{bmatrix} $ .
Esto da $N = R(\frac{1}{2}I_3) = \frac{1}{2}R$ y sumando los valores absolutos de la segunda fila se obtiene el área como $A = |\cos\psi|+\sqrt{2}|\sin\psi|$ . Para $0 < \psi < \pi/2$ podemos suprimir los valores absolutos, de modo que $A = f(\psi) = \cos\psi + \sqrt{2}\sin\psi$ . Esta función toma su primer máximo en $\psi_m = 2\tan^{-1}\left(\frac{\sqrt{2}}{1+\sqrt{3}}\right) \approx 0.95532 < \pi/2$ . Así, para un determinado $A$ podemos encontrar $\psi_A = 2\tan^{-1}\left(\frac{\sqrt{2}-\sqrt{3-A^2}}{1+A}\right)$ . Esto nos da (con un poco de trigonometría) $\cos\psi = \frac{1}{3}(A+\sqrt{2}\sqrt{3-A^2})$ y $\sin\psi = \frac{1}{3}(\sqrt{2}A-\sqrt{3-A^2})$ .
Por último, basta con sustituir estos valores en la matriz $N$ para obtener la respuesta final:
$N = \begin{bmatrix}\frac{1}{12}(3+A+\sqrt{6-2A^2}) & \frac{1}{12}(-2A+\sqrt{6-2A^2}) & \frac{1}{12}(3-A-\sqrt{6-2A^2}) \\ \frac{1}{12}(2A-\sqrt{6-2A^2}) & \frac{1}{6}(A+\sqrt{6-2A^2}) & \frac{1}{12}(-2A+\sqrt{6-2A^2}) \\ \frac{1}{12}(3-A-\sqrt{6-2A^2}) & \frac{1}{12}(2A-\sqrt{6-2A^2}) & \frac{1}{12}(3+A+\sqrt{6-2A^2}) \end{bmatrix}$ ,
donde las columnas son las coordenadas de los puntos en el centro de 3 caras no paralelas.
0 votos
Dudo mucho que se pueda resolver el problema inverso, incluso hasta una simetría. La sombra de la proyección ortogonal es un rectángulo o un hexágono, y debería ser posible encontrar pares de estas proyecciones de diferente forma que tengan la misma área.
0 votos
@amd Hmmm. Bien. Qué pasa si te dan una rotación y quieres encontrar el área proyectada. ¿Existe una fórmula general para esto?
12 votos
Parece que esta consulta está relacionada con la pregunta de google code jam codejam.withgoogle.com/2018/challenges/00000000000000cb/… :) ¿No es así?
0 votos
Sólo una sugerencia. Busca un cubo de rubix y gíralo para ver el efecto en la sombra. Para el primer conjunto, es fácil calcular una expresión para A en términos de theta porque la anchura del rectángulo permanece constante. Para el segundo conjunto, tienes que girar el cubo otro ángulo phi en otra dimensión y para calcular el área del hexágono puedes utilizar el hecho de que la anchura sigue siendo la que has calculado en términos de theta para el primer conjunto. Obtendrás una expresión para A en términos de theta y phi con la que puedes experimentar para obtener el valor requerido. Para obtener la salida simplemente ca