示例#1
0
void ClothoidPath::OptimiseLine( const CarModel& cm, int idx, int step,	double hLimit, PathPt* l3, const PathPt* l2, const PathPt* l4 )
{
	LinearRegression	l;

	const int NSEG = m_pTrack->GetSize();

	int i = (idx + NSEG - step) % NSEG;
	while( m_pPath[i].h > hLimit )
	{
		l.Sample( m_pPath[i].pt.GetXY() );
		i = (i + NSEG - step) % NSEG;
	}

	l.Sample( m_pPath[i].pt.GetXY() );

	i = idx;
	while( m_pPath[i].h > hLimit )
	{
		l.Sample( m_pPath[i].pt.GetXY() );
		i = (i + step) % NSEG;
	}

	l.Sample( m_pPath[i].pt.GetXY() );

    GfOut( "%4d  ", idx );
	Vec2d	p, v;
	l.CalcLine( p, v );

	double	t;
	Utils::LineCrossesLine( l3->Pt().GetXY(), l3->Norm().GetXY(), p, v, t );

	SetOffset( cm, 0, t, l3, l2, l4 );
}