テッセレーション オプションは非常に効率的で、優れた結果が得られることを付け加えたいと思います。出力が多角形のように見えると思うので、ベジエ曲線を線分で近似するのは間違っているように思えます。コツは、線分を十分に短くして、エラーが非常に小さくなるようにすることです (たとえば、1/10 ピクセル未満)。
以下は、ステップ サイズを計算するために使用した式です。これにより、最大誤差 (つまり、実際の曲線からの線分の偏差) がデルタ未満になるようにします。
(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4) をピクセル座標でのベジエ曲線の制御点とする.j
dd0 = 平方 (x1-2*x2+x3) + 平方 (y1-2*y2+y3);
dd1 = 平方 (x2-2*x3+x4) + 平方 (y2-2*y3+y4);
dd = 6*sqrt(max(dd0, dd1));
次に、dd は曲線上の 2 次導関数の最大値です。3 次関数の 2 次導関数は線形関数であるため、この最大値は終点で発生する必要があります。ここでは、x*x の省略形として square(x) を使用しています。
もし (8*デルタ > dd) {
イプシロン = 1;
} そうしないと {
イプシロン = sqrt(8*デルタ/dd);
}
次に、イプシロンはステップ サイズです: t=0、t=イプシロン、t=2*イプシロン、...、(および t=1 の最後のエンドポイント) で線分の端点を選択した場合、線分は元の曲線のデルタ内になります。
デルタ = 0.1 を選択すると、元の曲線と視覚的に区別できないビットマップ出力が得られます。