Блог пользователя gin_spirit

Автор gin_spirit, история, 9 месяцев назад, По-английски

Given two lines L1 and L2, How can I determine whether they are parallel or not? Here L1 contains (x1,y1)(x2,y2) and L2 contains (X3,y3)(x4,y4)

  • Проголосовать: нравится
  • +6
  • Проголосовать: не нравится

»
9 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

You can get the slope of each of the two lines. slope = (y2-y1)/(x2-x1). If the two slopes are equal, then the two lines are parallel.

»
9 месяцев назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

I think it's useful to rely on Google to search for things like this, anyway. If you need to check they are parallel or not you can see if the slope of L1 and L2 are equal or not.

L1 Slope = (y2 — y1) / (x2 — x1);

L2 Slope = (y4 — y3) / (x4 — x3);

If L1 Slope == L2 Slope is a parallel.

Some information that may interest you :CLICK HERE

  • »
    »
    9 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I already use that theory. but it gives me wrong answer on test case 3

    • »
      »
      »
      9 месяцев назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Try thit :-

      cross product :- First we calculates the directional vectors for the two line.

      L X1=x2-x1 and L Y1=y2-y1 --> 1
      L X2=x4-x3 and L Y2=Y4-Y3 --> 2

      Now we use the cross product to checks if the cross product of these two directional vectors is equal to zero .

      ( lx1 * ly2 ) == ( lx2 * ly1 )

      if is True so is a parallel, otherwise is not.

»
9 месяцев назад, # |
  Проголосовать: нравится +20 Проголосовать: не нравится

I find the nicest way is to use cross product. This avoids any potential division by zero.

Let $$$L_1$$$ be defined by points $$$P_1$$$ and $$$P_2$$$ and $$$L_2$$$ be defined by points $$$P_3$$$ and $$$P_4$$$. Then $$$(P_2 - P_1) \times (P_4 - P_3) = 0$$$ if and only if $$$L_1$$$ and $$$L_2$$$ are parallel. Of course, when using floating points you would rather check if the absolute value of the cross product is less than some very small number, probably something like $$$\epsilon = 10^{-9}$$$.