Vec2d MyTrack::CalcNormal( double trackPos ) const { int idx = IndexFromPos(trackPos); const tTrackSeg* pSeg = m_pSegs[idx].pSeg; double t; Vec3d pt; Vec3d norm; CalcPtAndNormal( pSeg, trackPos - pSeg->lgfromstart, t, pt, norm ); return norm.GetXY(); }
double MyTrack::CalcForwardAngle( double trackPos ) const { int idx = IndexFromPos(trackPos); const tTrackSeg* pSeg = m_pSegs[idx].pSeg; double t; Vec3d pt; Vec3d norm; CalcPtAndNormal( pSeg, trackPos - pSeg->lgfromstart, t, pt, norm ); return Utils::VecAngXY(norm) + PI / 2; }
//==========================================================================* // Angle //--------------------------------------------------------------------------* double TTrackDescription::ForwardAngle(double TrackPos) const { int Index = IndexFromPos(TrackPos); const tTrackSeg* Seg = oSections[Index].Seg; double X; TVec3d CenterPoint; TVec3d Normale; NormalizeDir(Seg, TrackPos - Seg->lgfromstart, X, CenterPoint, Normale); return TUtils::VecAngXY(Normale) + PI / 2; }
//==========================================================================* // To right //--------------------------------------------------------------------------* TVec2d TTrackDescription::Normale(double TrackPos) const { //int LastPos = 0; int Index = IndexFromPos(TrackPos); const tTrackSeg* Seg = oSections[Index].Seg; double Tmp; TVec3d CenterPoint; TVec3d Normale; NormalizeDir(Seg, TrackPos - Seg->lgfromstart, Tmp, CenterPoint, Normale); return Normale.GetXY(); }