-
Detect if Lines are Intersecting
I have two lines (The lines are imaginary, i have two Nulls as endpoints for each line) I want a fifth Null two appear where the lines intersect. I have used this code so far:
p1 = thisComp.layer("red_end").transform.position;
p2 = thisComp.layer("red_start").transform.position;
p3 = thisComp.layer("blue_end").transform.position;
p4 = thisComp.layer("blue_start").transform.position;m1vert = Math.abs(p1[0]-p2[0]) < .0001;
m2vert = Math.abs(p3[0]-p4[0]) < .0001;if (! m1vert){
m1 = (p2[1]-p1[1])/(p2[0]-p1[0]);
b1 = p1[1]-m1*p1[0];
}
if (! m2vert){
m2 = (p4[1]-p3[1])/(p4[0]-p3[0]);
b2 = p3[1]-m2*p3[0];
}
if (m1vert && m2vert){
x = value[0];
y = value[1];
}else if(m1vert){
x = p1[0];
y = m2*x + b2;
}else if (m2vert){
x = p3[0];
y = m1*x + b1;
}else if (m1 == m2){
x = value[0];
y = value[1];
}else{
x = (b1-b2)/(m2-m1);
y = m1*x +b1;
}
[x,y]
The fifth Null does appear in the intersections when the lines intersect, but also miserably stumble around on screen when the lines don’t intersect. I want the Null to go to a specific position whenever the lines don’t intersect. So how would I do that? Any help is appreciated.