Используйте NURBS в SharpGL

Я написал программу для отображения некоторых измерений давления. Я хочу использовать NURBS для визуализации деталей. Так что я сориентировал меня ввести описание ссылки здесь

Мое поле имеет диапазон 40х48 квадратов. Итак, 40 строк и 48 столбцов. Компонент Z (высота) должен быть переменным.

Но я не понимаю, как определить

glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &ctrlpoints[0][0][0]);

// Parameter:
        //   target:
        //     What the control points represent (e.g. MAP2_VERTEX_3).
        //
        //   u1:
        //     Range of the variable 'u'.
        //
        //   u2:
        //     Range of the variable 'u.
        //
        //   ustride:
        //     Offset between beginning of one control point and the next.
        //
        //   uorder:
        //     The degree plus one.
        //
        //   v1:
        //     Range of the variable 'v'.
        //
        //   v2:
        //     Range of the variable 'v'.
        //
        //   vstride:
        //     Offset between beginning of one control point and the next.
        //
        //   vorder:
        //     The degree plus one.
        //
        //   points:
        //     The data for the points.

Я не знаю, как установить параметры в моем случае. Например, что такое u1 и u2? ИЛИ каковы мои контрольные точки?

1 ответ

В этой ссылке вы можете найти более подробное описание параметров:

https://msdn.microsoft.com/en-us/library/windows/desktop/ee872053(v=vs.85).aspx

На вашей поверхности направление X задается координатой u, а направление Y задается координатой v. Обычно для u1-u2 и v1-v2 устанавливается интервал [0,1].

Порядок поверхности интерполируется между точками (вы можете выполнить линейную интерполяцию с порядком =1, квадратичную интерполяцию с порядком =2 и т. Д. 2 или 3 должны подойти для ваших нужд.

С учетом сказанного, я боюсь, что метод "glMap2f" не будет точно представлять ваши данные, так как в целом "контрольные точки" не находятся на самой поверхности (как показано в следующем образ)

Вы должны найти алгоритм для интерполяции поверхности nurbs из облака точек, а затем использовать glMap2f с вычисленными контрольными точками.

Если вы хотите узнать больше о Nurbs, ищите "Книгу Nurbs" от L. Piegl

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