Utilice el lenguaje C para realizar la transformación de gráficos bidimensionales.
Deberías echar un vistazo primero. Probablemente esta sea la idea. Si no entiendes, pregúntame.
#includelt;stdio.hgt;
#includelt;math.hgt;
#includelt;iostreamgt;
usando el espacio de nombres std ;
punto de estructura
{
flotante x;
flotante y;
};
void Translation(point*pt, float xp, float yp, int num)//num representa el número de puntos
{
for(int i=0; ilt; num; i )
{
(pt i)-gt;
(pt i)-gt;
}
}
escala vacía(punto *pt, float xs, float ys, int num)
{
for(int i=0;ilt;num;i)
{
(pt i)-gt;x*=xs;
(pt i)-gt;y*=ys;
}
}
rotación vacía(punto *pt, ángulo flotante, int num)
{
int a[2][2];
angle=angle/180*3.141592657;
a[0][ 0]=cos(ángulo);
a[0][1]=-sin(ángulo);
a[1][0]=sin(ángulo);
a[1][1]=cos(ángulo);
punto* temp;
for(int i=0; ilt; num; i)
{
temp-gt; x=(pt i)-gt;
temp-gt; y=(pt i)-gt; y;
(pt i)-gt;x=temp-gt;x*a[0][0] a[0][1]*temp-gt;y;
(pt i)-gt;y*=temp-gt;x*a[1][0] a[1][1]*temp-gt;y;
}
}
int main()
{
int i=0, N, modo, ángulo, xp, yp, xk, yk, num;
coutlt;lt;"ingrese el número de punto "lt;lt;endl;
scanf("d",amp;N);
num=N;
punto pt[10];
mientras(N--)
{
printf(" por favor ingrese puntos(x,y):\n");
scanf("ff",amp;pt[i].x,amp;pt[i].y);
i;
}
printf("por favor, introduzca movimientos\n");
printf("0 significa traducción:\n") ;
imprimirf(
"1 representa escala:\n");
printf("2 representa rotación:\n");
scanf("d", amp; mode);
cambiar(modo)
{
caso 0:
printf("ingrese la traducción en las direcciones x e y respectivamente:\ n");
cingt;gt;xpgt;gt;yp;
traducción(pt, xp,yp,num);
romper; p>
p>
caso 1:
printf("ingrese la escala en las direcciones x e y respectivamente:\n");
scanf("ff ",amp;xk , amp; yk);
escala(pt, xk, yk, num);
descanso;
caso 2: p>
printf("ingrese el ángulo:\n");
scanf("f", amp; ángulo);
rotación(pt, ángulo, num );
break;
}
printf("después de la traducción o escala o rotación:\n");
for( int i=0; ilt; num; i )
printf("f f\n", pt[i].x, pt[i].y);
}