sábado, 22 de marzo de 2008

Programa de Recorte de Lineas

//Este programa esta basado en el algoritmo Cyrus Beck que busca los parametros para la ecuacion de la linea en forma parametrica sacando dichos parametro en cada arista del area de corte podremos obtener el punto de interseccion con cada arsita de dicha area*/


#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(ux2vy2) {out1=1;
}

if(wx2zy2) {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;
}

martes, 11 de marzo de 2008

Proyecciones en paralelo y en perspectiva. Puntos de fuga.

Proyecciones.

Son la replica de una imagen sobre un cierto palno que puede tener diferentes puntos de vista o perpectivas.

Proyecciones en paralelo.

Lo que yo entendi es que son cuando se proyecta la imagen al mismo tiempo que la otra imagen osea la original asi las dos imagenes se proyectan al mismo tiempo.

Proyecciones en perpectiva.

Son cuando se proyecta sobre cierto palto al que se le esta dando un punto vista distinto al clasico 2d osea se le da cierta perpectiva al plano para emular obtetos en 3d, asi la proyeccion dada en este tipo de imagen debe ser congruente con la pérpectiva sobre la que se proyecta.


PUNTOS DE FUGA.

Estos púntos de fuga sirven para darle mas realismo a una imagen creano una perpectiva que podriamos temner en cierto momento al observar algo.

Perspectiva de un punto de fuga. Se obtiene cuando el plano de proyección es paralelo a una de las caras principales del objeto (el plano de proyección es paralelo a dos de los tres ejes principales del objeto)


Perspectiva de dos puntos de fuga. Se obtiene cuando el plano de proyección es paralelo a solamente uno de los tres ejes principales del objeto


Perspectiva de tres puntos de fuga. Se obtiene cuando ninguno de los tres ejes principales del objeto es paralelo al plano de proyección