- if(actual_y==ay){//circles
- //intermediate point
- int sense=1;
- if(actual_x>ax) sense =-1;
- float in_x,in_y,in_tgx1,in_tgy1,in_tgx2,in_tgy2;
- in_x = (actual_x+ax)/2;
- in_y = actual_y - sense*radio_y;
- in_tgx1 = in_x - sense*(radio_x*0.5);
- in_tgx2 = in_x + sense*(radio_x*0.5);
- in_tgy1 = in_y;
- in_tgy2 = in_y;
- //start/end points
- tgx2=actual_x;
- tgy2=ay - sense*(radio_y*0.5);
- tgx =ax;
- tgy =ay - sense*(radio_y*0.5);
-
- actual_x=ax;
- actual_y=ay;
- //transformations
- if(mtx){
- transformPoint2D(mtx,&tgx2,&tgy2);
- transformPoint2D(mtx,&tgx ,&tgy );
- transformPoint2D(mtx,&ax,&ay);
-
- transformPoint2D(mtx,&in_tgx2,&in_tgy2);
- transformPoint2D(mtx,&in_tgx1,&in_tgy1);
- transformPoint2D(mtx,&in_x,&in_y);
- }
- //adjust
- coor2vect(&tgx2 , &tgy2);
- coor2vect(&ax , &ay );
- coor2vect(&tgx , &tgy );
-
- coor2vect(&in_tgx2 , &in_tgy2);
- coor2vect(&in_tgx1 , &in_tgy1);
- coor2vect(&in_x , &in_y );
-
- //save the last tg2
- setTg2(k1.back(),k1.back()->x,k1.back()->y,tgx2,tgy2);
- //save the intermediate point
- k1.push_back(newVertice (in_x,in_y));
- setTg1(k1.back(),k1.back()->x,k1.back()->y, in_tgx1 , in_tgy1);
- setTg2(k1.back(),k1.back()->x,k1.back()->y, in_tgx2 , in_tgy2);
- setSplit(k1.back(),TRUE); //this could be changed
- //save the new point
- if(isFirst(k1.front(),ax,ay)){
- setTg1(k1.front(),k1.front()->x,k1.front()->y,tgx,tgy);
- }else{
- k1.push_back(newVertice (ax,ay));
- setTg1(k1.back(),k1.back()->x,k1.back()->y,tgx,tgy);
- setSplit(k1.back(),TRUE);
- }
+ //intermediate point
+ int sense=1;
+ if(old_x>actual_x) sense =-1;
+ float in_x,in_y,in_tgx1,in_tgy1,in_tgx2,in_tgy2;
+ in_x = (old_x+actual_x)/2;
+ in_y = old_y - sense*radio_y;
+ in_tgx1 = in_x - sense*(radio_x*0.5);
+ in_tgx2 = in_x + sense*(radio_x*0.5);
+ in_tgy1 = in_y;
+ in_tgy2 = in_y;
+ //start/end points
+ tgx2=old_x;
+ tgy2=actual_y - sense*(radio_y*0.5);
+ tgx =actual_x;
+ tgy =actual_y - sense*(radio_y*0.5);
+
+ ax=actual_x;
+ ay=actual_y;
+ //transformations
+ if(mtx){
+ transformPoint2D(mtx,&tgx2,&tgy2);
+ transformPoint2D(mtx,&tgx ,&tgy );
+ transformPoint2D(mtx,&ax,&ay);
+
+ transformPoint2D(mtx,&in_tgx2,&in_tgy2);
+ transformPoint2D(mtx,&in_tgx1,&in_tgy1);
+ transformPoint2D(mtx,&in_x,&in_y);
+ }
+ //adjust
+ coor2vect(&tgx2 , &tgy2);
+ coor2vect(&ax , &ay );
+ coor2vect(&tgx , &tgy );
+
+ coor2vect(&in_tgx2 , &in_tgy2);
+ coor2vect(&in_tgx1 , &in_tgy1);
+ coor2vect(&in_x , &in_y );
+
+ //save the last tg2
+ setTg2(k1.back(),k1.back()->x,k1.back()->y,tgx2,tgy2);
+ //save the intermediate point
+ k1.push_back(newVertice (in_x,in_y));
+ setTg1(k1.back(),k1.back()->x,k1.back()->y, in_tgx1 , in_tgy1);
+ setTg2(k1.back(),k1.back()->x,k1.back()->y, in_tgx2 , in_tgy2);
+ setSplit(k1.back(),TRUE); //this could be changed
+ //save the new point
+ if(isFirst(k1.front(),ax,ay)){
+ setTg1(k1.front(),k1.front()->x,k1.front()->y,tgx,tgy);
+ }else{
+ k1.push_back(newVertice (ax,ay));
+ setTg1(k1.back(),k1.back()->x,k1.back()->y,tgx,tgy);
+ setSplit(k1.back(),TRUE);