|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Yurij Zabelyshynskij 2:5020/400 21 Oct 2001 00:57:28 To : Stanislav Shwartsman Subject : Re: 2 Задачи по геометpии и соpтиpовка -------------------------------------------------------------------------------- Hi, Stanislav. Stanislav Shwartsman wrote AL>> 1) Есть кооpдинаты тpех точек тpеугольника A(x1,y2), B(x2,y2), AL>> C(x3,y3). есть четвеpтая точка M тоже с известными кооpдинатами x AL>> и y. Hужно опpеделить находится ли эта точка M внутpи AL>> тpеугольника ABC. Решил пpовеpяя pавна ли площадь тpеугольника AL>> ABC сумме площадей тpех тpеугольников: ABM, ACM, BCM AL>> (по фоpмуле Геpона). Есть ли более экономичный ваpиант с AL>> точки зpения вpемени вычисления ? SS> Как вариант могу предложить - если точка O внутри треугольника SS> ABC, то сумма углов AOB, BOC, AOC равна 360 градусов. Иначе - SS> всегда меньше. Hу вы даете, ребята! Один предлагает считать корни (для длин сторон и площади), другой - обратные тригонометрические функции (а корни для длин сторон все равно придется считать, да еще деление). А все делается гораздо проще. Достаточно провести (например, горизонтальный) луч из точки М и посчитать, сколько раз он пересечется со сторонами треугольника (кстати, это верно для любого многоугольника). Если число четное, то точка - снаружи, если нечетное - внутри. А для проверки пересечения отрезка и горизонтального луча достаточно сравнить знаки 2-х разностей: ординат концов отрезка и ординаты точки М и, если они разные, то лежит ли точка пересечения отрезка и прямой на луче (эту точку даже не обязательно явно считать). WBR, Yura. --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/657779919d5f.html, оценка из 5, голосов 10
|