Расчет центроида многоугольника - центроид вне многоугольникаC#

Место общения программистов C#
Ответить
Anonymous
 Расчет центроида многоугольника - центроид вне многоугольника

Сообщение Anonymous »

У меня есть 2 многоугольника, которые очень похожи, но один имеет центроид внутри, а другой снаружи.
Многоугольник 1 (внутри) с
"X: 2590431  Y: 5823888"
"X: 2590433  Y: 5823881"
"X: 2590439 Y: 5823883"
"X: 2590439 Y: 5823885"
Многоугольник 2 (снаружи) с
"X: 2590431,90722877  Y: 5823888,13312532"
"X: 2590433,4463628  Y: 5823881,72434687"
"X: 2590439,73619589  Y: 5823883,76414255"
"X: 2590439,32130088  Y: 5823885,79535345"
Почему и как центроид может находиться снаружи? Я только хочу понять. :)
Для расчета центроидов я использовал
///
/// Method to compute the centroid of a polygon. This does NOT work for a complex polygon.
///
/// points that define the polygon
/// centroid point, or PointF.Empty if something wrong
public static PointF GetCentroid(List poly)
{
float accumulatedArea = 0.0f;
float centerX = 0.0f;
float centerY = 0.0f;

for (int i = 0, j = poly.Count - 1; i < poly.Count; j = i++)
{
float temp = poly.X * poly[j].Y - poly[j].X * poly.Y;
accumulatedArea += temp;
centerX += (poly.X + poly[j].X) * temp;
centerY += (poly.Y + poly[j].Y) * temp;
}

if (Math.Abs(accumulatedArea) < 1E-7f)
return PointF.Empty; // Avoid division by zero

accumulatedArea *= 3f;
return new PointF(centerX / accumulatedArea, centerY / accumulatedArea);
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... he-polygon
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»