|
2 registered members (Volkovstudio, 1 invisible),
2,079
guests, and 4
spiders. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
degree mod 180°
#442875
07/05/14 10:20
07/05/14 10:20
|
Joined: Jul 2001
Posts: 6,904
HeelX
OP
Senior Expert
|
OP
Senior Expert
Joined: Jul 2001
Posts: 6,904
|
Hi all, I have written the following Lite-C function to shift a degree as a double value between -180° ... 0° ... +180°. The outcome is the same as the ang() function, but it works different: instead of repeatedly adding or subtracting a multiple of 360 degrees, I use the fmod function (which implements that maybe anyway, I don't know):
// clamps a floating point degree between -180° ... 0° ... +180°
double avAngleDegreeMod180(double angleDegree) {
if (angleDegree > 180) {
double remainder = fmod(angleDegree, 360);
if (remainder > 180) {
return -180 + (remainder - 180);
} else {
return remainder;
}
} else {
if (angleDegree >= -180) {
return angleDegree;
} else {
return -avAngleDegreeMod180(-angleDegree);
}
}
}
Can anyone think of a faster/more elegant solution? This feels somehow bloated...
|
|
|
|