转n进制B样条成二次或三次B样条的一个序列
题
我做(所有的C#操作系统之间的关联体),用于MOSA一些TTF工作。我和科林烧伤目前正在得到一些TTF代码工作。(少了我这些天:) - 他取得了很大的进步)
在任何情况下,TTF规范允许的控制点的任意量的“句柄”之间和喘气否处理在所有(在TTF具有圆形的证明它的一个例子 - 做得好白痴 - 保存10个字节)
。谁能给我如何可以这样做的指针?我看了看维基百科上的文章贝塞尔曲线,但它是不是真的那么多的帮助 - 他们表现出它的发生,但不给任何数学。什么“程序”做好准备,将有助于(我的积分是不应该的) - 一些伪什么
由于球员。
其他提示
从在维基百科文章贝塞尔,具有一定的实用微积分知识,你可以翻译公式类似以下伪C#代码列表中的计算机程序。我与二次齿条做,但很容易转换为另一种。
// Quadratic spline, with three given points
// B(t) = (1-t)^2P(0) + 2*tP(1) + t^2P(2)
// where T is a real number in the interval [0, 1]
public void DrawQuadSpline(Point p0, Point p1, Point p2, int steps)
{
Point next = p0;
Point previous = p0;
double tStep = 1 / ((float) steps);
double t = 0;
for (int i = 0; i < steps; i++)
{
float x = CalculateQuadSpline(P0.x, P1.x, P2.x, t);
float y = CalculateQuadSpline(P0.y, P1.y, P2.y, t);
Point next = new Point(x, y);
drawLine(previous, next);
previous = next;
t = t + tStep;
}
}
private void CalculateQuadSpline(float z0, float z1, float z2, float t)
{
return (1.0-t)*(1.0-t)*z0 + 2.0*t*z1 + t*t*z2;
}
这可能需要一些调整,因为我已经只在Java这样做之前,但是这基本上它。
不隶属于 StackOverflow