@Override
	public void relocate(Car fCar)
	{
		PathIterator p = fCurve.getPathIterator(null);
		FlatteningPathIterator f = new FlatteningPathIterator(p, reduceCarSpeed(fCar.getSpeed()));
		Point2D nearestPoint = null;
		double distance = 1000;
		while (!f.isDone())
		{
			float[] pts = new float[6];
			switch (f.currentSegment(pts))
			{
				case PathIterator.SEG_MOVETO:
				case PathIterator.SEG_LINETO:
					Point2D point = new Point2D.Float(pts[0], pts[1]);
					double distance1 = point.distance(fCar.getPosition());
					if (distance1 < distance)
					{
						nearestPoint = point;
						distance = distance1;
					}

			}
			f.next();
		}
		if (nearestPoint != null)
		{
			fCar.setPosition(nearestPoint);
		}
	}