Вы находитесь на странице: 1из 3

CLASE N 2

EDDY MAX PAREDES GOMEZ


void simetrico(float xc,float yc,float
x,float y){
Form1->Label1->Canvas>Pixels[xc+y][yc+x]=clFuchsia;
Form1->Label1->Canvas>Pixels[xc+x][yc+y]=clFuchsia;
Form1->Label1->Canvas>Pixels[xc-x][yc+y]=clFuchsia;
Form1->Label1->Canvas>Pixels[xc-y][yc+x]=clFuchsia;
Form1->Label1->Canvas>Pixels[xc-y][yc-x]=clFuchsia;
Form1->Label1->Canvas>Pixels[xc-x][yc-y]=clFuchsia;
Form1->Label1->Canvas>Pixels[xc+x][yc-y]=clFuchsia;
Form1->Label1->Canvas>Pixels[xc+y][yc-x]=clFuchsia;
}
void circulo(float xc,float yc,float ra){
float x,y,p;
x=0; y=ra;
p=(5/4)-ra; //Si ra es entero es p=1-ra
simetrico(xc,yc,x,y);
while (x<y){
x++;
if (p>=0){
y--;
p=p+2*(x-y)+1;
}
else
p=p+2*x+1;
simetrico(xc,yc,x,y);
}
}
DIBUJAR REJILLA DE CIRCULOS
Repaint();
circulo(100,100,50);
circulo(200,100,50);
circulo(300,100,50);

circulo(400,100,50);
circulo(100,200,50);
circulo(200,200,50);
circulo(300,200,50);
circulo(400,200,50);
circulo(100,300,50);
circulo(200,300,50);
circulo(300,300,50);
circulo(400,300,50);
ANIMACION CON SLEEP
Label1->Repaint();
for (int i=20;i<160;i+=20){
circulo(i+60,i+60,i);
Sleep(200);
}
ANIMACION CON TIMER
Label1->Repaint();
for (int i=20;i<120;i+=20){
circulo(200,200,i);
Sleep(100);
}
//PONER PARA ACTIVAR TIMER=TRUE
//DESACTIVAR TIMER=FALSE
ALGORITMOS MS USADOS:
Coordenadas polares para
transformaciones en 2D y 3D
Punto Medio es mejor para
dibujos sencillos

DIBUJA LINTERNA
void linea(float x1,float y1,float x2,float
y2,int color){
float dx,dy,pasos; float incx,incy,x,y;
enum TColor aux;
switch(color){
case 1:aux=clYellow; break;
case 2:aux=clSilver; break;
default: aux=0x004080FF;
}
dx=x2-x1;
dy=y2-y1;
if (dx>dy)
pasos=abs(dx);
else
pasos=abs(dy);
incx=dx/pasos;
incy=dy/pasos;
x=x1; y=y1;
for (int i=0;i<=pasos;i++){
x=x+incx;
y=y+incy;
// Sleep(1);
Form1->Canvas->Pixels[x][y]=aux;
}
}
void circulo(float xc,float yc,float ra){
float p,x,y;
p=1+ra;
x=0; y=ra;
simetrico(xc,yc,x,y);
while (x<y){
x++;
if (p>=0){
y--;
p=p+2*(x-y)+1;
}
else
p=p+2*x+1;
//
Sleep(20);
simetrico(xc,yc,x,y);
}
}

BOTON DIBUJAR
Button2->Enabled=True;
//FOCOS
for (int k=0;k<40;k+=20){
circulo(390+k,150,10);
}
//BORDE FOCO
circulo(400,150,50);
//LINEAS RECTAS DE LA LINTERNA
linea(400,100,420,100,2);
linea(400,200,420,200,2);
//LINEAS EN DIAGONAL
linea(420,100,490,110,2);
linea(420,200,490,190,2);
//MANGO LINTERNA
for (int k=0;k<90;k+=10){
linea(490,110+k,620,110+k,2);
}
linea(621,110,621,190,2);
linea(490,110,490,190,2);
BOTON PRENDER O ENCENDER
circulo(100,150,100);
//Lineas de reflejo
linea(100,50,400,100,1);
linea(100,250,400,200,1);
linea(200,160,410,160,1);
linea(0,140,390,140,1);
/*//ADORNOS
//Focos Prendidos
for (int k=0;k<100;k+=10){
linea(100,50+k,390,150,1);
linea(100,250-k,410,150,1);
}
*/
BOTON APAGAR
Form1->Refresh();
//FOCOS
for (int k=0;k<40;k+=20){
circulo(390+k,150,10);
}
circulo(400,150,50);
linea(400,100,420,100,2);
linea(400,200,420,200,2);
linea(420,100,490,110,2);
linea(420,200,490,190,2);
for (int k=0;k<90;k+=10){

linea(490,110+k,620,110+k,2);
}

linea(621,110,621,190,2);
linea(490,110,490,190,2);

Вам также может понравиться