diff --git a/main.c b/main.c
index b516909d509d1a5d70af6570712d60fc637fe457..3811bce263c632ddbf5cb9332017a366796873ae 100644
--- a/main.c
+++ b/main.c
@@ -26,6 +26,24 @@ double distance(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;
   double velocidade, distancia;
@@ -48,10 +66,11 @@ 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 angle = angleFromOrigin(tuplas[i].x, tuplas[i].y);
+      // 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);