Нам нужно найти угол этой дуги и центр круга.
Сначала найдите радиус.
R^2 = (d/2)^2 + (R-d/3)^2 //pythagorean
R = 13/24 * d
Теперь угол
half_angle = arcsin(12/13) ~ 67.4 degrees
angle = 2 * half_angle ~ 135 degrees = 2.35 radians
Нормализовать вектор perp
uperp = perp / len(perp)
Получить центр круга
M = (P0 + P1)/2 //chord middle
C = M + uperp * 5/24 * d
Начальный угол
A0 = atan2(P0.Y-C.Y, P0.X-C.X)
И, наконец, координаты
Car.X = C.X + R * Cos(A0 + t * angle)
Car.Y = C.Y + R * Sin(A0 + t * angle)
В Unity это будет выглядеть так:
Vector2 startPosition;
Vector2 endPosition;
Vector2 perp;
float t;
float d = (endPosition - startPosition).magnitude;
float radius = 13f/24f * d;
float angle = 2f * Mathf.Asin(12f/13f);
Vector2 uperp = perp.normalized;
Vector2 M = (startPosition+endPosition)*0.5f;
Vector2 C = M + uperp * 5f/24f * d;
float A0 = Mathf.Atan2(startPosition.y-C.y, startPosition.x-C.x);
float At = A0 + t * angle;
Vector2 newPos = C + radius * new Vector2(Mathf.Cos(At), Mathf.Sin(At));