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

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

Мое поле имеет диапазон 40x48 квадратов. Итак, 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? ИЛИ что такое мои контрольные точки?


person Tim1603    schedule 14.08.2017    source источник


Ответы (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» не будет точно отображать ваши данные, так как обычно «контрольные точки» не находятся на самой поверхности (как показано в следующем image)

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

Если вы хотите узнать больше о Нурбах, поищите «Книгу Нурбов» Л. Пигля.

person leandro    schedule 24.08.2017