У меня есть простой двумерный многоугольник с вершинами 3..n. Мне нужно найти произвольную точку внутри (не на границе) этого многоугольника. Как его найти? Эта проблема тривиальна для выпуклых многоугольников: просто возьмите три смежные точки, которые не лежат на одной линии (поэтому они образуют треугольник). Середина этого треугольника гарантированно лежит внутри многоугольника. Но этот подход не работает для невыпуклых многоугольников.Найти точку в полигоне
class Point
{
public double X, Y;
}
Point GetPointInPolygon(Point[] polygon)
{
.....
}
Вы даже попробовали что-нибудь? SO не является кодовым сервисом. Так в чем твоя идея? Какие шаги следует предпринять, чтобы получить то, что вы хотите, может быть, какой-нибудь псевдо-код? – HimBromBeere
Если вы хотите, чтобы какая-либо точка в полигоне задавалась ее вершинами, тогда просто верните первую вершину. Если вы хотите, чтобы какая-либо внутренняя точка, исключая вершины, затем использовала уравнение линии двумя точками (x0, y0), (x1, y1) https://en.wikipedia.org/wiki/Linear_equation#Two-point_form и получала очки от x0 до x1. Чтобы узнать, не является ли какой-либо вопрос внутренним, прочитайте эту статью http://stackoverflow.com/questions/4243042/c-sharp-point-in-polygon, но это больше, чем вам нужно. – derloopkat
Вы читали статью wiki? https://en.wikipedia.org/wiki/Point_in_polygon – jdweng