compute inverse sine
| 170 | |
| 171 | // compute inverse sine |
| 172 | angle FixAsin(float v) { |
| 173 | fix vv; |
| 174 | int i, f, aa; |
| 175 | |
| 176 | vv = FloatToFix(std::fabs(v)); |
| 177 | |
| 178 | if (vv >= F1_0) // check for out of range |
| 179 | return 0x4000; |
| 180 | |
| 181 | i = (vv >> 8) & 0xff; |
| 182 | f = vv & 0xff; |
| 183 | |
| 184 | aa = asin_table[i]; |
| 185 | aa = aa + (((asin_table[i + 1] - aa) * f) >> 8); |
| 186 | |
| 187 | if (v < 0) |
| 188 | aa = F1_0 - aa; |
| 189 | |
| 190 | return aa; |
| 191 | } |
| 192 | |
| 193 | // compute inverse cosine |
| 194 | angle FixAcos(float v) { |