Вот трехэтапный подход. 1a) Сделайте больше очков, чем вам нужно. 1b) Удалите некоторые. 2) Отрегулируйте остальные.
1a) Чтобы сделать больше очков, которые вам нужны, возьмите любой квазирегулярный многогранник со сторонами, которые тесселят (треугольники, квадраты, бриллианты). Тесселируйте сферические градиенты по подразделу, создавая больше вершин. Например, если вы используете обычный икосаэдр, вы получаете геодезические купола. (Подразделение на 2, вы получаете двойное значение C buckyball.) Разработка точных формул не является трудной. Число новых вершин на лице квадратично в разбиении.
1b) В случайном порядке удалите достаточное количество баллов, чтобы свести вас к целевому номеру.
2) Используйте алгоритм force-directed layout, чтобы перераспределить вершины над сферой. График базовой силы - это тот, который предоставляется ближайшими соседями в вашей базовой тесселяции.
Есть и другие способы сделать шаг 1), например, просто генерирование случайных точек в любом распределении. Однако есть преимущество начинать с квазирегулярной фигуры. В некоторых случаях алгоритмы с принудительной ориентацией имеют репутацию плохой конвергенции. Начав с чего-то, что уже в основном является оптимальным, вы обойдете большинство всех проблем конвергенции, которые могут возникнуть у вас.
Вы ищете что-то в этом роде: https://sites.google.com/site/dlampetest/python/triangulating-a-sphere-recursively? –
Да .. Хотя я * не думаю *, он работает для произвольного количества точек. Я могу просто сделать полярный, так как это легко –
Да, количество точек не произвольно, и я думаю, что невозможно охватить любую сферу с одинаковыми треугольниками. –