Определение положения точки относительно прямой
в интернете представляется несколько вариантов решения,но я выбрал такой:
функция для определения положения
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 += " дальше ";
Комментариев нет:
Отправить комментарий