up:: UE5.0.2
source:: c# - How to find closest point on line? - Stack Overflow

public Vector2 FindNearestPointOnLine(Vector2 origin, Vector2 direction, Vector2 point)
{
    direction.Normalize();
    Vector2 lhs = point - origin;
 
    float dotP = Vector2.Dot(lhs, direction);
    return origin + direction * dotP;
}

中身がどうなってるのか。
目的はoriginを通るベクトルdirection上にある、pointからの最短距離ポイントtを取ること。

まず、後のためにdirectionベクトルをnormalize。とする。
次にoriginからpointへを引く。
そしてでドット積。これはへの写像ベクトルを掛けた値。

Drawing 2022-08-06 22.29.47.excalidraw

ここで、はoriginからtへのベクトルと等しい。
また、に原点からoriginへのベクトルを加えると、tの座標と等しくなる。

よって、を算出すればいい。
で、はドット積を変形してなので、計算式は

となり、コードと一致する。