为什么这条线什么也不做

时间:2017-07-04 23:38:29

标签: c

我正在尝试一些三角函数,代码编译好,我想看到一个正方形移动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

我无法理解发生了什么,或者我做错了什么,希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

要将度数转换为弧度,您应该:

d = (d / 360.0) * 6.283185307179586;

你的转换函数产生非常小的值,sin()可能不会改变y的整数值,而cos()会导致x的值更大