C++ Creating Atan2 from Atan
我该如何使用我的
例如
1 2 3 4 5 | float myAtan2(double a, double b) { float atan2val = //calculate atan2 using atan return atan2val; } |
对不起,我不是最擅长三角函数的人!
类似这样的东西:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | float myAtan2(double a, double b) { float atan2val; if (b > 0) { atan2val = atan(a/b); } else if ((b < 0) && (a >= 0) { atan2val = atan(a/b) + pi; } else if ((b < 0) && (a < 0) { atan2val = atan(a/b) - pi; } else if ((b = 0) && (a > 0)) { atan2val = pi / 2; } else if ((b = 0) && (a < 0)) { atan2val = 0 - (p / 2 ); } else if ((b = 0) && (a = 0)) { atan2val = 1000; //represents undefined } return atan2val; } |
您可能可以对其进行更漂亮的编码,但这就是我从这里得到的逻辑:
https://zh.wikipedia.org/wiki/Atan2#Definition_and_computation。
我要返回1000(arctan的不可能值)来表示"未定义"。您可以通过使用NaN或其他方式来执行其他操作。