From c40c3977cc0e6489ab380f2d970f46fabeae39e8 Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Mon, 23 Nov 2015 02:22:39 -0200
Subject: [PATCH] =?UTF-8?q?Pegando=20angulo=20que=20o=20rob=C3=B4=20tem=20?=
 =?UTF-8?q?que=20girar?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 main.c | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/main.c b/main.c
index 22dbe1d..5683dca 100644
--- a/main.c
+++ b/main.c
@@ -20,6 +20,24 @@ double menorDistancia (int xa, int ya, int xb,int yb){
   return (sqrt((xb-xa)*(xb-xa) + (yb-ya)*(yb-ya)));
 }
 
+// Retorna o ângulo em relação a origem (0,0)
+double angleFromOrigin(int x, int y) {
+    /**
+     * Y
+     * ^
+     * |--*
+     * | /|
+     * |/ |
+     * +----------> X
+     * |
+     * 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)
+     */
+    double hip = x*x + y*y;
+    return asin(x/hip);
+}
+
 int main(int argc, char const *argv[]) {
   int t_size;
   Tuple *tuplas;
@@ -41,10 +59,10 @@ int main(int argc, char const *argv[]) {
       scanf("%d %d %d", &tuplas[i].x, &tuplas[i].y, &tuplas[i].t);
   }
 
-  // calcular velocidade das rodas entre cada coordenada
   for(int i=0; i < t_size; ++i) {
-      // pega o ângulo entre a posição do robô e o próximo ponto
-      // gira o robô
+      // Pega o ângulo entre a posição do robô e o próximo ponto
+      double turnAngle = angleFromOrigin(tuplas[i].x, tuplas[i].y) - r.theta;
+      // Gira o robô
       // calcula a velocidade para as rodas
   }
   // gerar tabela e grafico
-- 
GitLab