Пример #1
0
int main(void) {
        double angulo;
        int precisao;
      freopen("e26.txt", "r", stdin);
      freopen("s26.txt", "w", stdout);

        scanf("%lf %d", &angulo, &precisao);

        while (angulo >= 0.0) {
                printf("sen(%.2lf): %.4lf, ", angulo, seno(angulo, precisao));

                if (angulo != 90.0 && angulo != 270.0) {
                        printf("cos(%.2lf): %.4lf, ", angulo, cosseno(angulo, precisao));
                        printf("tan(%.2lf): %.4lf", angulo, tangente(angulo, precisao));
                }
               else {
                        printf("cos(%.2lf): %.4lf ", angulo, cosseno(angulo, precisao));
                }


                printf("\n");
                scanf("%lf %d", &angulo, &precisao);
        }

       fclose(stdin);
        fclose(stdout);
        return 0;
}
Пример #2
0
void Leg::draw() {
	glPushMatrix();
		glTranslatef(posX, posY, posZ);

		//coxa
		glPushMatrix();
		glRotatef(thighAng,1,0,0);
		glRotatef(90,1,0,0);
			glPushMatrix();
				colors[2]->paint();
				drawSolidCylinder(0.6,0.7, 5.9);
			glPopMatrix();
			glPushMatrix();
				colors[1]->paint();
				if(side == RIGHT) {
					glTranslatef(0.3,0,0);
					glRotatef(-5,0,1,0.2);
				} else { //LEFT
					glTranslatef(-0.3,0,0);
					glRotatef(5,0,1,0.2);

				}
				glRotatef(3, 1, 0, 0);
				drawSolidCylinder(1.0,1.6, 5.5);
			glPopMatrix();
		glPopMatrix();

		//joelho
		glPushMatrix();
		colors[1]->paint();
		glTranslatef(0, -6.5*cosseno(thighAng),-6.5*seno(thighAng));
		glutSolidSphere(0.99, 10,10);
		glPopMatrix();

		//canela
		glPushMatrix();
			glTranslatef(0, -6.5*cosseno(thighAng),-6.5*seno(thighAng));
			glRotatef(shuttleAng, 1,0,0);
			//canela
			glPushMatrix();
				colors[1]->paint();
				glRotatef(90,1,0,0);
				drawSolidCylinder(0.95, 1.6, 5);
			glPopMatrix();
			//pe�
			glPushMatrix();
				colors[2]->paint();
				glTranslatef(0, -5, 1);
				glScalef(2,1,3);
				glutSolidCube(1);
			glPopMatrix();
		glPopMatrix();

	glPopMatrix();

}
Пример #3
0
double tangente(double x, int precisao) {
        return seno(x, precisao) / cosseno(x, precisao);
}
Пример #4
0
void main () {
	
	int n;										// ler quantidade n de elementos
	printf ("Entre com o valor de pontos a ser digitado em seguida, os pontos do seu vetor.\n\n");
	scanf ("%d",&n);
	
	if(n<2){									//teste para valor abaixo de 2
		printf("\nErro! Reinicie o programa e insira um valor maior que 1.\n");
	}
	
	if (n>1){									//condicao para necessitar do algoritmo
	
		int *x,*y,*ch;							// alocando memória para as 3 variaveis de um elemento
		x = (int*)malloc(n*sizeof(int));		// x é a coordenada horizontal		
		y = (int*)malloc(n*sizeof(int));		// y é a coordenada vertical
		ch = (int*)calloc(n,sizeof(int));		//ch é o vetor que armazena se o ponto pertence ou não ao fecho convexo, valor inicial para todos=0
		
		int i;									//lendo os n elementos
		for(i=0;i<n;i++){
			scanf("%d",&x[i]);
			scanf("%d",&y[i]);
		}
			
		quicksort2(x,y,0,n-1);					//ordenando o vetor em x com quick sort
		
		int j=0;								//ordenar y quando x for igual
		for(i=0;i<n-1;i++){
			if(x[i]==x[i+1]){ 					//localiza blocos onde varios elemntos possuem o mesmo valor de x
				j++;
				if(i+1==n-1){
					quicksort(y,i-j+1,i+1);		
					j=0;
				}
			}
			if(x[i]!=x[i+1]){
				quicksort(y,i-j,i);				//ordena os valores de y dentro do bloco de valores iguais para x
				j=0;
			}
		}
				
		int poscos;						//pegando o ponto inicial, usaremos o maior angulo para localizar o proximo ponto
		float cosm;						//quando um angulo está no intervalo [0,180], quanto maior ele for, menor sera seu cosseno
										//poscos = posicão do cosseno buscado, cosm=valor do cosseno buscado
		i=0;
		while(i<n-1){
			cosm=1.0;
			poscos=i;
			for(j=i+1;j<n;j++){
				if(cosseno(x,y,i,j)<=cosm){		//nesse caso buscamos o menor cosseno
					cosm=cosseno(x,y,i,j);
					poscos=j;
				}				
			}
			ch[poscos]=1;				//quando um ponto pertence ao fecho, seu ch é mudado de zero para um
			i=poscos;
			
		}								//a primeira parte gera a parte inferior do fecho entre o primeiro e o ultimo ponto
		
		i=n-1;
		while(i>0){
			cosm=-1.0;					//partindo agora do ultimo, buscamos fechar a parte superior
			poscos=i;
			for(j=i-1;j>=0;j--){
				if(cosseno(x,y,i,j)>=cosm){		//como mantemos o vetor comparacao para cima, mas estamos voltando, buscamos o menor angulo, ou seja, o maior cosseno
					cosm=cosseno(x,y,i,j);
					poscos=j;
				}				
			}
			ch[poscos]=1;				//pontos do fecho recebem ch=1
			i=poscos;
			
		}
		
		int k;							//essa parte remove alguns pontos colineares que não foram removidos na parte superior
		for(i=0;i<n;i++){
			if(ch[i]==1){				//pega apenas pontos do fecho
				for(j=0;j<n;j++){
					if(j!=i && ch[j]==1){
						for(k=0;k<n;k++){
							if(ch[k]==1 && k!=i && k!=j && cosseno(x,y,i,j)==-cosseno(x,y,i,k)){ 		//analisa se existem dois cossenos opostos,o que pode significar colinearidade
								if(y[j]>=y[i] && y[k]<=y[i] && x[j]>=x[i] && x[k]<=x[i]){				//analisando por quadrantes, podemos definir se esses angulos são ou não de colineares
									ch[i]=0;
								}
								if(y[j]>=y[i] && y[k]<=y[i] && x[j]<=x[i] && x[k]>=x[i]){
									ch[i]=0;
								}
								if(y[j]<=y[i] && y[k]>=y[i] && x[j]>=x[i] && x[k]<=x[i]){
									ch[i]=0;
								}
								if(y[j]<=y[i] && y[k]>=y[i] && x[j]<=x[i] && x[k]>=x[i]){
									ch[i]=0;
								}
							}
						}
					}
				}
			}
		}
		
		
		printf("\nVertices do fecho convexo:\n\n");
		for(i=0;i<n;i++){						//imprime os pontos do fecho convexo, ou seja, pontos com ch=1
			if(ch[i]==1){
				printf("%d %d\n",x[i],y[i]);
			}
		}
		
		
		free(x);
		free(y);	
		free(ch);							//liberando a memória utilizada
	}
	getch();
}