3

我很难在形状 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 参数 :)

4

2 回答 2

2

您是否考虑了第三个和第四个参数对您应该如何解释 x 和 y 参数的影响?

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

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

结Last 最后一个结。

degree 样条曲线的度数。

xType 指定如何解释 x 输入数据。如果 xType 为 0,则所有 x 输入数据都被解释为宽度的百分比。如果 xType 为 1,则所有 x 输入数据都被解释为局部坐标。

yType 指定如何解释 y 输入数据。如果 yType 为 0,则所有 y 输入数据都被解释为高度的百分比。如果 yType 为 1,则所有 y 输入数据都被解释为局部坐标。

x1 x 坐标。

y1 y 坐标。

结 1 B 样条上的结。

weight1 B 样条上的权重。

于 2013-07-17T01:43:30.620 回答
0

这可能会有所帮助:Graham Wideman的 Visio 2003 Developer's Survival Pack

http://www.amazon.com/Visio-2003-Developers-Survival-Pack/dp/1412011124

Visio NURBS 有一个广泛的部分。Kindle 版只需 7 美元。

于 2013-07-24T10:46:02.010 回答