【问题标题】:"Mirroring" an angle“镜像”一个角度
【发布时间】:2010-07-08 13:16:05
【问题描述】:

我需要得到一个角度的补充。

确切地说,我需要做的是实现某种镜像角度的代码,比如说,我有 45 度 -> 135,另一个例子:80 -> 100、0 度 -> 180,等等。

【问题讨论】:

    标签: math function trigonometry angle


    【解决方案1】:

    我想你在关注180 - yourAngle

    你的例子:

    • 45 度:180 - 45 = 135
    • 80 度:180 - 80 = 100
    • 0 度:180 - 0 = 180

    【讨论】:

    • 是的,没问题,但是,如果我的角度是 225 怎么办?如果我这样做,我会得到 180 - 225 = -45,我应该得到 135。也许我应该使用 360 - 如果我的角度大于 180,则角度。
    • @Artemix:所以标准化 0 到 180 之间的角度(通过加/减 180 直到你在 [0, 180) 之间)
    • 是的,我知道,但我想问如果我做 360 - myAngle 当 myAngle > 180 时是否正确。
    • @Artemix:你的算术模数是 180,所以加 360 和加 180 是一样的。即(360-angle) mod 180 = (180-angle) mod 180 = (-angle) mod 180。在这里,我使用数学意义上的 mod,其中(-1 mod 180) = 179,而不是 +1。因此,即使将角度乘以 -1 并加/减 180 直到介于 [0, 180) 之间,也会得到正确答案。
    【解决方案2】:

    减法可能会起作用(如果宇宙是欧几里得)。

    http://en.wikipedia.org/wiki/Supplementary_angles

    【讨论】:

      【解决方案3】:

      根据您的问题,最简单的答案是

      angle2 = 180 - angle1
      

      【讨论】:

        【解决方案4】:
        reflected_angle = 180 - ray_angle
        

        【讨论】:

          【解决方案5】:

          如果您将“角度”视为平面中的 2D 矢量,您只需更改垂直于“镜像”平面的分量的符号。

          因此,例如,在 yz 平面中“镜像”的 45 度角 (1, 1) 变为 (-1, 1)。

          【讨论】:

          • 是的,这正是我最初的想法,但是当我尝试在代码上这样做时,我发现了一些问题。问题是,我没有找到使用新组件“重建”角度的方法。
          • 发布您的代码,因为这是完全正确的。问题出在您的代码中。
          【解决方案6】:
          mirrored_Angle = 180 - angle
          
          if mirrored_Angle < 0:
              mirrored_Angle = 360 + mirrored_Angle
          

          【讨论】:

            【解决方案7】:

            我正在玩我的绳索物理项目,并用它来镜像角度。

            mirroredAngle = -(yourAngle % 360)
            

            这将适用于超过 360 度的值,因为模运算会标准化您的角度,从 0 中减去该结果将水平镜像。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-12-15
              • 1970-01-01
              • 2018-09-20
              • 1970-01-01
              • 2013-01-24
              • 2021-11-25
              相关资源
              最近更新 更多