3 This file is part of the MSP Märklin suite
4 Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
15 TrackPart::TrackPart():
23 void TrackPart::collect_endpoints(vector<Endpoint> &eps) const
25 eps.push_back(Endpoint(pos.x, pos.y, dir+M_PI, 1<<route));
31 float a=((radius<0) ? -length : length);
32 Point p=get_point(length*abs(radius));
33 eps.push_back(Endpoint(p.x, p.y, dir+a, 1<<route));
36 eps.push_back(Endpoint(pos.x+cos(dir)*length, pos.y+sin(dir)*length, dir, 1<<route));
39 Point TrackPart::get_point(float d) const
46 float rx=radius*sin(dir);
47 float ry=-radius*cos(dir);
48 return Point(pos.x+c*rx-s*ry-rx, pos.y+c*ry+s*rx-ry);
51 return Point(pos.x+cos(dir)*d, pos.y+sin(dir)*d);
55 TrackPart::Loader::Loader(TrackPart &p):
56 Msp::DataFile::BasicLoader<TrackPart>(p)
58 add("start", &Loader::start);
59 add("length", &TrackPart::length);
60 add("radius", &TrackPart::radius);
61 add("route", &TrackPart::route);
62 add("dead_end", &TrackPart::dead_end);
65 void TrackPart::Loader::finish()
80 void TrackPart::Loader::start(float x, float y, float d)
86 } // namespace Marklin