Как равномерно покрыть шар точками

программирование математика наука геометрия алгоритмы

Нужно равномерно покрыть шар точками сколь сколь угодно большой плотности.

Я думаю что задача понятна.

Примечание:
1-ая идея построить развертку шара. Типо как глобусы рисуют ( такие апельсиновые дольки ). Наложить развертку на равномерную сетку, а потом обратно свернуть.
Вопрос остается: как построить такую развертку и как обратно свернуть.

Примечание:
количество точек - параметр переменный, их больше 1000, поэтому все гладко. Радиус шара можно считать 1

Примечание:
допущения вида:

тогда их кол-во должно быть четным и кратным 6

допускаются

Примечание:
Я остановлюсь на методе типа Монте-Карло.

Примечание:
2) А если взять три независимых распределения, скажем нормальных
Если получился нулевой вектор то повторяем эксперимент.
Если все хорошо нормируем полученный вектор а потом нормируем.
А потом опять повторяем эксперимент?

Примечание:
вопрос: а там не будет каких либо скоплений в мат ожидании?

Примечание:
3) можно сделать так:
Провести ось (центральная ось) через мнимые полюса.
Строим единичный вектор, который мы определим двумя параметрами. а) угол вокруг этой центральной оси. б) длина проекции (может быть отрицательной величиной) на центральную ось.

угол выбирается по равномерному распределению.
длина проекции выбирается по распределению, плотность которого пропорциональна длине окружности лежащей в плоскости перпендикулярно оси и проходящей через конец искомого вектора.

Я дам лучший ответ тому кто разберется, что я написал, и докажет, что данное решение дает равномерное распределение. =)

ЗЫ: если что не понятно пишите. Вопрос я не закрываю, поскольку тема интересная. Интересно также найти решение не относящиеся к типу Монте-Карло.

И еще, извините что я сам ответил на первоначальный вопрос. Такой я.

Примечание:
ты кто? напиши мне. Я тебя знаю?

Примечание:
imit2010 wrote:

2. Если угол задан, то длина проекции известна - ее нельзя выбирать в качестве "параметра". Таким параметром должен по идее стать угол относительно второй "центральной оси" - это называется полярные координаты в трехмерном пространстве.

Угол выбирается вокруг оси а, не от нее и вращается от 0 до 2пи. Второй параметр я выбрал проекцией только для удобства. Если выбрать угол наклона к оси. то будут сферические координаты.

Примечание:
gaosipov wrote:
Шар, или сферу??
---------------------------------------------------------
- покрыть подразумевает поверхность.


gaosipov wrote:
Если методом Монте Карло, то разумеется, надо брать не нормальные распределения. Надо так: Перейти в полярную сферическую систему координат. ТАм точка на сфере задаётся двумя углами. Берёте две РАВНОМЕРНЫХ на отрезке (0,2pi) независимых случ. величины и это и будут углы.
---------------------------------------------------------
В таком случае будут скопления на "полюсах".

gaosipov wrote:
Если шар, то сложнее
---------------------------------------------------------
Шар заполнять точками очень легко. берете одну из моделей заполнения пространства шарами. затем выбирая их центры в качестве искомых точек
Ответы:
> Я думаю что задача понятна.
ну а решение где тогда?
зависит от кол-ва точек и радиуса шара =)
тогда их кол-во должно быть четным и кратным 6 =)
"... 1-ая идея построить развертку шара. Типо как глобусы рисуют ( такие апельсиновые дольки ). Наложить развертку на равномерную сетку, а потом обратно свернуть. Вопрос остается: как построить такую развертку и как обратно свернуть. ..."
Я думаю, термин "равномерно покрыть" остался не раскрыт.
Почему-то первым делом на ум пришли вершины вписанного в сферу правильного многогранника (т.е. расстояние между любыми ближайшими точками - постоянно, и равно ребру многогранника), но в таком случае количество решений задачи можно пересчитать на пальцах.
Вариант другой - разбивать сферу на "прямоугольные" сектора равной площади. В таком случае нужно вычислить ограничение на количество точек (что-то вроде 1+2kn+1, где п-целое) и делить площадь сферы на количество "прямоугольников". Получив площадь каждого из них, можно рассчитать координаты точек. (тут и геометрия Лобачевского может пригодиться)
Можно наверное и еще вариантов "равномерного покрытия" предложить.
> данное решение дает равномерное распределение
1. Естественно! Если его и принять за определение равномерного распределения.
> Строим единичный вектор, который мы определим двумя параметрами. а) угол вокруг этой центральной оси. б) длина проекции (может быть отрицательной величиной) на центральную ось.
2. Если угол задан, то длина проекции известна - ее нельзя выбирать в качестве "параметра". Таким параметром должен по идее стать угол относительно второй "центральной оси" - это называется полярные координаты в трехмерном пространстве.
произвольно накидать точки на сферу и применить какую-нибудь физическую модель. Например, основанную на электростатике/магнетизме: две точки отталкиваются с силой, обратно пропорциональной квадрату расстояния (или модификации). Промоделировать несколько итераций.
Шар, или сферу??
> Угол выбирается вокруг оси а, не от нее и вращается от 0 до 2пи
Ок, с этим понятно.
Дальше полагаю нужно подключить теорию вероятностей. Зная мат. ожидание (должно быть равно нулю), и z, как функцию от x,y (или от угла вокруг оси), можно попробовать восстановить функцию распределения вероятности z-координаты.
Ну или попробовать просто поделить корень из 1/(sin+cos) на R это поправка на "сжатие" окружностей в плоскости, перпендикулярной оси.
Берем равномерное распределение величины z1, домножаем на коэффициент "сжатия" окружности и получаем распределение величины z, причем оно также останется равномерным (т.к. z и z1 связаны линейно)
>Шар заполнять точками очень легко. берете одну из моделей заполнения пространства шарами. затем выбирая их центры в качестве искомых точек
Нельзя заполнить пространство конечным числом шаров. А с равными радиусами и бесконечным нельзя. Но с шаром действительно проще: просто три равномерных случ. величины, координаты x, y, z. Если не попали в шар, то игнорируем.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.