我很难在形状 NURBSTo 条目(用于样条曲线 - 弯曲边缘)中破译 NURBS 公式的各个参数。MS Visio 文档并没有太大帮助。
参数的数量是可变的,取决于曲线的复杂性。一个更简单的例子是:
NURBS(0.4492,3,0,1,0,-0.1875,0,1,1,-0.1875,0,1)
我发现开始和结束坐标参数 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 参数 :)