Как найти центр масс?

dukkin

дан массив координат и масс для N точек
как найти центр масс?
на плоскости, но идеально для поверхности Земли (может какая программка по широте-долготе считает?)
В какой-то программе посчитать можно?

demiurg

[math]$\frac{\sum m_i x_i}{\sum m_i}$[/math] — для каждой координаты, если пространство без кривизны.
Если на поверхности Земли, то поскольку ты всё равно делаешь на компе, и ему пофиг, то пересчитай сначала широту и долготу в трёхмерные координаты, а потом центр масс обратно.

blackout

А центр масс то внутри Земли будет (если массы положительные так что нужно еще глубину считать :)

seeknote

и?
широта и долгота + радиус земли - всего три координаты

blackout

и?
широта и долгота + радиус земли - всего три координаты
и?

seeknote

А центр масс то внутри Земли будет (если массы положительные так что нужно еще глубину считать
эта придирка вообще мимо кассы - зачем ты ее написал?

dukkin

то есть можно посчитать отдельно по широте и долготе? если пренебречь кривизной земли?
а если не пренебрегать, то как пересчитать в трехмерные координаты?

Vlad128

о есть можно посчитать отдельно по широте и долготе? если пренебречь кривизной земли?
а если не пренебрегать, то как пересчитать в трехмерные координаты?
любой учебник матана, даже можно школьный учебник по математике найти, где это написано. Гугли сферические координаты.

Suebaby

то есть можно посчитать отдельно по широте и долготе? если пренебречь кривизной земли?
если пренебречь — то да.
а если не пренебрегать, то как пересчитать в трехмерные координаты?
z=R*cos(phi)*cos(lambda y=R*cos(phi)*sin(lambda z=R*sin(phi где phi — широта, lambda — долгота, R — радиус земли
когда будешь обратно переводить, то phi=arctg(z/sqrt(x^2+y^2 lambda=2*arctgsqrt(x^2+y^2)-x)/y r=sqrt(x^2+y^2+z^2)
r — расстояние до центра земли.

dukkin

круто
спасибо!

Vlad128

Вот ты не ленивый, а
Ладно еще первые формулы, но вторые ведь гуглил или на бумажке выписывал.
Пропаганда неюзанья поиска (с)

Suebaby

Ладно еще первые формулы, но вторые ведь гуглил или на бумажке выписывал.
я давно думал о том, что должна быть нормальныая формула для lambda(x,y не lambda=arctg(y/x). Решил, что это повод её найти. Нашёл, кстати, на бумажке, а в интернетах только лажовая. Подумываю о том, чтобы первый раз в жизни внести правку в википедию.
Ну а на самом деле я ленивый: неленивый бы затехал. А скорее даже вообще не стал бы просиживать на форуме штаны.

Vlad128

не стал бы просиживать на форуме штаны
вот факт =(

vvasilevskiy

Да, и учти что центр масс и центр тяжести это разные вещи

dukkin

там перед -х знак деления не лишний?

Vlad128

нормальныая формула для lambda(x,y не lambda=arctg(y/x)
Не вижу преимуществ твоей (не проверял ее, кстати, допустим она для некоторых углов дает то, что нужно).

Suebaby

Не вижу преимуществ твоей
преимущество в том, что она верная. Общепринятая, очевидно, даст только углы от -Pi/2..Pi/2.

Vlad128

преимущество в том, что она верная. Общепринятая, очевидно, даст только углы от -Pi/2..Pi/2.
Ну как минимум, она вычислительно заметно сложнее, это раз. И в ней все равно есть вырожденность (деление на ноль которую надо обработать отдельно. Обычно все же пользуются общепринятой, проверяя дополнительно знаки и подгоняя угол в нужную четверть. А в большинстве стандартных библиотек есть функция atan2 для этих целей (выдает угол в диапазоне -Pi..Pi).
Если же говорить о решении просто задач методом карандаша и бумаги, то там твоя формула тоже не выдерживает конкуренции. Мне кажется, она имеет только какую-то сомнительную эстетическую ценность, типа указывает явно преобразование.

toxin

в большинстве стандартных библиотек есть функция atan2
Я бы сказал в большинстве процессоров, используемых в компьютерах, есть команда atan2.

nzotova

Ну а на самом деле я ленивый: неленивый бы затехал. А скорее даже вообще не стал бы просиживать на форуме штаны.
- поставил тебе чисто за эту фразу плюсик. Формулы чиать не стал - ибо лень!
Оставить комментарий
Имя или ник:
Комментарий: