| 198 | } |
| 199 | |
| 200 | float Atan2F(float Y, float X) //result -pi..+pi |
| 201 | { |
| 202 | float sign = (((X >= 0.0f) && (Y < 0.0f)) || |
| 203 | ((X < 0.0f) && (Y >= 0.0f)))?-1.0f:1.0f; |
| 204 | float PP = 0.f; |
| 205 | float res = 0.f; |
| 206 | //1,1 = pi4 1,-1=pi34 -1,-1=-pi34 -1,1=-pi4 |
| 207 | if (X < 0.f) { |
| 208 | PP = PI; |
| 209 | } |
| 210 | X = (X >= 0.0f)?X:(-X); |
| 211 | Y = (Y >= 0.0f)?Y:(-Y); |
| 212 | if (Y < X) { |
| 213 | res = AtanF(Y / X); |
| 214 | } else if (X == 0.0f) { |
| 215 | res = PI5; |
| 216 | } else { |
| 217 | res = (PI5 - AtanF(X / Y)); |
| 218 | } |
| 219 | return sign * (res - PP); |
| 220 | } |
| 221 | |
| 222 | /* |
| 223 | RETURN_STATUS |
no test coverage detected