【问题标题】:Javascript sin function issueJavascript sin函数问题
【发布时间】:2011-11-16 16:08:56
【问题描述】:

Math.sin 有问题。我认为它会输出给定整数的正弦值。所以我尝试了Math.sin(30),我的输出是-0.9880316240928618,然后我用我的计算器检查了一下,结果是0.5。

【问题讨论】:

    标签: javascript math trigonometry


    【解决方案1】:

    假定参数以弧度为单位,而不是度数。

    试试

    Math.sin(Math.PI * (30/180));
    

    下面的评论指出,预先计算比率 π/180 是个好主意。可以向Math.sin 添加一个以这种方式工作的同伴:

    Math.dsin = function() {
      var piRatio = Math.PI / 180;
      return function dsin(degrees) {
        return Math.sin(degrees * piRatio);
      };
    }();
    

    (有些人不喜欢扩展内置对象,但由于没有实例化 Math 实例——至少我没有——这看起来并不令人反感。)

    【讨论】:

    • +1,预先计算 Math.PI / 180 已证明如果经常使用它可以极大地提升性能。
    • 谢谢,很高兴知道这一点,但我认为我从来没有在 JavaScript 中使用过三角函数,只是为了好玩 :-)
    • 我是从游戏的角度来看的;我能够通过预先计算每秒获得一个额外的帧,所以我真的推荐它。
    【解决方案2】:

    Math.sinradians 中工作,我猜你的计算器是度数。

    【讨论】:

      【解决方案3】:

      如上所述,Math.sin() 需要使用弧度作为输入。要将度数转换为弧度,请使用:

      Radians = (Degrees * (Math.PI/180))
      

      【讨论】:

        【解决方案4】:

        Math.sin 接受弧度值,而您的计算器设置为度数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-02-20
          • 1970-01-01
          • 2011-02-22
          • 2021-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多