/*arbol llamando directamente a la paleta de 16 colores del convertidor analogico digital (dac) de la tarjeta vga 14/iv/96*/ /*Fernando Galindo Soria*/ #include #include void arbol(int,int,int,int,int); void escrcolordac(char,char,char,char); char indcol[]={0,1,2,3,4,5,20,7,56,57,58,59,60,61,62,63}; char paleta[48]={0,0,0, 32,20,0, 22,20,0, 12,20,0, 0,20,0, 0,30,0, 0,30,10, 0,40,0, 0,40,10, 0,40,20, 0,50,0, 0,50,10, 0,50,20, 0,50,30, 0,63,30, 0,63,40}; int ind; void main() { int gd=DETECT,gm,i,indc; initgraph(&gd,&gm,""); ind=16; indc=3; for (i=1;i<16;i++) {escrcolordac(indcol[i],paleta[indc],paleta[indc+1],paleta[indc+2]);indc+=3;} arbol(300,450,120,90,1); getch(); for (i=1;i<16;i++) escrcolordac(indcol[i],63-i*3,0,i*3); getch(); closegraph(); } void arbol(int x0,int y0,int l,int an,int nivel) { int x1,y1; if (nivel < ind ) { setcolor(nivel); x1=x0-(l*cos(an/57.29578)); y1=y0-(l*sin(an/57.29578)); line(x0,y0,x1,y1); arbol(x1,y1,l/1.3,an-25,nivel+1); arbol(x1,y1,l/1.3,an+25,nivel+1); } } void escrcolordac(char color,char r,char g,char b) { outportb(0x3C8,color);/*inicializa el color - (apunta automaticamente al siguiente color cuando termina de cargar los rgb)*/ outportb(0x3C9,r); outportb(0x3C9,g); outportb(0x3C9,b); }