質問

私は(すべてのC#のオペレーティングシステム間の相関体)MOSAのためのいくつかのTTFの仕事をしています。私とコリンが現在取り組んでいくつかのTTFコードを得る上で作業しているバーン(これらの日:)あまり私 - 彼は進歩の多くを作った)

いずれの場合においても、TTF仕様は、「ハンドル」との間の制御点の任意の量を可能にし、のGASP のNOが全くハンドル(TTFは、それを示す円の例を有する - よくやっ馬鹿 - 。あなたは10のバイトを保存)

誰も私にこれを行うことができる方法についての指針を与えることができますか?私は、ウィキペディア上のベジェの記事を見て、それは本当に多くの助けではなかった - 彼らはそれが起こって示しているが、任意の数学を与えることはありません。助けになる準備ができて何か「プログラム」(私の微積分が、それがどうあるべきかではありません) - いくつかの擬似コードか何か

みんなありがとうます。

役に立ちましたか?

解決

私はいくつかの掘削を行なったし、いくつかのアルゴリズム TTFはこちら上、このサイトでOVER SPECするます。

他のヒント

いくつかの実用的な微積分の知識を持つウィキペディアで

ベジェ記事に、あなたは翻訳することができます以下の擬似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スプラインとして定義されています。

あなたが精通してしたいと思う2つのアルゴリズムがあります。

まず、ノット挿入を介して、ベジェ抽出です。これは、二次ベジェセグメントを取得します。そして、あなたがしたいと思うcubicsを得るために、各ベジェセグメントを度高めます。

私が使用する主要なリファレンスは、オンラインで私のCAGDクラスの教科書です。ベジェ抽出はセクション6.3 のに覆われています。ベジェ曲線の学位上昇はセクション2.4 の中で覆われています。何か問題があれば、私に教えてください..

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top