Тестирование, если линия имеет точку в треугольнике - PullRequest
3 голосов
/ 28 августа 2010

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

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

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

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

1 Ответ

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

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

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

...