シェイプ NURBSTo エントリ (スプラインに使用 - カーブしたエッジ) の NURBS 式の個々のパラメータを解読するのに問題があります。MS Visio のドキュメントはあまり役に立ちませんでした。
パラメータの数は、曲線の複雑さに応じて変化します。より簡単な例は次のとおりです。
NURBS(0.4492,3,0,1,0,-0.1875,0,1,1,-0.1875,0,1)
ここで、start と end の座標パラメーター start は X が 5 番目、Y が 6 番目であることがわかりました。end は X が 9 番目、Y が 10 番目です。しかし、Y 座標はまだ間違っているので、別のパラメーターと組み合わせる必要があると思います。この Java コードは、スプラインの制御点を取得する上で、これまでのところ最高の結果を提供しています。
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++;
}
より複雑なスプラインの例:
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)
ドキュメントには、パラメーター 2 のみが「度」と記載されています。近似に使用されるのは多項式の次数だと思います。
NURBS に関する wiki ページ: http://en.wikipedia.org/wiki/Non-uniform_rational_B-spline
もちろん、Visio パラメータについては触れていません :)