Buenos días
Por apartados
a) Lo veo correcto
b) Lo veo correcto. Hay que tener en cuenta que ocurren dos cosas, supongamos la pantalla de 768px de alto.
En el momento de creación de la ventana con nuevaVentana = window.open ('', 'miNombre', 'width=250, height=250, resizable=true, menubar=yes'); tendrá una posición "por defecto".
Cuando se establece posición con nuevaVentana.moveTo(0,positionY); tendríamos que el valor de innerHeight es el alto del área de contenidos que puede ser por ejemplo 611px. En este caso el valor de positionY inicial sería 611/2 - 125 = 180.5 px, es decir, la esquina superior izquierda de la ventana estará a una distancia de 180.5 px en vertical desde el límite superior, y horizontalmente estará pegada a la izquierda.
Con nuevaVentana.moveTo(0,positionY); la ventana se situaría en la parte izquierda de la pantalla.
c) Lo veo correcto, 33.33 milisegundos ó 0.03333 segundos
d) Lo veo correcto
e) Esto tiene una base matemática. No es necesario comprenderlo para el seguimiento del curso. La base matemática es que la función seno toma valores entre 0, 1, -1 describiendo una forma de onda, conforme se incrementan sus valores.
En cada redibujado de la ventana su posición Y varía de acuerdo con esto:
controlSinusoidal = controlSinusoidal + Math.PI/256;
positionY = 100*Math.sin(controlSinusoidal);
Las operaciones se hacen en radianes. controlSinusoidal se ha establecido en 0 al inicializarlo y cada vez que se redibuja la ventana se incrementa un poco. La posición Y se actualiza en base al seno de ese valor que se va incrementando, y de esa manera se describe una curva sinusoidal.
f) A mí no me ha funcionado correctamente, me ha aparecido !Se terminó! antes de que la ventana llegara al límite derecho de la pantalla. Es posible que tú lo hayas probado en otro navegador
g) Hace bien el efecto rebote, pero me ocurre lo mismo que antes. En el lado izquierdo sí rebota bien cuando llega al límite izquierdo, pero en el lado derecho rebota antes de llegar al límite derecho de la pantalla.
Saludos