コアグラフィックスに描かれた3次ベジェ曲線をタッチしてドラッグすることで、再配置して形状を変更したいと考えています。私は基本的な形を描くことができ、私はタッチのドラッグを使用して形状の全体を移動することができますが、これは私ができるようにしたいものではありません。目的Cベジェ曲線再シェイプ
私が望むのは、テーブル上に横たわっている弦のように、ベジエ曲線を移動したり変形したりすることができることです。つまり、ベジェ曲線の一部に触れ、曲線全体の形状を変更する方向に引っ張ります。
誰でもこれを行う方法を知っていますか?どんな助けも大歓迎です。事前
優れたポインタ。しかし、私はこのようにポリラインを描こうとするのは少し緊張しています。私の経験では、非常に大きなCGPathは描画に非常にコストがかかる傾向があります。しかし、Catmull-RomをBézierに変換することは可能です:http://stackoverflow.com/questions/1030596/drawing-hermite-curves-in-opengl。それは便利なツールになるかもしれません。カーブを分割してそれをキュービックに単純化する複雑さを残していますが、優れた出発点です。 –
私はプロセス(更新、描画)を最適化するためにいくつかのセグメントにパスを分割していましたが、さらに1つのトリックがあります:tパラメータのステップは可変である可能性があります。カーブセグメントの長さを確認してtを調整することができます。したがって、近点には「スムージング線」はほとんどなく、遠点には十数点の近似線があります。 – Gobra
真。私のリンクされたコードには、「パスに沿って与えられた距離に対して 'tを与えてください」という意味が含まれているので、決して短すぎる行を描かないようにすることができます(間違いなく1px未満にすることはできません。 「t」線形)。私の重大なパフォーマンスの問題は、4000-5000の線分の近傍で起こりました。 –