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();