我做(所有的C#操作系统之间的关联体),用于MOSA一些TTF工作。我和科林烧伤目前正在得到一些TTF代码工作。(少了我这些天:) - 他取得了很大的进步)

在任何情况下,TTF规范允许的控制点的任意量的“句柄”之间和喘气否处理在所有(在TTF具有圆形的证明它的一个例子 - 做得好白痴 - 保存10个字节)

谁能给我如何可以这样做的指针?我看了看维基百科上的文章贝塞尔曲线,但它是不是真的那么多的帮助 - 他们表现出它的发生,但不给任何数学。什么“程序”做好准备,将有助于(我的积分是不应该的) - 一些伪什么

由于球员。

有帮助吗?

解决方案

我做了一些挖掘并发现了一些算法的TTF在这个网站在这里

其他提示

在维基百科文章贝塞尔,具有一定的实用微积分知识,你可以翻译公式类似以下伪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这样做之前,但是这基本上它。

好,它看起来像TTF轮廓被定义为二次B样条。

有,你要熟悉两种算法。

首先是经由节点插入贝塞尔萃取。这将让你二次贝塞尔段。然后,你要度提升每个贝塞尔曲线段得到生成立方体。

我使用的主要参考是我CAGD类的教科书,这是在网上。贝塞尔提取被覆盖在 6.3节。 Bezier曲线的程度高程被覆盖在 2.4节。让我知道如果你有任何问题..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top