# How do I make a vector exactly reach a line?

Let's say a vector starts at Point P and points in the direction of v. How do I make sure that this vector exactly reaches the line? Its end should be exactly on the line, and not cross it. You should calculate the intersection point (IP) between the two lines.

      (X - Ax)     (Y - Ay)
EQ1 = --------  =  --------   =>   (X-Ax) * (By-Ay) - (Y - Ay) * (Bx - Ax) = 0;
(Bx - Ax)    (By - Ay)

(X - Px)     (Y - Py)
EQ2 = --------  =  --------   =>   (X-Px) * (Vx) - (Y - Py) * (Vy) = 0;
(Vx)        (Vy)


Solve the two equations and you get IP (X,Y).

Maybe you'd need to check that IP is between A and B... before continue...

Then you build a new line with this equation:

  (P + V) = P + t*(IP-P)   => t = V / (IP - P)

t = (IP.X-P.X != 0)
? (V.X / (IP.X - P.X))
: (V.Y / (IP.Y - P.Y));

if t>1 then (P+V) has overpassed the line


EDIT: Remember:

1) You have to calculate IP. the intersection point
2) You should check that IP is between A and B
3) You had the vector V, and now have the vector (IP-P),
4) You can choose betwwen two options:
a) Now you can compare the vector lenghts to now if V is greater that (IP-P)
b) Calculate t as I described before...
if t==0 => V=(0,0);
if t=1 => V=(IP-P)
if (t>0 && t<1) length(V) < length(IP-P)
if (t>1) length(V) > length(IP-P) • It looks nice. Is it possible that to include a solved example. It will very helpful Apr 18 '12 at 9:16
• beat me to it.. +1 Apr 18 '12 at 9:17
• @Blau, Please help. I have not understand your formula. P + t*(IP-P). I think it is a vector and you are checking it as scaler Apr 18 '12 at 10:48
• Maybe this will help: alienryderflex.com/intersect Apr 18 '12 at 10:58
• @RoyT. It did'nt help. Apr 18 '12 at 11:19

## You should:

1. Find an (X, Y) point of intersection of your line and a support line for the vector.
2. Extend your vector by the distance from its end to than point you've found.

### Example:

1. Find the (X, Y) point: solve the

(X - Ax) * (By - Ay) - (Y - Ay) * (Bx - Ax) = 0

and

(X - Px) * Vx - (Y - Py) * Vy = 0

equations.

2. Your new vector will be Your old vector (both components) plus YVN * Dist;

• where YVN is Your old vector normalized (one-unit length);
• where Dist is distance between N and V;
• where N is your newfoundland point.
• Is it possible that you please with an example. Like Blau demostrate with an example. Apr 18 '12 at 12:29
• @user960567 okay. Apr 18 '12 at 12:51
• I can't extend the vector. Vector is fixed. I can only change the starting Point P. Apr 18 '12 at 12:52
• @user960567 okay now? Apr 18 '12 at 13:10
• I said that I cannot change vector Apr 18 '12 at 14:41