Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Sergeii A. Golovatov                 2:5020/400     30 Oct 2001  14:51:43
 To : Nick Gusev
 Subject : Re: Алгоритм вычисления угла
 -------------------------------------------------------------------------------- 
 
 Hi, Nick Gusev <kkb1@online.ru>! You wrote:
 
 > Господа, подскажите, пожалуйста программный алгоритм вычисления угла между
 > 2-мя прямыми, проведенными через 4 заданные точки.
 
 Hазовем нужный угол beta
 
 Допустим, даны четыре пары координат для этих 4х точек. 2 первые пары описывают
 1ю прямую, 2 вторые -- соотв-но, 2ю:
 
 (x1,y1) (x2,y2), где x1 < x2
 (x3,y3) (x4,y4), где x3 < x4
 
 Если использовать для описания прямой формулу y(x) = a*x+b, то для твоей задачи
 достаточно для каждой прямой определить a, т.к., в данном случае, a = tg угла
 наклона прямой по отношению к оси абсцисс.
 
 Стало быть, a1 = (y2 - y1)/(x2 - x1); a2 = (y4 - y3)/(x4 - x3)
 
 Обрати внимание, что "иксы" вычитаются "из большего -- меньшее", а "игреки" --
 в том же порядке, что и "иксы", независимо от соотношения между "игреками"
 (т.е., неважно, y2 < y1, или y2 > y1, если x2 > x1, то x2 - x1 и y2 - y1).
 
 Если полученное а отриц-е -- "падающая" прямая, угол отриц-й, наоборот --
 "ратущая", угол -- соотв-но, полож-й.
 
 Естественно, с проверкой случаев x1 = x2, x3 = x4, В этом случае угол наклона
 соответствующей прямой alpha = 90 градусов.
 
 Теперь, если a1 и a2 получились одинаковыми, то можешь сразу объявлять beta =
 0.
 
 Если нет -- находишь arctg(a1) и arctg(a2) (естественно, при x3 = x4 угол alpha
 = 90 градусов, разрыв области значений тангенсов), и, если направление
 положительного отсчета углов не сильно важно, то просто из большего угла
 вычитаешь меньший.
 
 PS:
 Hа практике, если для значений координат используются вещественные числа, то
 нужно проверять не
     x1 = x2,
 а
     abs(x1-x2) < epsilon,
 где значение "малости" epsilon зависит от выбранного/заданного типа
 вещественных чисел.
 
 PPS:
 Кстати, вопрос в том, какой именно угол нужен получить, потому как их 2;) И
 этот Beta можно всегда рассматривать как угол, дополняющий соседний до 180
 градусов.
 Так что при желании нужно еще и это учесть;)
 --
 Сергей Головатов, он же -- SergHeader@mail.ru
 Sergeii Golovatov, also known as SergHeader@mail.ru
 --- ifmail v.2.15dev5
  * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Алгоритм вычисления угла   Nick Gusev   30 Oct 2001 07:52:56 
 Re: Алгоритм вычисления угла   Sergeii A. Golovatov   30 Oct 2001 14:51:43 
 Алгоритм вычисления угла   Oleg Friazinov   01 Nov 2001 01:21:49 
 Re: Алгоритм вычисления угла   Comoderator Of Ru Algorithms   31 Oct 2001 18:50:06 
Архивное /ru.algorithms/6577bb181a46.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional