# How to get a "Traveled" vector point along a path with some width?

For example I have a path, that consists of 10 cross sections.
Each cross section defines a center point and edge points.
So in total I have 30 vector points that define my path, which the traveler X can travel.
My goal is to receive the traveled distance along the center points, centerpoints[currentPoint].

My current approach relies on dot product, but as soon as the traveler goes away from the center I get incorrect results. I am currently not using the edge points, but they are there if needed, because they define the width limits to the path.

Here is the code of my approach:

``````		int points = 10;	// size of the path list
int pointNumber = 0; // find the closest point in path list to traveler

// Measure the total length of the path and store distance per segment
float accumulateDistance = 0;
for (int i = 0; i < path.Count; i++)
{
Vector3 p1 = path[(i) % points].centerPoint;
Vector3 p2 = path[(i + 1) % points].centerPoint;

if (p1 != null && p2 != null)
{
accumulateDistance += (p1 - p2).magnitude;
path*.dist = accumulateDistance;*
``````

}
}

• `````` // Measure the traveled distance along path*
``````

Vector3 currentPoint = path[pointNumber].centerPoint;

• `````` Vector3 nextPoint;*
``````
• `````` if (r.currentWaypoint < path.Count - 1)*
``````
• `````` 	nextPoint = path[pointNumber + 1].currentPoint;*
``````
• `````` else*
``````
• `````` 	nextPoint = path.currentPoint;*
``````

Vector3 forward = (nextPoint - currentPoint);
Vector3 relativePos = traveler.transform.position - currentPoint;