diff --git a/main.c b/main.c
index 682a15d97cef8bdd71199df4276e528cb4776780..dad4f0b1cca1115d4ed61672d7b033ed5a764ad2 100644
--- a/main.c
+++ b/main.c
@@ -30,6 +30,7 @@ int main()
     // matrix_alloc(&mat,p->pixels.lin,p->pixels.col);
     // matrix_init(&mat);
 
+    quadtree_central_symetry(tree);
     quadtree_tree2matrix(tree,&pp->pixels);
     // // matrix_print(mat);
 
@@ -42,7 +43,7 @@ int main()
 
     matrix_destroy(&p->pixels);
     matrix_destroy(&pp->pixels);
-    quadtree_tree_destroy_clean(&tree);
+    quadtree_tree_destroy(&tree);
     free(p);
     free(pp);
     return 0;
diff --git a/quadtree.c b/quadtree.c
index 61bd55ddb269c601a7265161387153f476d39fe9..2246883624df0d8754b294ba509f979fb3af49a7 100644
--- a/quadtree.c
+++ b/quadtree.c
@@ -104,9 +104,9 @@ node *quadtree_position(int32_t li, int32_t col, node *a, int32_t d)
     node *crt = a;
     do
     {
-        int32_t ligne = (li>>d) & 1; // Permet de sélectionne le bit à considérer en fonction de la profondeur; Exemple: 10 >> 1 = 1
-        int32_t colonne = (col>>d) & 1; //Exemple: 10 >> 1 = 1;
-        int32_t index = (ligne<<1) | colonne; // Exemple: 1<<1 = 10 | 1(col) = 11=>3
+        int32_t ligne = (li >> d) & 1;          // Permet de sélectionne le bit à considérer en fonction de la profondeur; Exemple: 10 >> 1 = 1
+        int32_t colonne = (col >> d) & 1;       //Exemple: 10 >> 1 = 1;
+        int32_t index = (ligne << 1) | colonne; // Exemple: 1<<1 = 10 | 1(col) = 11=>3
 
         crt = crt->child[index];
         d--;
@@ -119,9 +119,9 @@ double quadtree_position_value(int32_t li, int32_t col, node *a, int32_t d)
     node *crt = a;
     do
     {
-        int32_t ligne = (li>>d) & 1; // Permet de sélectionne le bit à considérer en fonction de la profondeur; Exemple: 10 >> 1 = 1
-        int32_t colonne = (col>>d) & 1; //Exemple: 10 >> 1 = 1;
-        int32_t index = (ligne<<1) | colonne; // Exemple: 1<<1 = 10 | 1(col) = 11=>3
+        int32_t ligne = (li >> d) & 1;          // Permet de sélectionne le bit à considérer en fonction de la profondeur; Exemple: 10 >> 1 = 1
+        int32_t colonne = (col >> d) & 1;       //Exemple: 10 >> 1 = 1;
+        int32_t index = (ligne << 1) | colonne; // Exemple: 1<<1 = 10 | 1(col) = 11=>3
 
         crt = crt->child[index];
         d--;
@@ -154,45 +154,50 @@ void quadtree_tree2matrix(node *tree, matrix *mat)
     }
 }
 
-void quadtree_vertical_symetry(node *tree)
-{
-    // Inversé les colones
-}
-
+// OK
 void quadtree_horizontal_symetry(node *tree)
 {
+    if (NULL != tree)
+    {
+        for (uint32_t i = 0; i < CHILDREN; i += 1)
+        {
+            quadtree_horizontal_symetry(tree->child[i]);
+        }
+        quadtree_swap((void**)&tree->child[0], (void**)&tree->child[1]);
+        quadtree_swap((void**)&tree->child[2], (void**)&tree->child[3]);
+    }
 }
 
-void quadtree_central_symetry(node *tree)
-{
-}
-
-void quadtree_tree_destroy(node **tree)
+// OK
+void quadtree_vertical_symetry(node *tree)
 {
-    node *a = *tree;
-    if (a->child[0] == NULL)
-    {
-        free(a);
-    }
-    else
+    if (NULL != tree)
     {
         for (uint32_t i = 0; i < CHILDREN; i += 1)
         {
-            quadtree_tree_destroy(&a->child[i]);
+            quadtree_vertical_symetry(tree->child[i]);
         }
+        quadtree_swap((void**)&tree->child[0], (void**)&tree->child[2]);
+        quadtree_swap((void**)&tree->child[1], (void**)&tree->child[3]);
     }
 }
 
-void quadtree_tree_destroy_clean(node **tree)
+void quadtree_central_symetry(node *tree)
+{
+    quadtree_vertical_symetry(tree);
+    quadtree_horizontal_symetry(tree);
+}
+
+void quadtree_tree_destroy(node **tree)
 {
-    if(NULL != *tree)
+    if (NULL != *tree)
     {
-        if(!quadtree_is_leaf(*tree))
+        if (!quadtree_is_leaf(*tree))
         {
-            for (uint32_t i = 0; i < CHILDREN; i+=1)
+            for (uint32_t i = 0; i < CHILDREN; i += 1)
             {
-                quadtree_tree_destroy_clean(&(*tree)->child[i]);
-            }            
+                quadtree_tree_destroy(&(*tree)->child[i]);
+            }
         }
         else
         {
diff --git a/quadtree.h b/quadtree.h
index 96910805d9458262adf20665df23b60c7e7de1b5..22d3fa953c1049e1844da564d5797fbd88ca7bc5 100644
--- a/quadtree.h
+++ b/quadtree.h
@@ -41,4 +41,12 @@ void quadtree_tree_destroy(node **tree);
 
 void quadtree_tree2matrix(node *tree,matrix* mat);
 
-void quadtree_tree_destroy_clean(node **tree);
\ No newline at end of file
+void quadtree_tree_destroy_clean(node **tree);
+
+double quadtree_position_value(int32_t li, int32_t col, node *a, int32_t d);
+
+void quadtree_horizontal_symetry(node *tree);
+
+void quadtree_vertical_symetry(node *tree);
+
+void quadtree_central_symetry(node *tree);
\ No newline at end of file