diff --git a/cpp_frep/frep.cpp b/cpp_frep/frep.cpp
index 29d80772064247837a39053916faa6a401c70045..1eb182c2aa6baa0d05256b110116567fcf7986fa 100755
--- a/cpp_frep/frep.cpp
+++ b/cpp_frep/frep.cpp
@@ -606,12 +606,10 @@ namespace cpp_frep {
             PolarArray():angle(45.0f),radius(1.0f),ox(0.0f),oy(0.0f){
                 name="PolarArray";
             };
-            PolarArray(Frep* shape_,scalar ox_, scalar oy_, scalar angle_,scalar radius_) {
+            PolarArray(Frep* shape_,scalar angle_,scalar radius_) {
                 shape=shape_;
                 angle=angle_;
                 radius=radius_;
-                ox=ox_;
-                oy=oy_;
                 name="PolarArray";
                 
             };
@@ -630,14 +628,26 @@ namespace cpp_frep {
             float eval(){
                 //change x and y
                 
-                scalar r = PI_F*angle/180.0f;
-                scalar tmin = -atan2f(-1.0f-oy,-1.0f-ox);
-                // std::cout << "tmin:" <<tmin<<'\n';
+                scalar r =angle*PI_F/180.0f;
+                ox=-radius;
+                oy=radius;
+                scalar tmin = atan2f(-oy,-ox);
+
+                scalar newX;
+                scalar newY;
+
+                newX=((0.0f)+(X-(0.0f))*cos(r/2.0f)+(Y-(0.0f))*sin(r/2.0f));
+                newY=((0.0f)-(X-(0.0f))*sin(r/2.0f)+(Y-(0.0f))*cos(r/2.0f));
+                
+                X=newX;
+                Y=newY;
                 
-                // scalar tmax = atan2(radius+oy,radius+ox);
+                X-=radius;
+                Y+=radius;
 
-                scalar newX=(ox)+sqrt((X-(ox))*(X-(ox))+(Y-(oy))*(Y-(oy)))*cos((tmin)+remainderf((2.0f*PI_F+atan2f(Y-(oy),X-(ox))-(tmin)),(r)));
-                scalar newY=(oy)+sqrt((X-(ox))*(X-(ox))+(Y-(oy))*(Y-(oy)))*sin((tmin)+remainderf((2.0f*PI_F+atan2f(Y-(oy),X-(ox))-(tmin)),(r)));
+                newX=(ox)+sqrt((X-(ox))*(X-(ox))+(Y-(oy))*(Y-(oy)))*cos((tmin)+remainderf((2.0f*PI_F+atan2f(Y-(oy),X-(ox))-(tmin)),(r)));
+                newY=(oy)+sqrt((X-(ox))*(X-(ox))+(Y-(oy))*(Y-(oy)))*sin((tmin)+remainderf((2.0f*PI_F+atan2f(Y-(oy),X-(ox))-(tmin)),(r)));
+                
 
                 shape->setXY(newX,newY);
                 return shape->eval();
diff --git a/cpp_frep/main.cpp b/cpp_frep/main.cpp
index a1f055ad4c1c740e510dbf370dd68557e588b4b4..275057ec3d2473af6e5196fb427c06f38aeb2ad6 100755
--- a/cpp_frep/main.cpp
+++ b/cpp_frep/main.cpp
@@ -484,16 +484,19 @@ int main(int const, char const**) {
 
     Frep_tree tree(genome,smooth,parametric,bound); 
     
-    Circle c(1.0f,0.0f,0.0f);
-    Rectangle r(-1.0f,1.0f,-1.0f,1.0f);
+    Circle c(0.5f,0.0f,0.0f);
+    Rectangle r(-0.3f,0.3f,-0.3f,0.3f);
     Subtract s(&r,&c);
-    PolarArray pa(&r,0.0f, 0.0f, 45.0f,-1.0f);
+    PolarArray pa(&r,45.0f,1.0f);
 
     int maxSteps=50;
     precision=0.01;
-    nelderMead(&tree,&pa, precision, maxSteps,  tuneParameters,  bound,  res);
+    // nelderMead(&tree,&pa, precision, maxSteps,  tuneParameters,  bound,  res);
+
+    // drawFrep(tree,minX, maxX, minY, maxY, dx, dy,"final",false);
 
-    drawFrep(tree,minX, maxX, minY, maxY, dx, dy,"final",false);
+    PolarArray pa2(&r,45.0f,0.5f);
+    drawFrep(&pa2,minX, maxX, minY, maxY, dx, dy,"polar",true);
 
     tree.printGenome();