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 |