Frage

Ich tue etwas TTF Arbeit für MOSA (das Korrelieren Körper zwischen allen C # Betriebssysteme). Me and Colin Brennen gerade arbeiten daran gedacht einen TTF-Code zu arbeiten. (Weniger ich in diesen Tagen :) - er große Fortschritte gemacht)

In jedem Fall erlaubt die TTF-Spezifikation für eine beliebige Menge von Kontrollpunkten zwischen den ‚Griffe‘ und Keuchen keine Griffe an allen (die TTF ein Beispiel eines Kreises hat es demonstriert - gut gemacht Idioten - gespeichert Sie 10 Byte)

.

Kann jemand mir einen Zeiger auf, wie dies geschehen könnte? Ich schaute auf die Bezier-Artikel auf Wikipedia, aber es war nicht wirklich so viel Hilfe - sie zeigen es geschieht, aber geben keine Mathematik. Etwas ‚Programm‘ bereit helfen würde (mein Kalkül ist nicht das, was es sein sollte.) - einig Pseudo-Code oder etwas

Danke Jungs.

War es hilfreich?

Lösung

ich einige graben tat und fand einige Algorithmen für die TTF spec über dieser Seite hier .

Andere Tipps

Von der Bezier Artikel in wikipedia, mit einigen praktischen Kalkül Wissen können Sie übersetzen die Formeln auf ein Computerprogramm, wie die folgenden Pseudo-C # -Code Auflistung. Ich tue es mit quadratischen Spline, aber es ist einfach zu einem anderen zu übertragen.

// 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;
}

Es könnte einige Optimierungen müssen, wie ich habe nur diese, bevor sie in Java tat, aber das ist im Grunde ist es.

Okay, es sieht aus wie TTF Umrisse als quadratischer B-Splines definiert sind.

Es gibt zwei Algorithmen, mit denen Sie vertraut sein wollen werden.

Die erste ist die Bezier-Extraktion über Knoten Insertion. Dies wird Ihnen quadratische Bezier-Segmente erhalten. Dann werden Sie wollen Grad-heben jedes Bezier-Segment cubics zu erhalten.

Der Hauptbezug ich verwende, ist mein CAGD Klasse Lehrbuch, das online ist. Bezier-Extraktion wird in Abschnitt 6.3 rel="nofollow. Grad Höhe von Bezier-Kurve ist in Abschnitt 2.4 rel="nofollow. Lassen Sie mich wissen, wenn Sie irgendwelche Probleme haben ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top