Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

saibot4fun

Função em C para javascript

Recommended Posts

Olá galera eu não manjo nada x nada de C

sei programar em php e o basicao de javascript....

queria uma mao, tenho que converter uma funcao passada para min em C para javascript...

tentei inumeras vezes já mas nunca funciona, cansei de perder o sono e vim pedir arrego ao forum....

 

segue ela abaixo:

 

void paralela(int lado,double largura,int n,px,py)
 {
	static double deltax,deltay,tana1,tana2,angle1,angle2,dx,dy,VARB,BL1,BR1,BL2,BR2;
	static double xpri,ypri;
	static int i,counter,iclose;
	static double LGR;
	double AngAnterior;
 
	counter = n;
	iclose = 0;
	LGR = sqrt(largura);

	for(i = 0; i < n-1; i++)
		{
		if((px[i] - px[i+1]) == 0) px[i+1] += 1e-5;
		if((py[i] - py[i+1]) == 0) py[i+1] += 1e-5;
		}
	
	for(i=0; i < n-1; i++)
		{
		if((px[i] - px[i+1]) == 0) px[i+1] += 1e-5;
		if((py[i] - py[i+1]) == 0) py[i+1] += 1e-5;
		}
	AchaAng(px[0],py[0],px[1],py[1],&AngAnterior);
	AngAnterior = (int)(AngAnterior*180./PI);
	for(i = 1; i < n-1; i++)
		{
		AchaAng(px[i],py,px[i+],py[i+1],&a14);
		a14 = (int)(a14*180./PI);
		if(a14 == AngAnterior)
			{
			px[i] -= 1e-3;
			py[i] -= 1e-3;
			}
		AngAnterior = a14;
		}

	xpri = px[0];
	ypri = py[0];		// Primeiro ponto
	px[n] = px[1];
	py[n] = py[1]; // Salva ultimo ponto

	deltax = px[1]-px[0];
	if(deltax == 0.) deltax = 1e-4;
	deltay=py[1]-py[0];
	if(deltay == 0.) deltay = 1e-4;
	tana1=deltay/deltax;
	angle1=atan2(deltay,deltax);
	if(fabs(px[0]-px[n-1]) < 1e-4 && fabs(py[0]-py[n-1]) < 1e-4 ) iclose = 1;
	if( !iclose )
		{
		dx=LGR*sin(angle1);
		dy=LGR*cos(angle1);
		if(lado==0)
			{		// Lado esquerdo
			px[0] = px[0] - dx;
			py[0] = py[0] + dy;
			}
		else
			{		// Lado direito
			px[0] = px[0] + dx;
			py[0] = py[0] - dy;
			}
		}

	if(!iclose) --counter;

	VARB=ypri-tana1*xpri;
	dy=LGR/cos(angle1);
	BL1=VARB+dy;
	BR1=VARB-dy;
	for(i = 1 ; i < counter; i++)
		{
		deltax = px[i+1]-px[i];
		if(deltax == 0.) deltax = 1e-4;
		deltay=py[i+1]-py[i];
		if(deltay == 0.) deltay += 1e-4;
		tana2=deltay/deltax;
		angle2=atan2(deltay,deltax);
		dy=LGR/cos(angle2);
		VARB = py[i]-tana2*px[i].Pacox;
		BL2=VARB+dy;
		BR2=VARB-dy;
		if(tana1 == tana2) tana1 += 1e-4;

		if(lado==0)
			{
			if((BL2-BL1) == 0)
				{
				dx=LGR*sin(angle2);
				dy=LGR*cos(angle2);
				px[i] = px[i] - dx;
				py[i] = py[i] + dy;
				}
			else
				{
				px[i] = (BL2-BL1)/(tana1-tana2);
				py[i] = tana1 * px[i] + BL1;
				}
			}
		else
			{
			if((BR2-BR1) == 0)
				{
				dx=LGR*sin(angle2);
				dy=LGR*cos(angle2);
				px[i] = px[i] + dx;
				py[i] = py[i] - dy;
				}
			else
				{
				px[i]=(BR2-BR1)/(tana1-tana2);
				py[i]=tana1*px[i]+BR1;
				}
			}

		angle1=angle2;
		tana1=tana2;
		BL1=BL2;
		BR1=BR2;

		if( (iclose==0) ) continue;
		px[i-1] = px[i];
		py[i-1] = py[i];
		}

	if( (iclose==1) )
		{
		px[n-1] = px[0];
		py[n-1] = py[0];
		}
	else
		{
		dx=LGR*sin(angle1);
		dy=LGR*cos(angle1);
		if(lado==0)
			{
			px[n-1]=px[n-1]-dx;
			py[n-1]=py[n-1]+dy;
			}
		else
			{
			px[n-1]=px[n-1]+dx;
			py[n-1]=py[n-1]-dy;
			}
		}

	// Reordena Paralela
	// Primeiro ponto deve ser penultimo
	for(i = n-2; i> -1; i--)
		{
		px[i+1] = px[i];
		py[i+1] = py[i];
		}

	px[0] = px[n-1];
	py[0] = py[n-1];

	if(px[0] != px[n-1]) px[n-1] = px[0];
	if(py[0] != py[n-1]) py[0] = py[n-1];
}

 

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, é mais fácil você interpretar o que a função faz e passar para o portugol e depois para o javascript.

Esse tópico precisa ser movido, para onde prefere:

*) Lógica de Programação e Algoritmos

*) Javascript / DHTML

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.