From b9e06ce4e939d9b85b2cfd07411ff2808296cea3 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Mon, 23 Nov 2015 03:19:01 -0200 Subject: [PATCH] =?UTF-8?q?Arrumado=20angulo=20e=20feita=20sa=C3=ADda=20pr?= =?UTF-8?q?o=20gr=C3=A1fico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ main.c | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ba63925..b51b7a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ robot +graph +table diff --git a/main.c b/main.c index 3811bce..97d1549 100644 --- a/main.c +++ b/main.c @@ -2,6 +2,7 @@ #include <math.h> #include <stdlib.h> +#define PI 3.14159265 #define L 0.15 // L = Distancia centro da roda - eixo em cm @@ -38,10 +39,10 @@ double angleFromOrigin(int x, int y) { * | * 1. Sabendo os valores de x e y, calculamos a hipotenusa * 2. Com o valor de X e da Hip, temos o seno do ângulo formado entre a hipotenusa e o eixo X - * 3. Fazemos a função arco seno para pegar o valor do ângulo (em radianos) + * 3. Fazemos a função arco cosseno para pegar o valor do ângulo (em graus) */ - double hip = x*x + y*y; - return asin(x/hip); + double hip = sqrt(x*x + y*y); + return acos(x/hip) * 180/PI; } int main(int argc, char const *argv[]) { @@ -49,6 +50,12 @@ int main(int argc, char const *argv[]) { double velocidade, distancia; Tuple *tuplas; Robot r = {0, 0, 0}; + FILE *graph = fopen("./graph", "w"); + FILE *out = fopen("./table", "w"); + if(graph == NULL || out == NULL) { + puts("Erro ao criar arquivos de saída."); + exit(1); + } puts("Quantos pontos há na lista? Mínimo de 10 elementos."); scanf("%d", &t_size); if(t_size < 10) { @@ -69,13 +76,17 @@ int main(int argc, char const *argv[]) { for(int i=0; i < t_size; ++i) { // Pega o ângulo entre a posição do robô e o próximo ponto double angle = angleFromOrigin(tuplas[i].x, tuplas[i].y); + fprintf(graph, "r %f\n", angle - r.theta); // Gira o robô r.theta = angle; // calcula a velocidade para as rodas distancia = distance(r.x, r.y, tuplas[i].x, tuplas[i].y); velocidade = velocity(distancia, tuplas[i].t); + fprintf(graph, "w %f\n", velocidade); } - // gerar tabela e grafico + + fclose(graph); + fclose(out); return 0; } -- GitLab