2013-09-02 6 views
-1

Я хочу рассчитать расстояние от точки до многоугольника.Расстояние между точками от многоугольника

Мой код для получения расстояния точки до линии выглядит следующим образом:

float px,py,something,u; 
       px=x2-x1; 
       py=y2-y1; 

       something = px*px + py*py; 

       u = ((x - x1) * px + (y - y1) * py) /(something); 


       if(u > 1) 
       u = 1; 
       else if (u < 0) 
       u = 0; 

       float xx = x1 + u * px; 
       float yy = y1 + u * py; 

       float dx = xx - x; 
       float dy = yy - y; 

       float dist= (float)Math.sqrt((double)dx*dx +(double) dy*dy); 

Точка может быть внутри или вне многоугольника. Я не могу найти полезный пример, чтобы найти расстояние от полигона от точки.

ответ

0

Меня не удивляет, что вы не можете найти эту информацию. Полигоны имеют конечную площадь, что означает вычисление расстояния от них, вам нужно выбрать точку где-то на полигоне, чтобы использовать ее в качестве ссылки. Простейшим решением было бы использовать некоторую меру центра для полигона и протестировать его, тогда это может быть так же просто, как использовать эвклидовое расстояние. Если это помогает, когда вы имеете дело с чем-то, что OpenGL рассматривает многоугольник, то многоугольники можно рассматривать как упорядоченный набор точек, существующих в одной плоскости - это должно упростить процесс нахождения центра.

Для более точного измерения расстояния вам может потребоваться расстояние до ближайшей точки на многоугольнике. Если вы продолжаете рассматривать многоугольник как произвольный набор ребер, это довольно сложно, но если вы замените его на более простую геометрию (т. Е. Ограничивающий круг, квадрат или треугольник), вы можете значительно упростить ситуацию. Пример, упомянутый выше, может быть расширен, чтобы дать вам расстояние от внешней границы ограничивающего круга, вычитая радиус от расстояния до центра многоугольника.

+0

Я взял центр тяжести многоугольника, а затем вычислил расстояние от центра до точки, но я не получаю cirrect distance –

Смежные вопросы