ホームページ  >  に質問  >  本文

gtk - c++调用cairo库如何实现图元沿曲线分布,即Drawing Lines with Image Patterns。

这种沿贝塞尔曲线分布图像的方式用cairo库怎么实现,希望有做图形方面的来交流一下
,这个是图元

迷茫迷茫2765日前648

全員に返信(1)返信します

  • 怪我咯

    怪我咯2017-04-17 15:34:11

    私はカイロを使ったことはありませんが、ベジェ曲線については知っています。
    まず、cairoにベジェ曲線機能が付いていれば言うまでもないことです。
    ベジェ曲線は、分割統治法を使用して実装できる連続コーナーカットなどのサブピジョン法を使用して実現できます。
    もう 1 つの一般的な方法は、ド カステルジョ アルゴリズムです。これは、コントロール スティックの線形補間 (スライド) によって描画されます。詳細については、Wiki を参照してください。


    質問に答えるために、ド カステルジョー アルゴリズムを使用して描画プログラムを作成しました。

    コアコード:

    リーリー

    完全なコード


    プリミティブを曲線に沿って均等に分散させたい場合は、u の関数として曲線の弧の長さを計算する必要があります。ただし、ベジェ曲線の式はより複雑で、弧の長さを積分するのは次のとおりです。さらに複雑です。したがって、数値的手法を使用して間隔点を決定することをお勧めします。曲線上の各間隔点の法線ベクトルを簡単に取得できるため、プリミティブを曲線にマッピングすることが容易になります。

    返事
    0
  • キャンセル返事