Ejemplo n.º 1
0
void sierpTriangles(int x1,int y1,int x2,int y2,int x3,int y3){
  if(x1+3>=x2) return;                  		//check for base case
  //if the above case is not met, draw another triangle
 
  int xleft=(x1+x3)/2,xright=(x2+x3)/2,xtop=(x1+x2)/2;	//drawing step
  int ymiddle=(y1+y3)/2,ytop=y1;
  gfx_triangle(x1,y1,xtop,ytop,xleft,ymiddle);
  gfx_triangle(xtop,ytop,x2,y2,xright,ymiddle);
  gfx_triangle(xleft,ymiddle,xright,ymiddle,x3,y3);
  						//3 total recursive steps
  sierpTriangles(x1,y1,xtop,ytop,xleft,ymiddle);//top left triangle
  sierpTriangles(xtop,ytop,x2,y2,xright,ymiddle);//top right triangle
  sierpTriangles(xleft,ymiddle,xright,ymiddle,x3,y3);//bottom middle triangle
}
Ejemplo n.º 2
0
int drawturtle(int x, int row, int wseg, int hseg, int boardw, int boardh, int col, int board[][col])
{
    int xb,yc=boardh*row+4*hseg,hr=10,tr=5,i,it; //define parameters

    xb=x/boardw;
    if(xb<col && xb>=0)
        board[row][xb]=1; //update position of turtle on board
    if(xb+1<col && xb+1>=0)
        board[row][xb+1]=0; //reset previous position of turtle on board

    gfx_color(50,25,0); //dark brown color
    for(i=0; i<wseg; i++) //draws shell
        gfx_ellipse(x,yc,i,i);

    gfx_color(20,150,0); //green color
    for(i=0; i<hr; i++) //draws head
        gfx_ellipse(x-wseg,yc,i,i);

    for(i=tr; i>0; i--) //draws tail
        gfx_triangle(x+wseg,yc+i,x+wseg,yc-i,x+wseg+i,yc);

    if(x<0) //if turtle goes off board
        x=width; //reset position of turtle
    else
        x--; //decrement x to move left

    return x; //return new position of turtle

} //end drawturtle