Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity › Forums › Adobe After Effects Expressions › Detect if Lines are Intersecting

  • Detect if Lines are Intersecting

    Posted by Valenin Febeldorfer on January 3, 2019 at 10:41 am

    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.

    Kalleheikki Kannisto replied 7 years, 8 months ago 2 Members · 1 Reply
  • 1 Reply
  • Kalleheikki Kannisto

    January 3, 2019 at 6:34 pm

    Add a section that checks whether the intersection point is within both rectangles defined by the start and end point of blue and red lines respectively. If the point is within both those rectangles, it gives you the intersection point and should be shown there, if not, set it to your fixed position.
    It should be easy to check that the x coordinate falls between the x coordinates of the end points and y coordinate falls between the y coordinates of the end points, one line at a time. You will have to check which point has the smaller coordinate value in each pair in both x and y directions to know in which order to check it.

    Kalleheikki Kannisto
    Senior Graphic Designer

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy