我在解密shapes 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的维基页面:http://en.wikipedia.org/wiki/Non-uniform_rational_B-spline
当然,它并不涉及Visio参数:)
发布于 2013-07-17 09:43:31
您是否考虑到第三个和第四个参数对您应该如何解释x和y参数的影响?
来自MSDN (http://msdn.microsoft.com/en-us/library/office/aa224197(v=office.11).aspx
NURBS(knotLast、degree、xType、yType、x1、y1、knot1、weight1等)
knotLast是最后一个结。
阶数样条线的阶数。
xType指定如何解释x输入数据。如果xType为0,则将所有x输入数据解释为宽度的百分比。如果xType为1,则所有x输入数据都被解释为局部坐标。
yType指定如何解释y输入数据。如果yType为0,则所有y输入数据都被解释为高度的百分比。如果yType为1,则所有y输入数据都被解释为局部坐标。
x1一个x坐标。
y1 a y坐标。
knot1 B样条曲线上的一个结。
weight1 B样条线上的权重。
发布于 2013-07-24 18:46:02
这可能会有所帮助: Graham Wideman提供的Visio2003开发者生存包
http://www.amazon.com/Visio-2003-Developers-Survival-Pack/dp/1412011124
有一个关于Visio NURBS的广泛的章节。Kindle版的售价只有7美元。
https://stackoverflow.com/questions/17672267
复制相似问题