sábado, 22 de marzo de 2008

Programa de Recorte de Lineas (OTRA FORMA DE HACERLO)

Programa de Recorte de Lineas


#include

#include

#include

int x1=10,y1=10,x2=40,y2=40,a,b,c,d,out1,out2,out3;
double t1,t2,t3,t4,pta,ptb;

void linea_out(int u, int v, int w, int z)
{
if(u
x2vy2) {out1=1;
}

if(w
x2zy2) {out2=1;}

if(out1==1&&out2==1)
{printf("Los ptos. de la linea estan fuera del area de recorte\ncalculamos intersecciones prolongando la linea"); getch(); }

if(out1==1&&out2!=1 out1!=1&&out2==1)
{printf("La linea esta parcialmente dentro de la reion de corte\calculamos intersecciones prolongando la linea");
getch();
}
if(out1!=1&&out2!=1)
{printf("La linea esta completamente dentro del area de recorte");
getch(); 
out3=1;}
}

void ptos_interseccion(float parametro)
{
pta=a+parametro*(c-a);
ptb=b+parametro*(d-b); }

void calcula_t(int a1, int b1, int c1, int d1)
{
t1= (-(a1-x1))/(c1-a1);
t2= (a1-x2)/(-(c1-a1));
t3= (-(b1-y1))/(d1-b1);
t4= (b1-y2)/(-(d1-b1)); }

main(){
clrscr();
window(x1,y1,x2,y2);
textcolor(9);
textbackground(2);
//gotoxy(40,20);
printf("Programa de recorte\nVenta de recorte definida en esquina superior izq(10,10)\n esquina inferior derecha (40,40)");
printf("\nDame las coordenadas de 2 ptos separados por una coma x1,y1,x2,y2\n");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);

linea_out(a,b,c,d);

if(out3!=1)
{
calcula_t(a,b,c,d);
printf("\nParametros\n%f %f %f %f \n",t1,t2,t3,t4);
ptos_interseccion(t1); printf("\nInterseccion para la arista derecha es: %f %f ",pta,ptb);
ptos_interseccion(t2); printf("\nInterseccion para la arista izq es: %f %f ",pta,ptb);
ptos_interseccion(t3); printf("\nInterseccion para la arista de abajo es: %f %f ",pta,ptb);
ptos_interseccion(t4); printf("\nInterseccion para la arista de arriba es: %f %f ",pta,ptb);
}



getch();
return 0;
}

No hay comentarios: