Search code examples
mathvectorrotational-matrices

How can I find the unit vector between a point and a line?


I have three known 3-Dimensional points: A, B, and C.

Addtionally, I have a fourth point, X.

X lies on vector AB such that vector CX is perpendicular to vector AB. So AB · CX = 0

How do I find the unit vector of CX?


The use-case here is that I am constructing a (translated) rotational matrix, where the origin is A, the z-axis passes through B, the xz-plane passes thtough C, and the axes are orthogonal

I also have a vector object that provides dot and cross product functions at my disposal.


Solution

  • Let

    U = (B-A)/||(B-A)||
    

    be a unit vector along the line from A to B, where ||X|| denotes the length of vector X. Now we can parameterize the entire line by

    A + tU
    

    and we want

    ((A + tU) - C)*U = 0
    

    so that

    A*U - C*U + t = 0
    t = C*U - A*U
    

    so we've solved for t, and now we let

    V = (A+tU - C)/||A+tU - C||
    

    and we have our unit vector along the line, U, and one orthogonal to it, V.