ポイントをタッチして描く、より滑らかな線を作りたいです。線は描画ですが、角があります。クワッド関数を使用して曲線を描画していますが、ポイントが互いに近い場合、曲線にコーナーが含まれることがあります。この問題の解決策を見つけるために何ができるでしょうか?
1 に答える
Android APIとQuad関数を使用しているため、この質問には意図的に回答しませんでした。いいえを増やす方法があると思いました。それが描いている二次ベジェ曲線の点の数。私はグーグルをして、自分では何も見つかりませんでしたが、AndroidAPIを使用して誰かがトリックを投稿するのを待っていました。
コードを使用して高解像度のベジェ曲線を描画することにより、手動で滑らかさを実現する必要があるようです。クワッド関数はベジェ曲線を描画するクワッド関数です。ここにベジェ曲線を描画するためのアルゴリズムの適切なリンクがあります。必要なのは増加することだけです。いいえ。曲線内の点の数:2次ベジェ曲線の式は次のとおりです: `
[x、y] =(1 – t)2P0 + 2(1 – t)tP1 + t2P2
`そして、ループをより反復させるには、tを小さくする必要があります。これにより、ポイントが増え、より滑らかな曲線を描くことができるようになります。
興味深いコードは次のとおりです(説明しやすいように少し変更しました)。
double t = 0;
Point prevPoint = CalculateBezierPoint(t, p0, p1, p2, p3);
for(int i = 0; i <= 100; i++)
{
Point nextPoint = CalculateBezierPoint(t, p0, p1, p2, p3); //see this part from the link i have given
//Draw line from previous point to next point.
prevPoint = nextPoint;
t = t + (1/100)
}
より滑らかな曲線を作成するには、forループのセグメント数を増やし(1000など、試してみてください)、この線も変更しますt = t + (1/100)
(値を選択したセグメント数の大きい方で除算します。i
このソリューションを最後のオプションとして使用してください。AndroidAPIを使用してそれを行う方法を見つけた場合は、ここにも投稿してください。他の誰かがそれを行う方法がある場合は、投稿してください。回答を待っています。