63 for (
unsigned int i=0;i<
dv.size();++i) {
64 if ((s <=
dv[i])||(i == (
dv.size()-1) )) {
68 return s - previous_s;
85 gv.insert(
gv.end(),std::make_pair(geom,aggregate) );
115 for (
unsigned int i = 0; i <
dv.size(); ++i) {
116 comp->Add(
gv[i].first->Clone(),
gv[i].second);
122 os <<
"COMPOSITE[ " << std::endl;
123 os <<
" " <<
dv.size() << std::endl;
124 for (
unsigned int i=0;i<
dv.size();i++) {
125 gv[i].first->Write(os);
127 os <<
"]" << std::endl;
131 return static_cast<int>(
dv.size());
136 assert(i<static_cast<int>(
dv.size()));
142 assert(i<static_cast<int>(
dv.size()));
154 PathVector::iterator it;
155 for (it=
gv.begin();it!=
gv.end();++it) {
void Add(Path *geom, bool aggregate=true)
virtual double PathLength()
virtual Path * GetSegment(int i)
represents both translational and rotational velocities.
virtual void Write(std::ostream &os)
virtual void GetCurrentSegmentLocation(double s, int &segment_number, double &inner_s)
virtual Frame Pos(double s) const
virtual Twist Vel(double s, double sd) const
virtual int GetNrOfSegments()
represents a frame transformation in 3D space (rotation + translation)
virtual double GetLengthToEndOfSegment(int i)
virtual ~Path_Composite()
virtual double LengthToS(double length)
virtual Twist Acc(double s, double sd, double sdd) const
virtual double PathLength()=0
double Lookup(double s) const