Getting an angle
Blitz3D Forums/Blitz3D Programming/Getting an angle
Hi,
Have variable angle% which can be -ve or +ve and any size.
What i want is to return the correct angle between 0 to 359.
angle% = angle% mod 360 works fine for +ve angles.
angle% = (360 + (angle% mod 360)) mod 360 works for all.
Is there a better way (avoiding mod)?
Thanks
Marg
try this:
function angle#(ang#)
while ang >= 360
ang = ang - 360
wend
while ang < 0
ang = ang + 360
wend
return ang
end function
What's wrong with mod?
As a side note, generally with angles it's better to work from -180 to +180.... makes things alot easier when using > and <
It depends how you want to code. Obviously -180 is not a valid angle technically speaking.
personally I don't ususally bother converting angles. They rarely get 'way out of scale' and as long as the maths is sound there should be no problems. I would only convert if I actually needed to display the angle for some reason.
well you could just add 180 to the angle...
-180 is a valid angle.
About as much as 101% is a valid percentage.
Any angle -infinity to +infinity as a measurement of rotation is valid mathematically.
oh and also, 101% is a completely valid percentage. A percentage is just another way of expressing a fraction, similar to decimal representation. 101% is the same as 1.01
So what's 140% of -768 degrees then smarty pants? - ho ho ;D
Great sig by the way.
Easy: -1075.2
duh! :O)
ps. thanks for the remark - took me at least a day to come up with it :O)
angle% = (360 + (angle% mod 360)) mod 360
can be shortened to
angle% = (360 + angle%) mod 360
This will remove one mod operation and make it faster.
Dreamora, that'll return negative numbers for angles < -360