четверг, 30 июня 2011 г.

Положение точки относительно прямой


Определение положения точки относительно прямой
в интернете представляется несколько вариантов решения,но я выбрал такой:


функция для определения положения

double checkPoint(System.Windows.Point courseFirst, System.Windows.Point courseSecond, System.Windows.Point Point)
        {
            return (courseSecond.X - courseFirst.X) * (courseSecond.Y - Point.Y) - (courseSecond.Y - courseFirst.Y) * (courseSecond.X - Point.X);
        }

здесь  courseFirst и courseSecond точки на прямой(направление отcourseFirst к courseSecond)
в основной программе


double nCheck = checkPoint(new System.Windows.Point(cource1.X, cource1.Y), new System.Windows.Point(cource2.X, cource2.Y),new System.Windows.Point(x,y));
          //так как получаются координаты double округляем до 6 знака
  if (Math.Round(nCheck, 6) == 0.0)
                {
                    textBlock6.Text = " по направлению";   
                }
                else if (nCheck < 0)
             {
                    textBlock6.Text = " справа";
              }
                else if (nCheck > 0)
            {
                    textBlock6.Text = " слева";
             }
              if (Math.Sqrt(Math.Pow(cource1.X - x, 2) + Math.Pow(cource1.Y - y, 2)) > Math.Sqrt(Math.Pow(cource2.X -x, 2) + Math.Pow(cource2.Y -y, 2)))
                    textBlock6.Text += " ближе";
                else
                    textBlock6.Text += " дальше ";

Комментариев нет:

Отправить комментарий

Краткая шпаргалка по EtherChannel:

Протокол агрегации портов ( P ort Ag gregation P rotocol (PAgP)) и протокол управления агрегацией каналов ( L ink A ggregation C ontrol P ...