#geometry #computational-geometry
#геометрия #вычислительная геометрия
Вопрос:
Я хотел бы создать таблицу поиска для единичных векторов. Каждый единичный вектор будет отображаться в ячейку в этой таблице, и ячейка будет содержать некоторую информацию для небольшого набора векторов с одинаковыми направлениями.
Я мог бы легко представить вектор, используя ($ theta $, $ phi $, 1), а затем разделить диапазоны углов на ячейки, чтобы создать таблицу поиска 2D (таким образом, первая ячейка — это тета в диапазоне от 0 до $ 2 * pi / N $, где N -количество ячеек, которые я хочу для тета-направления). Проблема в том, что я думаю, что некоторые ячейки будут представлять большие области на поверхности единичной сферы, чем другие, и я хотел бы получить области примерно одинакового размера.
Я ошибаюсь, полагая, что равномерное разделение диапазона углов сделает некоторые ячейки больше, чем другие? Если нет, кто-нибудь знает лучший способ создания этой справочной таблицы?
Я нашел несколько статей и презентаций, подобных этой, но я не собираюсь лгать, я этого не понимаю (я слышал о мере Лебега, но будь я проклят, если знаю, что это значит), и в любом случае это не выглядит особенно многообещающим.
Комментарии:
1. Вы также собираетесь разделить угол phi на количество ячеек?
2. Можете ли вы дать некоторое представление о том, что вы могли бы сделать с этой справочной таблицей? Это может помочь нам предложить полезные решения.
3. @Евгений. Чернобривец Да, таков был план.
4. @CodieCodeMonkey Существует ряд поворотов, которые приемлемы для продолжения моего алгоритма, и я пытаюсь оптимизировать проверку правильности вращения. Один из способов, который я хотел бы попробовать, — это предварительно вычислить эту таблицу поиска, в которой указано, содержит ли каждая ячейка нормали, которые находятся в пределах диапазона. Поиск — это просто сопоставление векторов X и Y с помощью поворота кандидата и проверка того, что они оба «хороши» (должно быть две таблицы поиска, одна для X и одна для Y).
5. Единичная сфера гомеоморфна простым многогранникам. Можете ли вы определить ячейку как набор векторов, которые пересекают одну из граней многогранников (где многогранник центрирован в центре вашей сферы)? Вы могли бы начать с тетраэдра и подразделять по мере необходимости.
Ответ №1:
Если вы разделите долготу на N
сегменты равного размера, то для получения доменов равной площади на единичной сфере вам понадобятся «неравномерные» сегменты вдоль измерения широты. Площадь сферического сегмента между двумя линиями постоянной широты (параллелями) зависит только от «высоты», то есть длины проекции сегмента на вертикальную ось. Это означает, что если вы разделите вертикальную ось на части равной длины, то вы разделите сферу на домены равной площади.
Суть в том, что следующие N*M
домены имеют равные площади:
2*k*pi/N < longitute < 2*(k 1)pi/N
,k=0...N-1
-1 2*j/M < sin(latitude) < -1 2*(j 1)/M
,j=0...M-1
Комментарии:
1. Спасибо, это выглядит великолепно!