кривые, представимые в OpenGL - PullRequest
1 голос
/ 31 октября 2011

Я новичок в разработке САПР и хочу узнать кое-что об OpenGL. Моя главная цель - представить коники, циклоиды, эпициклоиды, гипоциклоиды, эвольвенты и т. Д. Могу ли я непосредственно представить их, используя некоторую тригонометрию , или мне нужно преобразовать эти кривые в B-сплайн? На самом деле я сейчас занимаюсь разработкой ядра и хочу разработать ядро ​​так, чтобы я не мог отобразить вышеупомянутые кривые (нет смысла поддерживать эти кривые в ядре, если я не могу графически представить их!) Я не очень разбираюсь в OpenGL, поэтому прошу прощения, если мой вопрос действительно глупый! Я попытался выполнить поиск по здесь , но не смог найти ничего полезного.

Ответы [ 2 ]

4 голосов
/ 31 октября 2011

OpenGL может напрямую визуализировать кривые и поверхности Безье, используя оценщики и даже NURBS, используя GLU API. См. Руководство по программированию OpenGL для получения дополнительной информации. Таким образом, вы можете преобразовать эти кривые и поверхности в эту форму.

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

Вместо этого вы должны скорее реализовать свои собственные процедуры оценки для таких кривых и поверхностей, которые оценивают соответствующие уравнения с заданной частотой выборки и генерируют простой массив вершин (и, возможно, и индексный массив). Таким образом, вы остаетесь готовыми к будущему, поскольку их можно визуализировать как стандартные линейные полосы или треугольные сетки с использованием VBO (единственный способ визуализации чего-либо в современном OpenGL).

И вы даже не зависите от API, так как общий массив вершин также может быть визуализирован с использованием Direct3D или чего-либо еще. Таким образом, вы не загрязняете свое ядро ​​CAD вызовами отрисовки. Все, что ему нужно, - это функция для преобразования параметрических кривых и поверхностей в массивы вершин (и, возможно, индексы), а клиент / пользователь ядра отвечает за их отрисовку с любым API, который ему нравится.

3 голосов
/ 31 октября 2011

Если я не ошибаюсь, OpenGL работает только с плоскими полигонами. Несмотря на то, что вы можете проверить, есть ли в библиотеках GLUT какой-либо метод для рисования вышеупомянутых фигур, или Google для получения .obj этих фигур, а также масштабировать, поворачивать и переводить их в нужное положение.

...