Intersection point of 2 lines defined by 2 points eachIntersection between two linesParallel Lines, One point...

How does one intimidate enemies without having the capacity for violence?

Why doesn't Newton's third law mean a person bounces back to where they started when they hit the ground?

LWC SFDX source push error TypeError: LWC1009: decl.moveTo is not a function

Why is 150k or 200k jobs considered good when there's 300k+ births a month?

Cross compiling for RPi - error while loading shared libraries

A case of the sniffles

Can a vampire attack twice with their claws using Multiattack?

Is it tax fraud for an individual to declare non-taxable revenue as taxable income? (US tax laws)

How much of data wrangling is a data scientist's job?

Are the number of citations and number of published articles the most important criteria for a tenure promotion?

I'm flying to France today and my passport expires in less than 2 months

What does "Puller Prush Person" mean?

What's that red-plus icon near a text?

How much RAM could one put in a typical 80386 setup?

Could an aircraft fly or hover using only jets of compressed air?

Intersection point of 2 lines defined by 2 points each

Which country benefited the most from UN Security Council vetoes?

How does quantile regression compare to logistic regression with the variable split at the quantile?

Is it possible to do 50 km distance without any previous training?

Why are electrically insulating heatsinks so rare? Is it just cost?

Is it unprofessional to ask if a job posting on GlassDoor is real?

Has there ever been an airliner design involving reducing generator load by installing solar panels?

What would happen to a modern skyscraper if it rains micro blackholes?

Modeling an IP Address



Intersection point of 2 lines defined by 2 points each


Intersection between two linesParallel Lines, One point on each.Intersection between 2 linesStraight lines - point of intersectionFinding the intersection point between two lines using a matrixCalculate intersection point between two linescollision point of circle and lineFind intersection point of two straight linesIntersection point of multiple 3D linesFour Dimensional intersection point













2












$begingroup$


I'm implementing this in code, but I'll rewrite it so that it is easier understood (like pseudocode):



# a = pt 1 on line 1
# b = pt 2 on line 1
# c = pt 1 on line 2
# d = pt 2 on line 2
def intersect(a,b,c,d):

# stuff for line 1
a1 = b.y-a.y
b1 = a.x-b.x
c1 = a1*a.x + b1*a.y

# stuff for line 2
a2 = d.y-c.y
b2 = c.x-d.x
c2 = a2*c.x + b2*c.y

determinant = a1*b2 - a2*b1

if (determinant == 0):
# Return (infinity, infinity) if they never intersect
# By "never intersect", I mean that the lines are parallel to each other
return math.inf, math,inf
else:
x = (b2*c1 - b1*c2)/determinant
y = (a1*c2 - a2*c1)/determinant
return x,y


All the above works, ... but only does by assuming that the lines extend infinitely in each direction, like a linear equation. I'll show what I mean here.



There are the 2 lines, red and green, and the gold dot is what is returned when I test this code ... but the lines don't actually intersect. What can be used to test whether the lines truly intersect?



Heres the actual Python code if needed.










share|cite|improve this question











$endgroup$

















    2












    $begingroup$


    I'm implementing this in code, but I'll rewrite it so that it is easier understood (like pseudocode):



    # a = pt 1 on line 1
    # b = pt 2 on line 1
    # c = pt 1 on line 2
    # d = pt 2 on line 2
    def intersect(a,b,c,d):

    # stuff for line 1
    a1 = b.y-a.y
    b1 = a.x-b.x
    c1 = a1*a.x + b1*a.y

    # stuff for line 2
    a2 = d.y-c.y
    b2 = c.x-d.x
    c2 = a2*c.x + b2*c.y

    determinant = a1*b2 - a2*b1

    if (determinant == 0):
    # Return (infinity, infinity) if they never intersect
    # By "never intersect", I mean that the lines are parallel to each other
    return math.inf, math,inf
    else:
    x = (b2*c1 - b1*c2)/determinant
    y = (a1*c2 - a2*c1)/determinant
    return x,y


    All the above works, ... but only does by assuming that the lines extend infinitely in each direction, like a linear equation. I'll show what I mean here.



    There are the 2 lines, red and green, and the gold dot is what is returned when I test this code ... but the lines don't actually intersect. What can be used to test whether the lines truly intersect?



    Heres the actual Python code if needed.










    share|cite|improve this question











    $endgroup$















      2












      2








      2





      $begingroup$


      I'm implementing this in code, but I'll rewrite it so that it is easier understood (like pseudocode):



      # a = pt 1 on line 1
      # b = pt 2 on line 1
      # c = pt 1 on line 2
      # d = pt 2 on line 2
      def intersect(a,b,c,d):

      # stuff for line 1
      a1 = b.y-a.y
      b1 = a.x-b.x
      c1 = a1*a.x + b1*a.y

      # stuff for line 2
      a2 = d.y-c.y
      b2 = c.x-d.x
      c2 = a2*c.x + b2*c.y

      determinant = a1*b2 - a2*b1

      if (determinant == 0):
      # Return (infinity, infinity) if they never intersect
      # By "never intersect", I mean that the lines are parallel to each other
      return math.inf, math,inf
      else:
      x = (b2*c1 - b1*c2)/determinant
      y = (a1*c2 - a2*c1)/determinant
      return x,y


      All the above works, ... but only does by assuming that the lines extend infinitely in each direction, like a linear equation. I'll show what I mean here.



      There are the 2 lines, red and green, and the gold dot is what is returned when I test this code ... but the lines don't actually intersect. What can be used to test whether the lines truly intersect?



      Heres the actual Python code if needed.










      share|cite|improve this question











      $endgroup$




      I'm implementing this in code, but I'll rewrite it so that it is easier understood (like pseudocode):



      # a = pt 1 on line 1
      # b = pt 2 on line 1
      # c = pt 1 on line 2
      # d = pt 2 on line 2
      def intersect(a,b,c,d):

      # stuff for line 1
      a1 = b.y-a.y
      b1 = a.x-b.x
      c1 = a1*a.x + b1*a.y

      # stuff for line 2
      a2 = d.y-c.y
      b2 = c.x-d.x
      c2 = a2*c.x + b2*c.y

      determinant = a1*b2 - a2*b1

      if (determinant == 0):
      # Return (infinity, infinity) if they never intersect
      # By "never intersect", I mean that the lines are parallel to each other
      return math.inf, math,inf
      else:
      x = (b2*c1 - b1*c2)/determinant
      y = (a1*c2 - a2*c1)/determinant
      return x,y


      All the above works, ... but only does by assuming that the lines extend infinitely in each direction, like a linear equation. I'll show what I mean here.



      There are the 2 lines, red and green, and the gold dot is what is returned when I test this code ... but the lines don't actually intersect. What can be used to test whether the lines truly intersect?



      Heres the actual Python code if needed.







      linear-algebra matrices python






      share|cite|improve this question















      share|cite|improve this question













      share|cite|improve this question




      share|cite|improve this question








      edited 2 hours ago









      Ethan Bolker

      45.6k553120




      45.6k553120










      asked 4 hours ago









      crazicrafter1crazicrafter1

      197




      197






















          3 Answers
          3






          active

          oldest

          votes


















          2












          $begingroup$

          I think you are asking for the intersection point (if any) of two line segments, not two lines.



          Once you find the intersection point $P$ as you have, you can check that it is between the endpoints $A$ and $B$ of a segment by solving the equation
          $$
          tA + (1-t)B = P
          $$

          for $t$ and checking that $t$ is between $0$ and $1$. That equation will have a solution because you know $P$ is on the line. Do that for each of the two segments.



          Warning: you may have numerical instability if the determinant is close to $0$. That will happen when the lines are nearly parallel.



          (There may be a shorter way to do this from scratch, but this will work.)






          share|cite|improve this answer











          $endgroup$





















            2












            $begingroup$

            You have the point $x$ where the infinite lines intersect. You need to check whether that point is on both finite line segments.



            Line segment 1 has endpoints $a$ and $b$. Use these to make a vector $vec{ab}=b-a$. If the dot product $vec{ab}cdotvec{ax}$ is positive, then $x$ is forward of $a$; if it's negative, then $x$ is behind $a$. Likewise, if $vec{ab}cdotvec{bx}$ is positive, then $x$ is forward of $b$. The point $x$ is on the segment if it's between $a$ and $b$.



            Do the same test for the other line segment.






            share|cite|improve this answer









            $endgroup$





















              0












              $begingroup$

              This is an elaboration on Ethan Bolker's post.



              Every point on the line segment from $a$ to $b$ can be expressed as $$a + t(b-a)$$ for some $t$ between $0$ and $1$. Likewise, every point on the line segment from $c$ to $d$ can be expressed as $$c + s(d-c)$$ for some $s$ between $0$ and $1$. Any intersection point can be expressed in both forms, so we will have



              $$a + t(b-a) = c + s(d - c)$$
              re-arranging,
              $$t(b - a) + s(c - d) = c - a$$



              Letting $n = b - a, m = c-d$, and $p = c - a$, and switching to coordinates, we have
              $$n_xt + m_xs = p_x\n_yt + m_ys = p_y$$



              Instead of solving directly for the coordinates of the point of intersection, you should solve for $t$ and $s$. Letting
              $$D = n_xm_y - n_ym_x\Q_x = m_yp_x - m_xp_y\Q_y =n_xp_y - n_yp_x$$



              We have $$t=frac {Q_x}D, quad s = frac {Q_y}D$$



              In particular, we can figure out the following before doing the divisions:




              • If $D$ is $0$, then the segments are parallel - the only way they can intersect in a unique point is if the two segments are adjacent and have a common endpoint (for instance $b = c$, and $a$ and $d$ are on opposite sides of the common point).

              • If $D$ is the opposite sign of either $Q_x$ or $Q_y$, then one of $t$ or $s < 0$, so the line segments do not intersect.

              • If $|D|$ is larger than either $|Q_x|$ or $|Q_y|$, then one of $t$ or $s > 1$, and again the line segments do not intersect.

              • Otherwise, the segments do intersect, and you either calculate $t$ and $a + t(b -a)$ or calculate $s$ and $c + s(d - c)$ to get the point of intersection.


              This is a more numerically stable approach to the problem.






              share|cite|improve this answer









              $endgroup$














                Your Answer





                StackExchange.ifUsing("editor", function () {
                return StackExchange.using("mathjaxEditing", function () {
                StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
                StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
                });
                });
                }, "mathjax-editing");

                StackExchange.ready(function() {
                var channelOptions = {
                tags: "".split(" "),
                id: "69"
                };
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function() {
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled) {
                StackExchange.using("snippets", function() {
                createEditor();
                });
                }
                else {
                createEditor();
                }
                });

                function createEditor() {
                StackExchange.prepareEditor({
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: true,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: 10,
                bindNavPrevention: true,
                postfix: "",
                imageUploader: {
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                },
                noCode: true, onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                });


                }
                });














                draft saved

                draft discarded


















                StackExchange.ready(
                function () {
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3176543%2fintersection-point-of-2-lines-defined-by-2-points-each%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                2












                $begingroup$

                I think you are asking for the intersection point (if any) of two line segments, not two lines.



                Once you find the intersection point $P$ as you have, you can check that it is between the endpoints $A$ and $B$ of a segment by solving the equation
                $$
                tA + (1-t)B = P
                $$

                for $t$ and checking that $t$ is between $0$ and $1$. That equation will have a solution because you know $P$ is on the line. Do that for each of the two segments.



                Warning: you may have numerical instability if the determinant is close to $0$. That will happen when the lines are nearly parallel.



                (There may be a shorter way to do this from scratch, but this will work.)






                share|cite|improve this answer











                $endgroup$


















                  2












                  $begingroup$

                  I think you are asking for the intersection point (if any) of two line segments, not two lines.



                  Once you find the intersection point $P$ as you have, you can check that it is between the endpoints $A$ and $B$ of a segment by solving the equation
                  $$
                  tA + (1-t)B = P
                  $$

                  for $t$ and checking that $t$ is between $0$ and $1$. That equation will have a solution because you know $P$ is on the line. Do that for each of the two segments.



                  Warning: you may have numerical instability if the determinant is close to $0$. That will happen when the lines are nearly parallel.



                  (There may be a shorter way to do this from scratch, but this will work.)






                  share|cite|improve this answer











                  $endgroup$
















                    2












                    2








                    2





                    $begingroup$

                    I think you are asking for the intersection point (if any) of two line segments, not two lines.



                    Once you find the intersection point $P$ as you have, you can check that it is between the endpoints $A$ and $B$ of a segment by solving the equation
                    $$
                    tA + (1-t)B = P
                    $$

                    for $t$ and checking that $t$ is between $0$ and $1$. That equation will have a solution because you know $P$ is on the line. Do that for each of the two segments.



                    Warning: you may have numerical instability if the determinant is close to $0$. That will happen when the lines are nearly parallel.



                    (There may be a shorter way to do this from scratch, but this will work.)






                    share|cite|improve this answer











                    $endgroup$



                    I think you are asking for the intersection point (if any) of two line segments, not two lines.



                    Once you find the intersection point $P$ as you have, you can check that it is between the endpoints $A$ and $B$ of a segment by solving the equation
                    $$
                    tA + (1-t)B = P
                    $$

                    for $t$ and checking that $t$ is between $0$ and $1$. That equation will have a solution because you know $P$ is on the line. Do that for each of the two segments.



                    Warning: you may have numerical instability if the determinant is close to $0$. That will happen when the lines are nearly parallel.



                    (There may be a shorter way to do this from scratch, but this will work.)







                    share|cite|improve this answer














                    share|cite|improve this answer



                    share|cite|improve this answer








                    edited 2 hours ago

























                    answered 2 hours ago









                    Ethan BolkerEthan Bolker

                    45.6k553120




                    45.6k553120























                        2












                        $begingroup$

                        You have the point $x$ where the infinite lines intersect. You need to check whether that point is on both finite line segments.



                        Line segment 1 has endpoints $a$ and $b$. Use these to make a vector $vec{ab}=b-a$. If the dot product $vec{ab}cdotvec{ax}$ is positive, then $x$ is forward of $a$; if it's negative, then $x$ is behind $a$. Likewise, if $vec{ab}cdotvec{bx}$ is positive, then $x$ is forward of $b$. The point $x$ is on the segment if it's between $a$ and $b$.



                        Do the same test for the other line segment.






                        share|cite|improve this answer









                        $endgroup$


















                          2












                          $begingroup$

                          You have the point $x$ where the infinite lines intersect. You need to check whether that point is on both finite line segments.



                          Line segment 1 has endpoints $a$ and $b$. Use these to make a vector $vec{ab}=b-a$. If the dot product $vec{ab}cdotvec{ax}$ is positive, then $x$ is forward of $a$; if it's negative, then $x$ is behind $a$. Likewise, if $vec{ab}cdotvec{bx}$ is positive, then $x$ is forward of $b$. The point $x$ is on the segment if it's between $a$ and $b$.



                          Do the same test for the other line segment.






                          share|cite|improve this answer









                          $endgroup$
















                            2












                            2








                            2





                            $begingroup$

                            You have the point $x$ where the infinite lines intersect. You need to check whether that point is on both finite line segments.



                            Line segment 1 has endpoints $a$ and $b$. Use these to make a vector $vec{ab}=b-a$. If the dot product $vec{ab}cdotvec{ax}$ is positive, then $x$ is forward of $a$; if it's negative, then $x$ is behind $a$. Likewise, if $vec{ab}cdotvec{bx}$ is positive, then $x$ is forward of $b$. The point $x$ is on the segment if it's between $a$ and $b$.



                            Do the same test for the other line segment.






                            share|cite|improve this answer









                            $endgroup$



                            You have the point $x$ where the infinite lines intersect. You need to check whether that point is on both finite line segments.



                            Line segment 1 has endpoints $a$ and $b$. Use these to make a vector $vec{ab}=b-a$. If the dot product $vec{ab}cdotvec{ax}$ is positive, then $x$ is forward of $a$; if it's negative, then $x$ is behind $a$. Likewise, if $vec{ab}cdotvec{bx}$ is positive, then $x$ is forward of $b$. The point $x$ is on the segment if it's between $a$ and $b$.



                            Do the same test for the other line segment.







                            share|cite|improve this answer












                            share|cite|improve this answer



                            share|cite|improve this answer










                            answered 2 hours ago









                            mr_e_manmr_e_man

                            1,1401424




                            1,1401424























                                0












                                $begingroup$

                                This is an elaboration on Ethan Bolker's post.



                                Every point on the line segment from $a$ to $b$ can be expressed as $$a + t(b-a)$$ for some $t$ between $0$ and $1$. Likewise, every point on the line segment from $c$ to $d$ can be expressed as $$c + s(d-c)$$ for some $s$ between $0$ and $1$. Any intersection point can be expressed in both forms, so we will have



                                $$a + t(b-a) = c + s(d - c)$$
                                re-arranging,
                                $$t(b - a) + s(c - d) = c - a$$



                                Letting $n = b - a, m = c-d$, and $p = c - a$, and switching to coordinates, we have
                                $$n_xt + m_xs = p_x\n_yt + m_ys = p_y$$



                                Instead of solving directly for the coordinates of the point of intersection, you should solve for $t$ and $s$. Letting
                                $$D = n_xm_y - n_ym_x\Q_x = m_yp_x - m_xp_y\Q_y =n_xp_y - n_yp_x$$



                                We have $$t=frac {Q_x}D, quad s = frac {Q_y}D$$



                                In particular, we can figure out the following before doing the divisions:




                                • If $D$ is $0$, then the segments are parallel - the only way they can intersect in a unique point is if the two segments are adjacent and have a common endpoint (for instance $b = c$, and $a$ and $d$ are on opposite sides of the common point).

                                • If $D$ is the opposite sign of either $Q_x$ or $Q_y$, then one of $t$ or $s < 0$, so the line segments do not intersect.

                                • If $|D|$ is larger than either $|Q_x|$ or $|Q_y|$, then one of $t$ or $s > 1$, and again the line segments do not intersect.

                                • Otherwise, the segments do intersect, and you either calculate $t$ and $a + t(b -a)$ or calculate $s$ and $c + s(d - c)$ to get the point of intersection.


                                This is a more numerically stable approach to the problem.






                                share|cite|improve this answer









                                $endgroup$


















                                  0












                                  $begingroup$

                                  This is an elaboration on Ethan Bolker's post.



                                  Every point on the line segment from $a$ to $b$ can be expressed as $$a + t(b-a)$$ for some $t$ between $0$ and $1$. Likewise, every point on the line segment from $c$ to $d$ can be expressed as $$c + s(d-c)$$ for some $s$ between $0$ and $1$. Any intersection point can be expressed in both forms, so we will have



                                  $$a + t(b-a) = c + s(d - c)$$
                                  re-arranging,
                                  $$t(b - a) + s(c - d) = c - a$$



                                  Letting $n = b - a, m = c-d$, and $p = c - a$, and switching to coordinates, we have
                                  $$n_xt + m_xs = p_x\n_yt + m_ys = p_y$$



                                  Instead of solving directly for the coordinates of the point of intersection, you should solve for $t$ and $s$. Letting
                                  $$D = n_xm_y - n_ym_x\Q_x = m_yp_x - m_xp_y\Q_y =n_xp_y - n_yp_x$$



                                  We have $$t=frac {Q_x}D, quad s = frac {Q_y}D$$



                                  In particular, we can figure out the following before doing the divisions:




                                  • If $D$ is $0$, then the segments are parallel - the only way they can intersect in a unique point is if the two segments are adjacent and have a common endpoint (for instance $b = c$, and $a$ and $d$ are on opposite sides of the common point).

                                  • If $D$ is the opposite sign of either $Q_x$ or $Q_y$, then one of $t$ or $s < 0$, so the line segments do not intersect.

                                  • If $|D|$ is larger than either $|Q_x|$ or $|Q_y|$, then one of $t$ or $s > 1$, and again the line segments do not intersect.

                                  • Otherwise, the segments do intersect, and you either calculate $t$ and $a + t(b -a)$ or calculate $s$ and $c + s(d - c)$ to get the point of intersection.


                                  This is a more numerically stable approach to the problem.






                                  share|cite|improve this answer









                                  $endgroup$
















                                    0












                                    0








                                    0





                                    $begingroup$

                                    This is an elaboration on Ethan Bolker's post.



                                    Every point on the line segment from $a$ to $b$ can be expressed as $$a + t(b-a)$$ for some $t$ between $0$ and $1$. Likewise, every point on the line segment from $c$ to $d$ can be expressed as $$c + s(d-c)$$ for some $s$ between $0$ and $1$. Any intersection point can be expressed in both forms, so we will have



                                    $$a + t(b-a) = c + s(d - c)$$
                                    re-arranging,
                                    $$t(b - a) + s(c - d) = c - a$$



                                    Letting $n = b - a, m = c-d$, and $p = c - a$, and switching to coordinates, we have
                                    $$n_xt + m_xs = p_x\n_yt + m_ys = p_y$$



                                    Instead of solving directly for the coordinates of the point of intersection, you should solve for $t$ and $s$. Letting
                                    $$D = n_xm_y - n_ym_x\Q_x = m_yp_x - m_xp_y\Q_y =n_xp_y - n_yp_x$$



                                    We have $$t=frac {Q_x}D, quad s = frac {Q_y}D$$



                                    In particular, we can figure out the following before doing the divisions:




                                    • If $D$ is $0$, then the segments are parallel - the only way they can intersect in a unique point is if the two segments are adjacent and have a common endpoint (for instance $b = c$, and $a$ and $d$ are on opposite sides of the common point).

                                    • If $D$ is the opposite sign of either $Q_x$ or $Q_y$, then one of $t$ or $s < 0$, so the line segments do not intersect.

                                    • If $|D|$ is larger than either $|Q_x|$ or $|Q_y|$, then one of $t$ or $s > 1$, and again the line segments do not intersect.

                                    • Otherwise, the segments do intersect, and you either calculate $t$ and $a + t(b -a)$ or calculate $s$ and $c + s(d - c)$ to get the point of intersection.


                                    This is a more numerically stable approach to the problem.






                                    share|cite|improve this answer









                                    $endgroup$



                                    This is an elaboration on Ethan Bolker's post.



                                    Every point on the line segment from $a$ to $b$ can be expressed as $$a + t(b-a)$$ for some $t$ between $0$ and $1$. Likewise, every point on the line segment from $c$ to $d$ can be expressed as $$c + s(d-c)$$ for some $s$ between $0$ and $1$. Any intersection point can be expressed in both forms, so we will have



                                    $$a + t(b-a) = c + s(d - c)$$
                                    re-arranging,
                                    $$t(b - a) + s(c - d) = c - a$$



                                    Letting $n = b - a, m = c-d$, and $p = c - a$, and switching to coordinates, we have
                                    $$n_xt + m_xs = p_x\n_yt + m_ys = p_y$$



                                    Instead of solving directly for the coordinates of the point of intersection, you should solve for $t$ and $s$. Letting
                                    $$D = n_xm_y - n_ym_x\Q_x = m_yp_x - m_xp_y\Q_y =n_xp_y - n_yp_x$$



                                    We have $$t=frac {Q_x}D, quad s = frac {Q_y}D$$



                                    In particular, we can figure out the following before doing the divisions:




                                    • If $D$ is $0$, then the segments are parallel - the only way they can intersect in a unique point is if the two segments are adjacent and have a common endpoint (for instance $b = c$, and $a$ and $d$ are on opposite sides of the common point).

                                    • If $D$ is the opposite sign of either $Q_x$ or $Q_y$, then one of $t$ or $s < 0$, so the line segments do not intersect.

                                    • If $|D|$ is larger than either $|Q_x|$ or $|Q_y|$, then one of $t$ or $s > 1$, and again the line segments do not intersect.

                                    • Otherwise, the segments do intersect, and you either calculate $t$ and $a + t(b -a)$ or calculate $s$ and $c + s(d - c)$ to get the point of intersection.


                                    This is a more numerically stable approach to the problem.







                                    share|cite|improve this answer












                                    share|cite|improve this answer



                                    share|cite|improve this answer










                                    answered 20 mins ago









                                    Paul SinclairPaul Sinclair

                                    20.7k21543




                                    20.7k21543






























                                        draft saved

                                        draft discarded




















































                                        Thanks for contributing an answer to Mathematics Stack Exchange!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid



                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.


                                        Use MathJax to format equations. MathJax reference.


                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function () {
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3176543%2fintersection-point-of-2-lines-defined-by-2-points-each%23new-answer', 'question_page');
                                        }
                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown







                                        Popular posts from this blog

                                        “%fieldName is a required field.”, in Magento2 REST API Call for GET Method Type The Next...

                                        How to change City field to a dropdown in Checkout step Magento 2Magento 2 : How to change UI field(s)...

                                        夢乃愛華...