2013-07-16 4 views
3

J'ai du mal à déchiffrer les paramètres individuels de la formule NURBS dans l'entrée NURBSTo de formes (utilisée pour les splines - arêtes incurvées). La documentation MS Visio n'a pas beaucoup aidé.Formule Visio NURBS

Le nombre de paramètres est variable en fonction de la complexité de la courbe. Un exemple plus simple:

NURBS(0.4492,3,0,1,0,-0.1875,0,1,1,-0.1875,0,1) 

où j'ai découvert les début et de fin paramètres de départ de coordonnées 5 X et 6 pour Y. End est 9 pour X et 10 pour Y. Mais les coordonnées Y sont encore mal , donc je suppose qu'ils devraient être combinés avec un autre paramètre. Ce code Java fourni les meilleurs résultats à ce jour à obtenir les points de contrôle de la spline:

int j = 0; 

for (int i = 2; i + 4 < pointsS.length; i = i + 4) 
{ 
    mxPoint currPoint = new mxPoint(); 
    currPoint.setX(startXY.getX() + (endXY.getX() - startXY.getX()) * pointsRaw[i + 2]); 
    currPoint.setY(startXY.getY() - (endXY.getY() - startXY.getY()) * pointsRaw[i + 3]); 
    pointList.add(currPoint); 
    j++; 
} 

Juste un exemple pour une spline plus complexe:

NURBS(2.9857,3,1,1,0.1875,0,0,1,0.1875,-0.8954,0,1,0.1875,-1.3431,0,1,0.1875,-1.7908,0.4521,1,-0.4936,-1.7908,1.049,1,-1.1747,-1.7908,1.424,1,-1.1747,-2.1799,1.902,1,-1.1747,-2.5689,2.3742,1) 

La documentation dit pour param 2 seulement « degré ". Je suppose que c'est le degré du polynôme qui est utilisé pour l'approximation.

La page wiki sur les NURBS: http://en.wikipedia.org/wiki/Non-uniform_rational_B-spline

Bien sûr, il ne parle pas de paramètres Visio :)

Répondre

2

Êtes-vous compte de l'effet troisième et quatrième paramètres ont sur la façon dont vous devez interpréter la Paramètres x et y?

De MSDN (http://msdn.microsoft.com/en-us/library/office/aa224197(v=office.11).aspx):

NURBS (knotLast, degré, xType, yType, x1, y1, knot1, weight1, ...)

knotLast Le dernier nœud.

degré Le degré de la spline.

xType Spécifie comment interpréter les données d'entrée x. Si xType est 0, toutes les données d'entrée x sont interprétées comme un pourcentage de Width. Si xType est 1, toutes les données d'entrée x sont interprétées comme des coordonnées locales. YType Spécifie comment interpréter les données d'entrée y. Si yType est 0, toutes les données d'entrée y sont interprétées comme un pourcentage de Height. Si yType est 1, toutes les données d'entrée y sont interprétées comme des coordonnées locales.

x1 Une coordonnée x.

y1 Une coordonnée y.

nœud 1 Un nœud sur la B-spline.

poids1 Un poids sur la B-spline.

+0

Oui Mike et même ce n'est pas exactement comme indiqué dans la documentation. –