X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrack.cpp;h=c940e1cd93d15e517f1501506e228172362aba6c;hb=25c26706d400228110e14a4a9a9765cb1298372d;hp=74e51acab73fddb2246b750d23a3339b9e2dab24;hpb=f409cd39a687900724d987c9db629cbff0dd49be;p=r2c2.git diff --git a/source/libmarklin/track.cpp b/source/libmarklin/track.cpp index 74e51ac..c940e1c 100644 --- a/source/libmarklin/track.cpp +++ b/source/libmarklin/track.cpp @@ -22,7 +22,7 @@ Track::Track(Layout &l, const TrackType &t): rot(0), slope(0), flex(false), - turnout_id(type.is_turnout() ? layout.allocate_turnout_id() : 0), + turnout_id(type.is_turnout() ? layout.allocate_turnout_id(type.is_double_address()) : 0), sensor_id(0), links(type.get_endpoints().size()), active_path(0) @@ -310,7 +310,7 @@ TrackPoint Track::get_point(unsigned epi, unsigned path, float d) const float c = cos(rot); float s = sin(rot); - p.pos = Point(pos.x+c*p.pos.x-s*p.pos.y, pos.y+s*p.pos.x+c*p.pos.y, 0); + p.pos = Point(pos.x+c*p.pos.x-s*p.pos.y, pos.y+s*p.pos.x+c*p.pos.y, pos.z); p.dir += rot; if(type.get_endpoints().size()==2) { @@ -318,12 +318,12 @@ TrackPoint Track::get_point(unsigned epi, unsigned path, float d) const float grade = slope/len; if(epi==0) { - p.pos.z = pos.z+grade*d; + p.pos.z += grade*d; p.grade = grade; } else { - p.pos.z = pos.z+slope-grade*d; + p.pos.z += slope-grade*d; p.grade = -grade; } }