18

%cのと同じように、iosでmod演算子を探していましたが、見つけられませんでした。このリンクで答えを試しましたが、同じエラーが発生します。ユーザーの指の動きに基づいて角度が増減し続けるフロート変数「rotationAngle」があります。このようなもの:

if (startPoint.x < pt.x) {
    if (pt.y<936/2) 
        rotationAngle += pt.x - startPoint.x;
    else
        rotationAngle += startPoint.x - pt.x;   
    }
    rotationAngle = (rotationAngle % 360);
}

回転角度が +/- 360 の制限を超えないようにする必要があります。どんな体でも助けてください。ありがとう

4

3 に答える 3

43

math.h の( fmodfor double) とfmodf(for )を使用できます。float

#import <math.h>

rotationAngle = fmodf(rotationAngle, 360.0f);
于 2012-04-27T13:19:58.133 に答える
12

fmod浮動小数点モジュロを行う関数を使用して、定義についてはhttp://www.cplusplus.com/reference/clibrary/cmath/fmod/を参照してください。それがどのように機能するかの例 (戻り値を含む):

fmodf(100, 360); // 100
fmodf(300, 360); // 300
fmodf(500, 360); // 140
fmodf(1600, 360); // 160
fmodf(-100, 360); // -100
fmodf(-300, 360); // -300
fmodf(-500, 360); // -140

fmodf引数として "float"、fmod"double"、およびfmodl"double long" を取りますが、それらはすべて同じことを行います。

于 2012-04-27T13:20:44.310 に答える
1

最初にintにキャストします

rotationAngle = (((int)rotationAngle) % 360);

より正確な使用が必要な場合

float t = rotationAngle-((int)rotationAngle);
rotationAngle = (((int)rotationAngle) % 360);
rotationAngle+=t;
于 2012-04-27T13:16:27.193 に答える