我在一些与图形相关的代码中遇到了以下数学:
// get the angle between 2 points
double d = Math.atan2(x1 - x2, y1 - y2);
// wtf?
d = (8 * (d + PI + 0.25^2 * PI)) / PI;
任何具有数学直觉的人都可以用“实用”的术语来帮助解释它的作用吗?
我在一些与图形相关的代码中遇到了以下数学:
// get the angle between 2 points
double d = Math.atan2(x1 - x2, y1 - y2);
// wtf?
d = (8 * (d + PI + 0.25^2 * PI)) / PI;
任何具有数学直觉的人都可以用“实用”的术语来帮助解释它的作用吗?
第一行按照它所说的去做。d 是从原点看两点之间的角度。
第二行取决于^
运算符的含义(未指定语言)。假设 ^ 表示力量,我得到(希望我做对了,请自己检查):
d = (8 * (d + PI + 0.25^2 * PI)) / PI;
d = (8 * (d + PI*17/16))/PI
d = (8*d + 8*PI*17/16)/PI
d = (8*d + PI*17/2)/PI
d = 8*d/PI + 17/2
我猜PI
它通常是(3.141...
),它看起来像是从辐射到其他形式的转换(其中 16 是一个完整的圆或 360°)。然后添加 17/2 将转换为“将 191,25° 添加到角度”(略大于相反方向)。
我不知道为什么有人会这样做,也不知道他为什么不将表达式转换为简单形式(顺便说一句,除非优化器做得很好,否则应该更快地评估)。