示例#1
0
void peanogosper ( ponto pt1, ponto pt2, double ang, int tipobase, int interacao) 
{
	ponto prox, atual;
	int base, n, p, interac;
	double dist;
	base = tipobase;
	atual = pt1;
	dist = distancia ( pt1 , pt2 )/sqrt(7); 
	
	for ( n = 0; n < 7; n++)
	{
		interac = interacao;		
			switch ( ( n%7 ) ) 
			{
				case 0:
				p = 0;
				break;
				case 1:
				p = 1;
				break;
				case 2:
				p = 3;
				break;
				case 3:
				p = 2;
				break;
				case 4:
				case 5:
				p = 0;
				break;
				case 6:
				p = -1;
				break;
			}
			if ( interac > 0 ) {
				prox.x = atual.x + dist*cos( ang + angbase + (p * (pi)/3) );
				prox.y = atual.y + dist*sin( ang + angbase + (p * (pi)/3) );
				peanogosper( atual , prox, angulo ( atual , prox ), base, --interac );
			}
			else if ( interacao == 0 )
			{
				if ( multicor == 1 ) escolhecor ( fabs( cos( atual.x ) ) , fabs ( cos ( prox.x) ), fabs ( cos ( atual.y ) ) );  
			draw_segmento(atual , prox);
			}
			atual = prox;
   }
}
示例#2
0
void poligono ( ponto pt , double lado, int nlado )
{
	ponto atual, prox;
	int k = 0;
	double angext = (2*pi)/nlado;
	atual = pt;
	pts[0] = pt;
	for ( k = 0; k < nlado ; k ++) 
	{
	prox.x = atual.x + lado*cos( k*angext );
	prox.y = atual.y + lado*sin( k*angext );
	pts[k+1] = prox;
	angpts[k] = angulo ( pts[k] , pts[k+1] );
	/* draw_segmento(atual , prox); */
	atual = prox;
	}
}
示例#3
0
void ilhadekochQI( ponto pt1, ponto pt2, double ang, int tipobase, int interacao)
{
	ponto prox, atual;
	int base, n, p, interac;
	double dist;
	base = tipobase;
	atual = pt1;
	dist = distancia ( pt1 , pt2 )/4; 
	
	for ( n = 0; n < 8; n++)
	{
		interac = interacao;		
			switch ( ( n%8 ) ) 
			{
				case 0:
				case 7:
				case 2:
				case 5:
				p = 0;
				break;
				case 1:
				case 6:
				p = 1;
				break;
				case 3:
				case 4:
				p = -1;
				break;
			}
			prox.x = atual.x + dist*cos( ang + (p * (pi)/2) );
			prox.y = atual.y + dist*sin( ang + (p * (pi)/2) );
			if ( interac > 0 ) {
				ilhadekochQI( atual , prox, angulo ( atual , prox ), base, --interac );
			}
			else if ( interacao == 0 )
			{
				if ( multicor == 1 ) escolhecor ( fabs( cos( atual.x ) ) , fabs ( cos ( prox.x) ), fabs ( cos ( atual.y ) ) );  
			draw_segmento(atual , prox);
			}
			atual = prox;
	}	
}
示例#4
0
int direcao(int x, int y)
{
	/*Baseando-se nas componentes da velocidade, define a direção.*/

	double ang;

	ang = angulo(x, y);

	while(ang > 360.0)
	{
		ang-=360.0;
	}

	if(ang >= 337.5 || ang < 22.5)
		return L;

	else if(ang >= 22.5 && ang < 67.5 )
		return NE;

	else if(ang >= 67.5 && ang < 112.5)
		return N;

	else if(ang >= 112.5 && ang < 157.5)
		return NO;

	else if(ang >= 157.5 && ang < 202.5)
    		return O;

	else if(ang >= 202.5 && ang < 247.5)
		return SO;

	else if(ang >= 247.5 && ang < 292.5)
    		return S;

	else if(ang >= 292.5 && ang < 337.5)
		return SE;
	

  	return -1;
}
示例#5
0
void ilhadekochQII( ponto pt1, ponto pt2, double ang, int tipobase, int interacao)
{
	ponto prox, atual;
	int base, n, p, interac;
	double dist;
	base = tipobase;
	atual = pt1;
	dist = distancia ( pt1 , pt2 )/8; 
	
	for ( n = 0; n < 32; n++)
	{
		interac = interacao;		
			switch ( ( n%32 ) ) 
			{
				case 1:
				case 5:
				case 6:
				case 8:
				case 13:
				case 14:
				case 17:
				case 18:
				case 23:
				case 25:
				case 26:
				case 30:
				p = 0;
				break;
				case 3:
				case 11:
				case 20:
				case 28:
				p = 2;
				break;
				case 0:
				case 2:
				case 4:
				case 7:
				case 24:
				case 27:
				case 29:
				case 31:
				p = 1;
				break;
				case 9:
				case 10:
				case 12:
				case 15:
				case 16:
				case 19:
				case 21:
				case 22:
				p = -1;
				break;
			}
			prox.x = atual.x + dist*cos( ang + (p * (pi)/2) );
			prox.y = atual.y + dist*sin( ang + (p * (pi)/2) );
			if ( interac > 0 ) {
				ilhadekochQII( atual , prox, angulo ( atual , prox ), base, --interac );
			}
			else if ( interacao == 0 )
			{
				if ( multicor == 1 ) escolhecor ( fabs( cos( atual.x ) ) , fabs ( cos ( prox.x) ), fabs ( cos ( atual.y ) ) );  
			draw_segmento(atual , prox);
			}
			atual = prox;
	}	
}