[identity profile] egor-13.livejournal.com posting in [community profile] useful_faq
..А может, стандартная (для математика-тополога), но я просто об этом не знаю?
В общем, так. Как известно, если некую фигуру вырезать из бумаги и подвесить сперва за любую точку, а потом за другую, то две линии, проведенные от точки подвешивания отвесно, пересекутся в ее центре тяжести.
А можно ли рассчитать ту же самую точку, в которой окажется центр тяжести, не вырезая и не подвешивая? То есть: имеется многоугольник (неправильной конфигурации, но внутри которого все углы меньше 180 градусов) - как можно рассчитать (и можно ли вообще) центр этого многоугольника по координатам его вершин, если он построен на обычной координатной сетке?

Date: 2007-04-10 11:26 am (UTC)
From: [identity profile] artemis-r.livejournal.com
РИсунок не могу. Попробуйте так. Берете любую прямую и через все углы многоугольника проводите параллельные прямые. Середины этих отрзков представляют собой ломаную.
Потом берете вторую линию - и тоже через все вершины проводите параллели и рисуете вторую ломаную.
На пересечении центр тяжести.

Date: 2007-04-10 01:13 pm (UTC)
From: [identity profile] artemis-r.livejournal.com
Единой формулы, естественно, не существует, т.к. у нас речь идет о ломаной и отрезках.
Но алгоритм такой.
Допустим, у нас есть вершины А1 (x1,y1), A2(x2,у2) и т.д.
1. Рассчитаем стороны многоугольника. Каждый отрезок задается
а) уровнением прямой, проходящей через 2 соседние вершины, для этого надо решить систему уравнений типа
Yn = K*Xn + B
Yn+1 = K*Xn+1 + B
, получаем K=(Yn - Yn+1)/(Xn - Xn+1) В = Yn - Xn*(Yn - Yn+1)/(Xn - Xn+1)
в результате получаем уравнение Y = (X-Xn)*(Yn - Yn+1)/(Xn - Xn+1) + Yn

б) неравенствами, ограничивающими занчения Х и Y между соответствующими координатами вершин. Например, Xn <= X <= Xn+1

2. Проводим сначала через все вершины прямые, параллельные оси ОХ - y=y1, y=y2 и пр.

3. Сравниваем полученные прямые с неравенствами для сторон. Там, где значение y попадает в нужный интервал - рассчитываем кординату пересечения прямой ( Y = Ym) со стороной. ДЛя этого нужно решить уравнение:
Ym = (X-Xn)*(Yn - Yn+1)/(Xn - Xn+1) + Yn
Получим точку с координатами Х=(Xn - Xn+1)*(Ym-Yn)/(Yn - Yn+1) + Xn.

4. Далее, находим середины отрезков между точкой пересечения со стороной и вершиной, из которой опущена прямая.

5. Далее проводим чере5з вершины линии типа X=XmЮ и аналогично находим медианы.





Date: 2007-04-10 01:30 pm (UTC)
From: [identity profile] yokkavi.livejournal.com
А если взять среднее арифметическое координат всех вершин по Х и потом ср ар координат по Y не получится той же точки?.....

Date: 2007-04-10 01:35 pm (UTC)
From: [identity profile] yokkavi.livejournal.com
ух ты, акая глупость...=Р

Date: 2007-04-10 02:52 pm (UTC)
From: [identity profile] yokkavi.livejournal.com
Нее... Здесь получится только с симметричными фигурами, кажется... А вот со среднем геометрическим... Отпишитесь обязательно!