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