2017-08-14 2 views
1

J'ai écrit un programme pour afficher des mesures de pression. Je veux utiliser NURBS pour une visualisation détaillée. Donc, je me suis orienté vers enter link description hereUtiliser NURBS dans SharpGL

Mon champ a une plage de 40x48 carrés. Donc 40 lignes et 48 colonnes. Le composant Z (la hauteur) devrait être variable.

Mais je ne comprends pas comment définir

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. 

Je ne sais pas comment définir les paramètres dans mon cas. Par exemple, qu'est-ce que u1 et u2? OU quels sont mes points de contrôle?

Répondre

0

Dans ce lien, vous pouvez trouver une description plus détaillée des paramètres:

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

Dans votre direction de la surface X est donnée par u coordonnée et la direction Y est donnée par v coordonnée. Il est courant de mettre u1-u2 et v1-v2 à l'intervalle [0,1].

L'ordre de la surface est interpolé entre les points (vous pouvez faire une interpolation linéaire avec l'ordre = 1, interpolation quadratique avec ordre = 2 et ainsi de suite. 2 ou 3 devrait être ok pour vos besoins.

Avec cette dit, je crains que la méthode "glMap2f" ne représente pas précisément vos données car en général les "points de contrôle" ne sont pas sur la surface elle-même (comme illustré dans le suivant image)

Vous devez rechercher un algorithme pour interpoler une surface de nurbs à partir d'un nuage de points, puis utiliser glMap2f avec les points de contrôle calculés

Si vous voulez en savoir plus sur Nurbs, recherchez "Le livre Nurbs" de L. Piegl