en un principio, cometi el error de crear un panel principal, y un panel de botones, con
los ActionListener y MouseListener. Logre dibujar, y refrescar mientras dibujaba, y luego,
cuando empezaba a mover las figuras, me di cuenta que se movian los botones en vez de las
figuras!
solucion: descubri que los metodos MouseListener y paintComponent deben estar en el
mismo panel de dibujo, ya que escuchan y pintan el objeto al que pertenecen. fue una buena
leccion sobre clases y objetos, que me ayudo a comprender mejor el concepto de clase,
constructor y objeto.
El programa no hace muy bien la rotacion, esto debe se debe a que la funcion arccos()
no tiene recorrido unico, y se confunde cuando se encuentra con angulos negativos, es decir,
para ciertos valores del argumento de la funcion arccos, tiene dos angulos asociados, sin
embargo solo puede entregar uno.
posible solucion: una posible solucion, podria ser ver en que lado del plano estamos,
y considerar si tomamos el theta, o - theta, pero en ese caso, el problema
se complica demasiado.
El problema mas grave al que me enfrente, es el no p̣der guadar los cambios de una accion,
es decir, luego de rotar, mover o escalar, si uno dibuja, o intenta hacer una accion
distinta, la figura total vuelve a la normalidad. Esto se debe a que estoy aplicando
las acciones sobre el objeto grafico, y no sobre las figuras.
posible solucion: se me ocurrio una forma de solucionar tal problema, y es
crear objetos que sean capaces de almacenar los cambios sobre las figuras, y a la hora
de re-pintarlas traer la informacion de dicho objeto.
Vale decir, crear una clase que guarde, el tipo de figura y sus medidas, el angulo de desface
el corrimineto y el factor de escalamiento, y al momento de pintarlos, recuperar dicha
informacion. Por razones de tiempo, no pude llevar a cabo dicha teoria, pero es una opcion
que vale la pena considerar.