2015-12-16 6 views
2

Для равномерного распределения точек на единичной сфере в answer используется спираль Фибоначчи, которая поддерживает постоянную площадь поверхности.Равномерно распределить точки на полушарии юнита

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

cos_theta = abs(((i * offset) - 1) + (offset/2)) 

не работает, поскольку, похоже, кластер точек попарно.

+1

см. [Сфера триангуляции] (http://stackoverflow.com/a/29139125/2521214) просто запустите сетку с ее половиной. также связанный Q/A предоставляет дополнительные методы для решения этой проблемы ... – Spektre

+0

@ Сфера триангуляции сферы также является опцией, которую я рассматривал, ее легче рассуждать, но накладные расходы на тесселирование сферы больше. – Matthias

+1

Есть также 2 ссылки (http : //stackoverflow.com/a/25031737/2521214) с другим подходом, похожим на ваш, но без спирали, использующим сферические координаты и окружность круга ... – Spektre

ответ

2

y значения петли из -1+1/samples в 1-1/samples с помощью петли for:

for i in range(samples): 
    y = ((i * offset) - 1) + (offset/2) 

Вы хотите петлю от 0+1/samples к 1-1/samples. Просто пропустите первые sample/2 итераций:

for i in range(samples/2, samples): 
    y = ((i * offset) - 1) + (offset/2) 

Конечно, это пылесос Перепишет теперь выражения немного, так что вы цикл от 0 к samples' снова, но это должно быть хорошей отправной точкой для более рефакторинг.

 Смежные вопросы

  • Нет связанных вопросов^_^