代码之家  ›  专栏  ›  技术社区  ›  Kyu96

用C计算正弦曲线

  •  0
  • Kyu96  · 技术社区  · 5 年前

    但我把事情搞砸了,因为我的价值一直到79,而不是预期的40。我做错什么了?

    这是我的尝试:

    #include <math.h>
    
        #define degToRad(angleInDegrees) ((angleInDegrees)*M_PI / 180.0)
        
        int main()
        {  
            int height = 40;
            int i = 0;
            while (1) {
        
                int value = height + sin(degToRad(i / 2 + 1)) * height;
                printf("val = %i\n", value);
                i++;
            }
            return 0;
        }
    
    2 回复  |  直到 5 年前
        1
  •  2
  •   chux    5 年前

    直接的解决办法是用2除以波的大小 @Eric Postpischil

    // int value = height + sin(degToRad(i / 2 + 1)) * height; 
    int value = height + sin(degToRad(i / 2 + 1)) * height)/2;
    

    并在 i/2 部门。 @bruno


    我希望从浮点到 int .

    int value = height + lround(sin(degToRad(i / 2 + 1)) * height)/2);
    
        2
  •  2
  •   Hi - I love SO    5 年前

    height / 2 而不是 height

    int value = height + sin(degToRad(i / 2 + 1)) * height;

    具有

    int value = height / 2 + sin(degToRad(i / 2 + 1)) * height / 2;

    记住这一点的一个好方法是sinx始终在范围[-1,1]内。