![[identity profile]](https://www.dreamwidth.org/img/silk/identity/openid.png)
![[community profile]](https://www.dreamwidth.org/img/silk/identity/community.png)
..А может, стандартная (для математика-тополога), но я просто об этом не знаю?
В общем, так. Как известно, если некую фигуру вырезать из бумаги и подвесить сперва за любую точку, а потом за другую, то две линии, проведенные от точки подвешивания отвесно, пересекутся в ее центре тяжести.
А можно ли рассчитать ту же самую точку, в которой окажется центр тяжести, не вырезая и не подвешивая? То есть: имеется многоугольник (неправильной конфигурации, но внутри которого все углы меньше 180 градусов) - как можно рассчитать (и можно ли вообще) центр этого многоугольника по координатам его вершин, если он построен на обычной координатной сетке?
В общем, так. Как известно, если некую фигуру вырезать из бумаги и подвесить сперва за любую точку, а потом за другую, то две линии, проведенные от точки подвешивания отвесно, пересекутся в ее центре тяжести.
А можно ли рассчитать ту же самую точку, в которой окажется центр тяжести, не вырезая и не подвешивая? То есть: имеется многоугольник (неправильной конфигурации, но внутри которого все углы меньше 180 градусов) - как можно рассчитать (и можно ли вообще) центр этого многоугольника по координатам его вершин, если он построен на обычной координатной сетке?
no subject
Date: 2007-04-10 10:28 am (UTC)Проводите любую прямую, затем проводите медианную линию ( в случае многогранника это будет ломаная) через середины отрезков, ограниченных многогшранником и параллельных исходной линии.
Потом проводите другую прямую, в другом направлении, и еще одну медиану. Центр тяжести на пересечении медиан.
no subject
Date: 2007-04-10 10:31 am (UTC)no subject
Date: 2007-04-10 11:26 am (UTC)Потом берете вторую линию - и тоже через все вершины проводите параллели и рисуете вторую ломаную.
На пересечении центр тяжести.
no subject
Date: 2007-04-10 11:58 am (UTC)no subject
Date: 2007-04-10 11:59 am (UTC)no subject
Date: 2007-04-10 12:07 pm (UTC)no subject
Date: 2007-04-10 01:13 pm (UTC)Но алгоритм такой.
Допустим, у нас есть вершины А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Ю и аналогично находим медианы.
no subject
Date: 2007-04-10 01:14 pm (UTC)no subject
Date: 2007-04-10 01:30 pm (UTC)no subject
Date: 2007-04-10 01:35 pm (UTC)no subject
Date: 2007-04-10 01:43 pm (UTC)Но уже не сегодня.
no subject
Date: 2007-04-10 01:42 pm (UTC)no subject
Date: 2007-04-10 02:52 pm (UTC)no subject
Date: 2007-04-10 12:01 pm (UTC)no subject
Date: 2007-04-10 12:05 pm (UTC)no subject
Date: 2007-04-10 12:12 pm (UTC)no subject
Date: 2007-04-10 12:17 pm (UTC)no subject
Date: 2007-04-10 12:07 pm (UTC)no subject
Date: 2007-04-10 12:10 pm (UTC)no subject
Date: 2007-04-10 12:12 pm (UTC)no subject
Date: 2007-04-10 12:23 pm (UTC)Всё получится)
моменты от частей фигуры справа и слева от некоей линии должны быть равны. Задача-найти координату линии. Одну линию пускаете параллельно оси Х, вторую- параллельно при У. Пересечение-центр тяжести.
Круто?:-)
no subject
Date: 2007-04-10 12:26 pm (UTC)no subject
Date: 2007-04-10 01:17 pm (UTC)no subject
Date: 2007-04-10 01:19 pm (UTC)no subject
Date: 2007-04-10 01:25 pm (UTC)no subject
Date: 2007-04-11 02:11 pm (UTC)no subject
Date: 2007-04-12 04:03 am (UTC)