protector de pantalla con primivas1

4
//Protector de pantalla con primivas #include <graphics.h> #include <conio.h> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <dos.h> void linea_bressenham(int x1,int y1,int x2,int y2,int color) { int dy,dx,ix,iy,e,x,y; dy=y2-y1; dx=x2-x1; ix=2*dx; iy=2*dy; y=y1; e=iy-dx; for(x=x1;x<=x2;x++) { putpixel(x,y,color); e+=iy; if(e>0) { y++; e-=ix; } } } void simetrico_circulo(double xc,double yc,double x,double y,int color) { putpixel(xc+x,yc+y,color); putpixel(xc-x,yc+y,color); putpixel(xc+x,yc-y,color); putpixel(xc-x,yc-y,color); putpixel(xc+y,yc+x,color); putpixel(xc-y,yc+x,color); putpixel(xc+y,yc-x,color); putpixel(xc-y,yc-x,color); } void simetrico_elipse(double xc,double yc,double x,double y,int color) { putpixel(xc+x,yc+y,color); putpixel(xc-x,yc+y,color); putpixel(xc+x,yc-y,color); putpixel(xc-x,yc-y,color); }

Upload: angeldiaz

Post on 15-Apr-2016

214 views

Category:

Documents


2 download

DESCRIPTION

AAAA

TRANSCRIPT

Page 1: Protector de Pantalla Con Primivas1

//Protector de pantalla con primivas#include <graphics.h>#include <conio.h>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <dos.h>void linea_bressenham(int x1,int y1,int x2,int y2,int color){int dy,dx,ix,iy,e,x,y;dy=y2-y1;dx=x2-x1;ix=2*dx;iy=2*dy;y=y1;e=iy-dx;for(x=x1;x<=x2;x++)

{putpixel(x,y,color);e+=iy;if(e>0)

{y++;e-=ix;}

}}void simetrico_circulo(double xc,double yc,double x,double y,int color){ putpixel(xc+x,yc+y,color); putpixel(xc-x,yc+y,color); putpixel(xc+x,yc-y,color); putpixel(xc-x,yc-y,color); putpixel(xc+y,yc+x,color); putpixel(xc-y,yc+x,color); putpixel(xc+y,yc-x,color); putpixel(xc-y,yc-x,color);}void simetrico_elipse(double xc,double yc,double x,double y,int color){ putpixel(xc+x,yc+y,color); putpixel(xc-x,yc+y,color); putpixel(xc+x,yc-y,color); putpixel(xc-x,yc-y,color);

}void circulo_BRESENHAM(double xc,double yc,double radio,int color){ double x,y,e; x=radio; y=0; e=0; while(y<x) { simetrico_circulo(xc,yc,x,y,color); e=e+2*y+1;

Page 2: Protector de Pantalla Con Primivas1

y++; if((2*e)>(2*x-1))

{x--;e=e-2*x+1;}

}}

void ELIPSE(double xc,double yc,double radiox,double radioy,int color){ double p,px,py,x,y,ry2,rx2,rx22,ry22; ry2=radioy*radioy; rx2=radiox*radiox; ry22=2*ry2; rx22=2*rx2; x=0; y=radioy; simetrico_elipse(xc,yc,x,y,color); p=ry2-rx2*radioy+0.25*rx2; px=0; py=rx22*y; while(px<py)

{x++;px=px+ry22;if(p<0)

p=p+ry2+px;else

{y--;py=py-rx22;p=p+ry2+px-py;}

simetrico_elipse(xc,yc,x,y,color);}

p=ry2*pow(x+0.5,2)+rx2*pow(y-1,2)-rx2*ry2; while(y>0)

{y--;py=py-rx22;if(p<=0)

{x++;px=px+ry22;p=p+rx2-py+px;}

elsep=p+rx2-py;

simetrico_elipse(xc,yc,x,y,color);}

}void parabola(int xc, int yc, int p, int bound,int color){ int x,y,d; int p2, p4; p2 = 2*p; p4 = 2*p2; x = 0;

Page 3: Protector de Pantalla Con Primivas1

y = 0; d = 1 - p;//region 1 while(y < p && x<=bound){ setcolor(color); line(xc+x,yc+y,xc+x,yc+y); line(xc+x,yc-y,xc+x,yc-y); if(d >= 0){ x++; d = d - p2; } y++; d = d + 2*y +1; } if(d == 1) d = 1 - p4; else d = 1 - p2;//region 2 while(x<=bound){ line(xc+x,yc+y,xc+x,yc+y); line(xc+x,yc-y,xc+x,yc-y); if(d <= 0){ y++; d = d + 4*y; } x++; d = d - p4; }}int main(void){

int gdriver = DETECT, gmode; int x, y,contador; initgraph(&gdriver, &gmode, "d:\\borlandc\\bgi"); do{ linea_bressenham(random(getmaxx()),random(getmaxy()),random(getmaxx()),random(getmaxy()),random(15)); circulo_BRESENHAM(random(getmaxx()),random(getmaxy()),random(100),random(15)); ELIPSE(random(getmaxx()),random(getmaxy()),random(100),random(100),random(15)); parabola(random(getmaxx()),random(getmaxy()),random(100),random(100),random(15)); contador+=1; if(contador%100==0) { cleardevice(); } delay(100); }while(!kbhit()); getch();closegraph();return 0;}