#include <winbgim.h>
#include <stdlib.h>
#include<math.h>
#include<iostream.h>
main()
{
int x=0,y=0,z=0,size=150;
for(fi=0;fi<600.28;fi+=.05)
{
cleardevice();
ejes3d(0); // Dibuja los ejes
superficie(-500,y,z,p,size,fi);
box3d(50,y,z,100,fi);
delay(0.1);
};
//};
system("pause");
closegraph(); //close graphics window
return 0;
}
lineto(corx+orgx,cory+orgy);
}
corx=trans2dx(cx,cy,cz,fi);
cory=trans2dy(cx,cy,cz,fi);
putpixel(corx+orgx,cory+orgy,10);
}
corx=trans2dx(cx,cy,cz,fi);
cory=trans2dy(cx,cy,cz,fi);
moveto(corx+orgx,cory+orgy);
}
for (y=0;y<size;y=y+grid)
{
for (x=0;x<size;x=x+grid)
{
z=*(p+x*size+y);
//colorz=((300+(int)z)/800)*255;
//setcolor(COLOR(colorz,colorz,200));
lineto3d((x+offx)*scale,(y+offy)*scale,(int)(z+offz)*scale,fi);
}
z=*(p+y+grid);
moveto3d((offx)*scale,((y+grid+offy)*scale),((int)z+offz)*scale,fi); ///Proximo punto
//moveto3d(0,(y+grid)*size,z*scale,fi); ///Proximo punto
r=0,g=0,b=0,x=0,y=0;
z=*(p+x*size+y);
//moveto3d(offx*scale,offy*scale,(int)(z+offz)*scale,fi); //Punto inicial
moveto3d((x+offx)*scale,(y+offy)*scale,(int)(z+offz)*scale,fi); //Punto inicial
for (x=0;x<size;x=x+grid)
{
for (y=0;y<size;y=y+grid)
{
z=*(p+x*size+y);
//colorz=((300+(int)z)/800)*255;
//setcolor(COLOR(colorz,colorz,200));
lineto3d((x+offx)*scale,(y+offy)*scale,(int)(z+offz)*scale,fi);
z=*(p+(x+grid)*size);
//exit(1);
//punto inicial
}
moveto3d(0,0,0,fi);
lineto3d(0,100,0,fi);
moveto3d(0,0,0,fi);
lineto3d(0,0,100,fi);
};
//Convierte la coordenada 'x' de 3d a 2d
int trans2dx(int x,int y,int z,double fi)
{ int x2d;
// Rotación en (x,y)
int cx,cy;
cx=x;cy=y;
y=cy*cos(fi)-cx*sin(fi);
x=cy*sin(fi)-cx*cos(fi);
double deltaz,deltay,beta,alfa;
beta=atan( (double)(z-zf)/(double)(x-xf));
deltaz=(double)x*sin(beta);
alfa=atan((double)(zf-z)/(double)(yf-y));
deltay=deltaz/tan(alfa);
//x2d=y-x*cos(fi);
x2d=(int)(y-deltay);
return x2d;
};
// Rotación en (x,y)
int cx,cy;
cx=x;cy=y;
y=cy*cos(fi)-cx*sin(fi);
x=cy*sin(fi)-cx*cos(fi);
moveto3d(x,y,z,fi);
lineto3d(x+lado,y,z,fi);
lineto3d(x+lado,y+lado,z,fi);
lineto3d(x,y+lado,z,fi);
lineto3d(x,y,z,fi);
moveto3d(x+lado,y,z+lado,fi);
lineto3d(x+lado,y+lado,z+lado,fi);
lineto3d(x,y+lado,z+lado,fi);
lineto3d(x,y,z+lado,fi);
lineto3d(x+lado,y,z+lado,fi);
moveto3d(x+lado,y,z+lado,fi);
lineto3d(x+lado,y,z,fi);
moveto3d(x+lado,y+lado,z+lado,fi);
lineto3d(x+lado,y+lado,z,fi);
moveto3d(x,y+lado,z+lado,fi);
lineto3d(x,y+lado,z,fi);
moveto3d(x,y,z+lado,fi);
lineto3d(x,y,z,fi);