Проверка наличия у линии точки внутри треугольника

Как я могу проверить, есть ли на линии точка, которая лежит внутри (а не на краю) треугольника. (Все в 2D).

В настоящее время я думаю, что я сделаю это:

  • Определите линию и каждую сторону треугольника как Ax+By+C=0 и задайте xrange.
  • Проверьте, пересекает ли линия какую-либо из линий треугольника.
  • Если это так, убедитесь, что это НЕ в конце строки.

Есть лучший способ это сделать?


person thomasfedb    schedule 28.08.2010    source источник


Ответы (1)


  1. подставьте 3 точки в уравнение линии. например если линия 4x 3y + 2 = 0, а вершины треугольника (2, 1), (4, 3), (0, 5), мы получаем значения 7, 9 и -13 соответственно.

  2. проверьте, все ли значения имеют один и тот же знак. Если да, то линия не пересекает треугольник. В приведенном выше примере линия пересекает треугольник.

    http://www.imgftw.net/img/743059947.png

person kennytm    schedule 28.08.2010
comment
@Томас: Да. В качестве иллюстрации представьте поверхность z = 4x - 3y + 2... Подробности можно узнать на math.stackexchange.com. - person kennytm; 28.08.2010