0

Xタッチ位置に対応して、ビューが円弧状に配置されるiPhoneアプリでインターフェイスコントロールを作成しています。X値が与えられると、下のグラフの赤い線に対応するY値を返す関数を作成する必要があります。 ここに画像の説明を入力してください

曲線の量を制御するために、点A、B、および半径rを定義します。ポイントAは常に12時(ポイントBよりも大きいY値)になります。私の数学(特に円の場合)は少し錆びています…この関数を書くためにどのような式が必要ですか?数式に付随する例が役立ちます。ありがとう!

編集:関数はABS(Y)を返す必要があります

4

3 に答える 3

3

円の中心が (0,0) であると仮定します。(iPhoneの画面座標への翻訳関数を書くのは簡単なはずです)

円の公式は x^2 + y^2 = r^2

if( x < -(B.x) ) { return minY }//  B.x is the x coord of b.
if( x > B.x ) { return minY }
else {
   return sqrt( r^2 - x^2)
}
于 2012-04-06T14:45:42.713 に答える
2

ピタゴラスの定理を使用して、Y 値を見つけることができます。X 2 + Y 2 = r 2 .

それを並べ替えると、Y 2 = r 2 - X 2が得られます。両辺の平方根を取ると、Y = sqrt(r 2 - x 2 ) が得られます。気になる Y 値が正であることはわかっているので、平方根を取るときに通常必要になる +/- に注意を払う必要はありません。

円の中心が (0,0) にあると仮定します。そうでない場合は、オフセットを適用する必要があります。

そこからは、値をクランプするだけです。つまり、Y 値が最小 Y 値よりも小さい場合は、それを最小値に設定します。

于 2012-04-06T14:45:38.840 に答える
0

円の方程式は (xa)^2 + (yb)^2 = r^2 です。ここで、(a,b) は中心の座標で、r は半径です。中心が (0,0) にあり、半径が 1 であると仮定すると、方程式は x^2 + y^2 = 1 に単純化されます。y を解くために、方程式は次のように変わります。

y^2 = 1 - x^2

また

y = ± SQRT(1-x^2) for {-1 <= x <= 1}

したがって、x 値が 0.5 の場合、それをプラグインして取得します

y = ± SQRT(1 - 0.5^2)
y = ± SQRT(1 - 0.25)
y = ± SQRT(0.75)
y = ± 0.866

正の値のみが必要なので、座標は (0.5, 0.866) になります。

于 2012-04-06T14:54:54.100 に答える