2010-12-08 7 views
3

私は単純な丸い頂点を矩形に作成しようとしています。私はキャップを作成するためにbezierCurveToメソッドを使用することができましたが、私は曲線の正しい高さを得るためにコントロールポイントのy値を使い果たしなければなりませんでした。私が幅を持っていて、カーブを通過させたいと思う高さがわかっているのは、コントロールポイントのy値を見つけるための式です。私が今持っている機能はキャンバス内のベジエ曲線の高さを求める

c.moveTo(130,55); 
c.bezierCurveTo(130,-18,0,-18,0,55); 

-18である私は、はい、のために簡単な答えがあるおよそに曲線を取得するには、yを通じて= 0

+0

ベジェ曲線とそのすべてのパワーを使う必要がありますか、または単純な円形の 'arcTo'が必要なものを与えますか? – Phrogz

+0

@Phrogz技術的にはいいですが、私はベジェ曲線が直線部分に通じる側でより直線的になるのが好きです。私が言及したように、私は何かを持っている私はちょうど私がこの問題が再びあった場合の式がどうなるか疑問に思った。 – qw3n

答えて

4

を渡すために、yの値を設定していたものですベジェ曲線のこの制約付きバージョン。ウィキペディアhereから立方ベジェ曲線の定義を取って、曲線(T = 0.5)に沿って中間点を解く、Yの最小値は次のようになります

1/4 Ymax + 3/4 Ymin 

(Ymaxとはのy値であります開始点と終了点、Yminは2つの制御点のy値)。 または、中間点のために0にする、だから、

Ymin = -1/3 Ymax. 

、あなたがYmaxの= 55を持っているので、Yminとは...であることを-1 = -18.333/3 * 55がある - 18はあなたの中で働いていた理由であります例。

+0

私はこの質問をお返しいただきありがとうございます。 – qw3n

関連する問題