]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/track.cpp
Correctly handle slope when snapping tracks
[r2c2.git] / source / libmarklin / track.cpp
index 01b789373c6fb655b712a6558533ec588adc08f9..617328a64b7d24e474b39a50deae8e2f12dbda1b 100644 (file)
@@ -151,7 +151,12 @@ bool Track::snap_to(Track &other, bool link)
                        if(dx*dx+dy*dy<limit)
                        {
                                set_rotation(other.rot+other_eps[j].dir-eps[i].dir+M_PI);
-                               set_position(Point(epp2.x-(eps[i].pos.x*cos(rot)-eps[i].pos.y*sin(rot)), epp2.y-(eps[i].pos.y*cos(rot)+eps[i].pos.x*sin(rot)), epp2.z));
+                               Point p(epp2.x-(eps[i].pos.x*cos(rot)-eps[i].pos.y*sin(rot)),
+                                       epp2.y-(eps[i].pos.y*cos(rot)+eps[i].pos.x*sin(rot)),
+                                       epp2.z);
+                               if(eps.size()==2 && i==1)
+                                       p.z -= slope;
+                               set_position(p);
 
                                if(link)
                                {