/*fractal de dragon 19/x/96*/
/*Fernando Galindo Soria*/

#include <graphics.h>
#include <math.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <dos.h>

void caracol(int,int,float,int);
void caracol1(int,int,float,int);
int ang1,ang2,car;
void main()
{
  int gd=DETECT,gm;
  initgraph(&gd,&gm,"");

/*  randomize();
  while(car!=27){
    ang1=7+random(360);
    ang2=3+random(360);
    gotoxy(1,1);printf("fractal de dragon ang1=%d ang2=%d",ang1,ang2);  */
    setcolor(1);
    caracol(560,200,50,90);
    setcolor(1);
    caracol1(180,390,50,270);
/*    if (kbhit())car=getch();
    else delay(2000);
    cleardevice();
  }    */getch();

  closegraph();
}

void caracol(int x0,int y0,float l,int an)
{
  int x1,y1;
  if (!kbhit())
  if (l >=1 )               //47, 127, 12
  {
    x1=x0+(l*cos(an/57.29578));
    y1=y0+(l*sin(an/57.29578));
    line(x0,y0,x1,y1);
    setcolor(3);
    caracol(x1,y1,l-12,an+47);
    setcolor(1);
    caracol(x1,y1,l-1,an+12);
  }
}

void caracol1(int x0,int y0,float l,int an)
{
  int x1,y1;
  if (!kbhit())
  if (l >=1 )               //47, 127, 12
  {
    x1=x0+(l*cos(an/57.29578));
    y1=y0+(l*sin(an/57.29578));
    line(x0,y0,x1,y1);
    setcolor(3);
    caracol(x1,y1,l-12,an-47);
    setcolor(1);
    caracol(x1,y1,l-1,an-12);
  }
}
