質問

わかりましたので、できる限り説明的にしようと思います。

アップロードされた画像のジブジャブスタイルのマスキング機能を必要とするクライアントのプロジェクトに取り組んでいます。

ベジェ形状のアンカー/制御位置を含むデータベースに格納可能なオブジェクトを生成できるようにしたいので、後でそれを引き出してオブジェクトを再マスクできます。これはすべて、1つのキャッチを除いて非常に簡単です。ユーザー描画のアウトラインからベジェオブジェクトを作成する必要があります。

これまで、プロセスがどのように進行するかを想像してみました。

マウスダウンで、新しいスプライト、beginFill、およびmoveToマウス位置を作成します。

マウスの移動、lineTo XY座標。

マウスアップで、endFill。

これはすべてうまくいきます。ここに情報を保存することはできますが、膨大な非常に役に立たないx / y座標でいっぱいのGIGANTICオブジェクトを見て、すべてのピクセルにハンドルを置く以外に微調整を行う方法はありません。 (エンドユーザーに鉛筆ツールを提供することもできます...)

ベジェ曲線の計算に関する限り、私が考えていることは次のとおりです。

1:新しい曲線を開始する必要がある場合を把握し、この間隔でピクセルのxyを追跡します。これは単なるピクセルカウントであり、マウスの移動ごとにカウント変数をインクリメントし、xピクセルごとに新しいカウント変数を作成することを想像しています。ここでの問題は、一部の曲線が不正確になり、他の曲線が不必要になることですが、実際には正確な表現ではなく、一般的な領域が必要なだけです。しかし、私はもう少し賢いもので幸せになります。

2:新しいx / yをそれぞれ取得し、アンカーとして保存し、コントロールがこのアンカーと最後のアンカーの間の直線曲線を作成する場所を見つけます。これは私が本当にハングアップする場所です。誰かがこれをフラッシュで行ったと確信していますが、グーグルの量はこれを行う方法で私を助けることはできないようです。私は多くのスケッチを行い、脳を包み込むことができる小さな数学を実行しましたが、ピクセルをベジェに変換する方法を理解できないようです。

これは可能ですか?本当に必要なのは、同じ形に近づくものだけです。次のピクセルの角度が現在の線などに対して180度を超えている場合にのみアンカーを配置し、これらの変更の間の弧の端をつかむことを考えていますが、どんなに努力してもこれを機能させる方法がわからないようです!

ご協力ありがとうございます。進行状況をここに投稿します。実際に実行可能である限り、これは多くのアプリケーションで本当に役立つと思います...

ジェシー

役に立ちましたか?

解決 3

回答に感謝しますが、おそらくアプリケーションについてより具体的にする必要があると思いますが、実際にはマスクのアウトラインのみが必要なので、画像をベクトルまたはポリゴンに変換するのはいかにクールでも、本当に私の問題を修正します。線形最小二乗アルゴリズムは非常にクールです。これは私が探しているものに近いと思います。

現在、基本的な回避策があります。マウスの動きを数え、次にX(最も望ましい曲線を得るためにそれを使って)ごとに動き、xy位置を取得します。次に、保存されているxyを1つおきに取り、それをアンカーに変え、残りのxysをコントロールに変えます。これは多少望ましい結果を生み出していますが、マスクが描画される速度がハンドルの数に影響し、実際には正確なフィットではなく一般的な領域を取得するという点で、いくつかの小さな問題があります。 興味深いことに、ユーザーはより正確な形状を得るために描画が遅いように見えるため、このソリューションは私が想像したよりもはるかにうまく機能しますが、それはそれができるほど良くありません。これはクライアントで機能するので、さらに追求する理由はありませんが、新しいことを学ぶのが好きで、線形の最小方程式を調べ、これらの計算を行うクラスをドラムアップできるかどうかを調べるために時間を割いて過ごします私のために。誰かがこの種のAS3コードに出くわしたり、私の何かをしたい場合は、私に知らせてください。これは興味深いパズルです。

他のヒント

ピクセルをベジェ曲線に変換するのは大変な作業のようです。線形最小二乗アルゴリズムのようなものを使用してみてください。 http://en.wikipedia.org/wiki/Linear_least_squares

別のタクト、ユーザーに代わりにベクターグラフィックスを描画してもらえますか?そうすれば、データベースに図形を保存できます。

ラスターをベクトルに変換するもう1つのクールな方法は、次の反復プログラムのようなものです。 http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/

幸運

この質問に対する回答では、 autotrace でビットマップをベジェに変換します。ユーザーの描画をサーバー上のこのプログラムに渡すことをお勧めします。 Autotraceはトレースと単純化の素晴らしい仕事をするので、ここでホイールを再試行する必要はありません。

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