我正在尝试一些三角函数,代码编译好,我想看到一个正方形移动360度,但当我运行代码我看到方形只在x轴移动,一切正常,除了一个关于我的功能。
void mvdr(int* x, int* y, float d, float sp)
{
if(d != 0)
d = (d / 360.0) / 6.283185307179586;
*x += cos(d)*sp;
*y += sin(d)*sp; // here's the error
}
我在gdb中看到:y
没有变化。
(gdb) n
11 *y += sin(d)*sp; // here's the error
(gdb) p d
$4 = 0.000442097051
(gdb) p sin(d)*sp
$5 = 6.44245094e+09
(gdb) p *y
$6 = 256
(gdb) n
12 }
(gdb) p *y
$7 = 256
我无法理解发生了什么,或者我做错了什么,希望你能帮助我。
答案 0 :(得分:2)
要将度数转换为弧度,您应该:
d = (d / 360.0) * 6.283185307179586;
你的转换函数产生非常小的值,sin()可能不会改变y的整数值,而cos()会导致x的值更大