Визуализация "среза" сферы в Java - эффективность

Я пытаюсь сделать полушарие в Java. Тем не менее, я хочу визуализировать срез, который определяется двумя углами - Азимут и Высота. Поскольку я определяю срез, я не могу (насколько мне известно) использовать какие-либо встроенные примитивы. Если азимутальный диапазон определен как 0-360, а диапазон возвышения определен как 0-70, это будет полусфера с перевернутым конусообразным отверстием вверху.

При рендеринге внутри "конуса" я выбрал треугольники с шагом 5 градусов. Это означает, что с 360-градусным конусом есть 73 различных вершины (если я правильно сделал математику: срезы на 360/5 градусов с началом или концом конуса, совместно используемым со всеми сторонами, и все другие вершины, совместно используемые смежными треугольными срезами)

Мой вопрос:
Является ли более эффективным рендеринг в виде одного многоугольника с множеством вершин или с множеством треугольников только с 3 вершинами в каждом. Если я сделаю один полигон, мне все равно придется включать все три точки для каждого треугольника или, если это общая вершина, я бы включил ее только один раз? Извините, мои знания о графике ограничены. Также извините за то, что так многословен; Я надеюсь, что кто-то может обнаружить что-то ошибочное в моем мыслительном процессе, которое может прояснить ситуацию в любом случае.

1 ответ

Решение

Первый - используйте Google, чтобы найти алгоритм для создания сферы, которая не является примитивной.

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

Я подумал еще об этом и решил исправить этот ответ. Есть два способа создать полигон в openGL. Вы можете создать его в виде треугольной сетки или контурного многоугольника. Поэтому, если вы спрашиваете "Должен ли я использовать треугольную сетку или контурный многоугольник", я бы сказал, используйте треугольную сетку. Гораздо проще разбить треугольную сетку, чем контур многоугольника, поскольку, чтобы разорвать сетку, все, что вам нужно сделать, это просто остановиться на одной из точек, включить последние две точки в новый объект и продолжить вниз по треугольной сетке. Контурный многоугольник требует, чтобы вы обошли многоугольник влево и вправо, чтобы найти две точки, где происходит разрыв. Если это ясно. Если не сказать так.

Обновление: 12:05. При создании многоугольника вы можете использовать треугольную сетку или контур многоугольника. Контур в основном хорош для 2D, тогда как треугольная сетка работает как в 2D, так и в 3D системах. Если у вас есть какой-либо тип многоугольника, размер которого превышает три точки, то лучше всего поместить их все в массив. Это позволяет вам использовать встроенные подпрограммы, которые берут массив и просто проходят через него, чтобы построить свой многоугольник. Помещая все в массив, вы также облегчаете себе добавлять новые точки или удалять точки или корректировать точки. Все, что вам нужно сделать, это изменить запись массива, а затем вызвать ту же самую процедуру, чтобы нарисовать все заново. (Который должен быть только один вызов функции.)

Другие вопросы по тегам