2017-01-28 12 views
-1

私のアプリでは、UIBezierPathを使って弧を円に描いています。私はラジアンに数を相関させようとしています。だから、ユーザーが特定のポイント数を持っていて、そのポイントが100ポイントで上限が設定されているとします。 100ポイントを360度にしたい。私は円の最初の33%を緑、34%から次の66%の円を橙色でストロークし、次に67%から100%を赤色にします。Objective-Cでポイントをラジアンに変換するには?

ここで問題となっているのは、円のパーセンテージをラジアンに換算することです。 UIBezierパスを作成するときは、startAngleとendAngleを用意する必要があります。これらの点をラジアン値に変換するのに少し問題があります。

どうすればこの問題を解決できますか?

おかげ

答えて

0
CGFloat radians = percent * 0.01 * 2 * M_PI; 

シンプルな代数。

+0

私の謝罪が、なぜあなたは0.01を乗じていますか? –

+0

入力パーセントの範囲は0〜100です。小数点以下の値は.01〜1.0です。 –

0

あなたが望むのは単位円だと思います。単位円を使用したときに三角法に戻ることを覚えていますか?ここでも同じことが適用されます。 Swiftでπ - を取得する必要がある場合は、ちょうどlet π = CGFloat.piと言ってください(特殊文字の場合はalt + pを押してください)。 Objective-Cでは - それはCGFloat π = M_PI;だと思います。

enter image description here

あなたは(完全な円)、その後4π/3からに、そして2π/3から4π/3に、最初の1/3のため2π/3ゼロから行くことができます。

私はこのグラフィックを作っていませんでした - それはRayWenderlich.comのチュートリアルですが、iOS座標系には完全に向いています。

+0

Objective-Cの変数名にSwiftの缶のように特殊文字を使用することはできません。あなたは "pi"を使う必要があり、あなたは正しいことが定数ですM_PI –

+0

@Duncan C - 知っておきたいことです。ありがとう! – Pierce

0

のObjective-C

CGFloat fullCircle = 2 * M_PI ;    // M_PI Pi number which is half of the circle in radian 
CGFloat startPoint = 0.0  ; 
CGFloat endPoint = fullCircle * 0.33 ; 

// Assuming circling clockwise 

// .... Draw first step UIBezierPath 

startPoint = endPoint  ; 
endPoint = startPoint + fullCircle * 0.33 ; 
// .... Draw second step UIBezierPath 

startPoint = endPoint  ; 
endPoint = fullCircle - startPoint ;  // This to make sure the whole circle will be covered 
// .... Draw the last step UIBezierPath 

スウィフト

let fullCircle = 2 * M_PI    // M_PI Pi number which is half of the circle in radian 
var startPoint: Float = 0.0 
var endPoint: Float = fullCircle * 0.33 

// Assuming circling clockwise 
// .... Draw first step UIBezierPath 

startPoint = endPoint 
endPoint = startPoint + fullCircle * 0.33 
// .... Draw second step UIBezierPath 

startPoint = endPoint 
endPoint = fullCircle - startPoint  // This to make sure the whole circle will be covered 
// .... Draw the last step UIBezierPath 
+2

OPの質問には、SwiftではなくObjective-Cが指定されています。 –

関連する問題