Tema: rotar imagen
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/09/2008, 11:02
Avatar de antoniog
antoniog
 
Fecha de Ingreso: junio-2006
Mensajes: 118
Antigüedad: 17 años, 11 meses
Puntos: 4
Respuesta: rotar imagen

Hola,

La verdad es que ne los dos dias que te la pasaste buscando pudiste haber programado la rotacion.

Primero, recuerda que las coocrdenadas de un punto rotado (x',y') por un angulo t esta relacionado con el punto sin rotar de la siguiente manera:

entonces puedes encontrar algo asi como la formula inversa (relacion de (x,y) con (x',y')) (aqui solo pongo la formula):
x=cos(t)*x'-sin(t)*y'
y=sin(t)*x'+cos(t)*y'
Entonces, para llenar una matriz R con la rotacion de la imagen original I (aqui R e I se consideran float **) usas lo siguiente:
Código:
int x,y,x',y';
int nr,nc;  //numero de renglones, numero de columnas
float t;
for(x'=0;x'<nr;x'++)
for(y'=0;y'<nc;y'++)
   {
   x=cos(t)*x'-sin(t)*y'
   y=sin(t)*x'+cos(t)*y'
   if((x>=0) && (y>=0) &&(x<nr)&&(y<nc))
      R[x'][y']=I[x][y];
   else
      R[x'][y']=0;//aqui le pones un valor que quieras
   }
Calcular la matriz rotada de esta forma evita que tenga "huecos" la imagen R, los cuales paarecen si realizas la trasformacion rotacion de manera directa (rotando un punto (x,y)).

Bueno, lo que te puse arriba te puede ayudar a crear tu funcion rotacion. Si acaso le falta el detalle de que si quieres que rote en cierto punto (por ejemplo el centro de la imagen I), debes calcular una traslacion primero.

Saludos
__________________
Mis pininos en blogs: prog en C, cursos

Última edición por antoniog; 25/10/2009 a las 13:22