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


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Kluchnikov Eugene                    2:5003/39.64   27 Oct 2001  21:36:50
 To : Andrew Akapiev
 Subject : Perpendicular
 -------------------------------------------------------------------------------- 
 
 
  AA> Hужно найти длину перпендикуляра, опущенного из точки C(x,y)
  AA> на прямую, проходящую через точки A(x1;y1) и B(x2,y2).
 
               __                                       _
  Берем вектор AB(x2-x1;y2-y1), перпендикулярный вектор n(y1-y2;x2-x1)
  __   __   _
  AC=a*AB+b*n
  Получаем систему линейных уравнений
  x-x1=a*(x2-x1)+b*(y1-y2)
  y-y1=a*(y2-y1)+b*(x2-x1)
  Если x2<>x1, то по первому уравнению выражаем a, иначе первое и второе меняем
 местами (одновременно x1-x2 и y2-y1 не обращаются в 0)
  a*(x2-x1)=(x-x1)-b*(y1-y2)
  Умножим второе на (x2-x1)
  (y-y1)*(x2-x1)=(y2-y1)*(x-x1)-b*(y1-y2)*(y2-y1)+b*(x2-x1)*(x2-x1)
 
    (y-y1)*(x2-x1)-(y2-y1)*(x-x1)
  b=-----------------------------
         (x2-x1)^2+(y2-y1)^2
 
  Hеудивительно, что b не зависит от того, x2-x1=0 или нет !
                               _
  Дальше всё просто длина l=|b*n|
  l=abs(b*sqrt((y1-y2)^2+(x1-x2)^2))
 
  В итоге:
 
       (y-y1)*(x1-x2)-(x-x1)*(y1-y2)
  l=abs-----------------------------
        sqrt((y1-y2)^2+(x1-x2)^2))
 
  Hадеюсь ничего не перепутал.
 
 _WBR_, _/*Eustas*/_.
 --- Eustas is a part of Me
  * Origin: My life for Aiur (2:5003/39.64)
 
 

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

 Тема:    Автор:    Дата:  
 Perpendicular   Andrew Akapiev   27 Oct 2001 09:07:32 
 Perpendicular   Stanislav Shwartsman   27 Oct 2001 18:09:27 
 Re: Perpendicular   Michael Sedov   28 Oct 2001 17:25:45 
 Perpendicular   Kluchnikov Eugene   27 Oct 2001 21:36:50 
 Perpendicular   Svetlana Smirnova   27 Oct 2001 22:26:09 
Архивное /ru.algorithms/33763bdaf6a9.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional