【问题标题】:Trigonometrical ratios for angles higher than 360大于 360 度角的三角比
【发布时间】:2009-05-20 13:26:52
【问题描述】:

有没有使用 Sin(720) 或 Cos(1440)(角度以度为单位)? 无论是在计算机编程还是在任何其他情况下? 一般来说,是否使用任何角度的正弦/余弦/正切 大于 360?

在物理学中,我们确实使用点积和叉积 很多,但即使它们也需要小于 180 度的角度 总是。

大家好, 我知道如何计算它们...... 我想知道,它们是否有用???? 我什么时候会遇到情况,什么时候 例如,我需要计算 Sin(440) ???

【问题讨论】:

  • 是的,只要需要等于或大于 360° 的角度。

标签: trigonometry


【解决方案1】:

数学和编程:

Sin(x) = Sin(x % 360)

正如另一个答案指出的那样,大于 360 度的角度表示一个或多个完整的旋转圆加上模部分。在某些情况下,这可能具有物理意义。

此外,在进行三角函数计算时,您应该考虑到这一事实。例如:

sin(a)*cos(a) = (1/2)*sin(2a)

对于 a>180,您将得到大于 360 的角度的 sin。

顺便看看here

【讨论】:

  • 作为一个纯合成的例子,以螺丝或螺栓为例。超过 360° 的旋转具有非常具体和重要的意义。头部朝向的方向仍会以 360 为模计算,但如果以这种方式存储其旋转,则会丢失重要信息。
【解决方案2】:

我在做角度算术时看到过这样的事情:

float angleOne = 150;
float angleTwo = 250;

//...

float result = Sin(angleOne + angleTwo); // Sin(400)
float result = Sin(angleOne - angleTwo); // Sin(-100)

在这个(人为的)示例中,这似乎很明显,但是当您根据多个对象的任意旋转计算角度时,您并不总是知道会得到什么样的数字。想象一下,例如,在 3D 游戏中计算玩家站在旋转平台上时的位置。

【讨论】:

    【解决方案3】:

    每当您处理用户交互技术时,它们完全有可能将您推过 0 度或 360 度。想象一下,您正在使用炮塔制作游戏。它当前指向 359 度,用户将操纵杆向右拉动:现在它指向 361 度。如果您错误地执行角度表示,突然间,枪会快速向左移动近 360 度。

    我预测用户会... 对这个错误感到失望

    Euler angle 表示参考框架会引发各种问题,这些问题在游戏、模拟和真实设备控制中都很重要。 Gimbal lock 是实际旋转设备控制中的一个严重问题(这是我生活中相机平移/倾斜设备的问题)。 “快速旋转”错误曾是小船自动驾驶系统中的一个非常讨厌的问题 - 想象一下将钢缆紧紧地缠绕在驾驶室周围(即,您不想站在那里)。

    【讨论】:

    • 感谢您对云台锁的参考。我今天学到了一些东西:)
    【解决方案4】:

    有时,正常的数学运算意味着您最终会“遍历圆”一次或多次,如果您保持数学简单,您的角度可能大于 360。我个人喜欢将角度标准化为 0在这样的操作之后到 360 或 -180 到 180,但这并不重要。

    有时更大的数字可能确实代表了某些东西。举个简单的例子,想象一下打开经典拨号组合保险箱的说明。您需要转动转盘几次,因此说明可能是:

       turn(800);  // Twice around plus another 20 degrees
       turn(-500); // Once around the other direction plus 140 degrees
       turn(40);   // Dial in the last digit
    

    在这种情况下,取 sin 或 cos 会告诉您有关刻度盘最终位置的信息,但您会丢失有关所涉及的转数的信息。

    【讨论】:

      【解决方案5】:

      绕一圈旋转 360 度或2pi 弧度。

      Trigonometric functions(例如正弦和余弦)在达到 360 度时会“环绕”,其行为方式与处于 0 度时相同。基本上,会发生以下情况:

      angle_in_unit_circle = angle mod 360
      

      此外,某些三角函数(例如切线)未定义在某些角度,例如 90 度和 270 度,其中角度的切线将返回正无穷或负无穷。

      可以通过使用unit circle 中的直角三角形表示正弦、余弦、正切函数来看到这种“环绕”,而这种行为makes those functions periodic 因为它们会一遍又一遍地重复它们的模式。

      维基百科有一篇关于 Trigonometric functions 的文章,因此可能值得一看。

      用法

      在使用方面,我想不出一个很好的例子,除了,也许可以表示polar coordinate system中某个时间粒子的位置,其中角度@ 987654329@依赖时间t

      r(θ(t)) = t    where θ(t) = t
      

      对于从 0 到 720 的 t 值,然后可以在 Cartesian coordinate system 中表示为:

      x(t) = r sin(θ(t)) == t sin(t)
      y(t) = r cos(θ(t)) == t cos(t)
      

      粒子将以螺旋式运动方式移动,具体取决于时间t。在这种情况下,将计算超过 360 度角的正弦和余弦。

      (而且我的数学很生疏,所以如果上面的方程式有任何错误,请告诉我!)

      【讨论】:

      • 我想知道,是否需要计算 Sin(720)?我知道如何计算它..
      【解决方案6】:

      在正弦曲线上,Sin(720) == Sin(0)(等等),所以我希望这些函数的任何体面实现都能处理“大于”360 度。有很多原因可以达到大于 360 或小于 0 的角度。

      【讨论】:

      • 加法、减法和乘法是其中的三个。
      【解决方案7】:

      “主角”范围之外的角度 [-180,180) 本质上是彼此的别名(模 360 度)并且没有物理区别。

      从数学/工程的角度来看,如果您有一个旋转次数很重要并且必须跟踪的过程(例如来回旋转的电机),那么 0 度和 720 度是不一样的.正弦和余弦只是周期函数,因此它们每 360 度具有相同的值。如果你有一个粒子进行匀速圆周运动,其中 x(t) = A cos (ωt + φ) 并且 y(t) = A sin (ωt + φ),那么相位角 θ = (ωt + φ) 将变为不管它是什么,无论是 0 度还是 720 度还是 82144.33 度或其他什么。

      所以函数 cos(θ) 和 sin(θ) 只是用来计算 x 和 y 坐标,不管 θ 的值是多少。在这件事上你没有选择权,如果 θ 是 82144.33 度,那么你会想要计算那个角度的正弦和余弦。

      【讨论】:

        【解决方案8】:

        我玩一个名为 Garry's Mod 的 PC 游戏,在游戏中的某些时刻,在编程时,我想要一个简单的解决方案来保持对象在一个恒定的圆周上不断移动。为此,我使用了一个永远递增的计时器的正弦和余弦,测量自游戏启动以来的时间量。

        T(时间)的正弦等于轨道路径 X 值,而 T 的余弦等于轨道路径 Y 值(X 和 Y 在 3 维坐标平面上,Z 未在时刻。)

        例子:

        T=1000 滴答 X=sin(T) Y=cos(T)

        所以 X 在那个时刻是 0.8268795405320025 而 Y 是 0.15466840618074712。

        现在假设时间增加到 1500。X 为 -0.9939019569066535,Y = -0.11026740251372914。

        简而言之,它会不断地从 1 波动到 -1,让我有机会将该值乘以 100,并使坐标平面本地化到我的角色位置,然后我可以告诉程序表达式移动一个基于这些坐标的对象,它会在我周围以恒定的圆形路径移动。

        多田。谁说你不能从电子游戏中学习?

        【讨论】:

          【解决方案9】:

          因为sin(x) = sin(x mod 360°)cos(x) = cos(x mod 360°) 可以在计算中使用每个值,但也可以标准化为[0°,360°) 范围或360° 的任何其他范围。大角度是否有明确的含义,仅取决于用法。

          处理器可能会将计算标准化为90° 甚至更小的范围,并从这个小范围中导出所有其他值。

          何时会出现大于360° 的参数?

          它们自然出现在周期性时间或空间相关函数的模拟中。

          【讨论】:

            【解决方案10】:

            您的问题没有多大意义,因为您似乎知道这里的区别:

            不——你永远不需要“计算”Sin(720),就像你需要“计算”Sin(0)一样。您需要查看 Sinus 函数的定义以完全理解幕后发生的事情 - 当理解了这一点后,任何人都会完全理解为什么 Sin(0) = Sin(720) - 没有什么神奇的事情发生,(逻辑上)没有 Angle = FullAngle % 360 继续,这一切都在函数应该做什么的定义中。

            See wikipedia

            【讨论】:

              【解决方案11】:

              @dta,我认为人们有点困惑。你问它是否“有用”。我会说“没关系,因为您在执行计算时只需将角度移动到适当的范围。”在某些情况下,您需要知道物体从 0 度旋转了多远,考虑到多次旋转。但除了这些情况之外,在正常的 0-360 范围内解释角度更方便。大多数人都会对哪个方向对应于该正常范围内的角度建立一种直观的感觉。 170,234 度指向什么方向?与 314 度相同。

              【讨论】:

                【解决方案12】:

                正如@Chris Arguin 和其他人所说,角度大于 360°(或就此而言小于 -360°)是否对您有用取决于您是否需要有关旋转(或其分数)的信息用角度和角度%360°的差来表示。

                此外,由于您得到相同的答案,因此如果您调用 sin(angle) 而不是 sin(angle%360),您将节省一点处理时间,尤其是当您在循环中执行许多计算时。

                OTOH,@Scottie T 提出了一个很好的观点,如果让某人知道你的角度指向的圆周围的位置很重要,人们通常可以直观地知道绝对值为 360 或更少的角度的位置,而不是他们可以更大的角度。

                【讨论】:

                  【解决方案13】:

                  在许多情况下需要 [0,360] 之外的角度。我喜欢密码锁的想法。在这里,人们经常会看到简单的 [0,360] 度范围之外的正角和负角。

                  多角度公式在数学中通常很重要。三角函数不仅用于三角形,还用于其他地方。它们出现在各种地方,例如傅里叶级数,或图像压缩方案,或微分方程的解。在计算上,确实可以使用 mod 将触发函数的范围缩小到默认值。但很少会在该标称范围内提供角度。

                  【讨论】:

                    【解决方案14】:

                    在某些情况下,由于某种计算,您肯定会得到一个大于 360 度的角度测量值...但它与无数其他角度测量值相同,其中一个将介于0 和 360。但是,如果你正在编写一个函数,你应该能够自己处理这个计算……而不是依赖用户为你做 mod。

                    ie 虽然 sin(370) == sin(10) 确实如此,并且用户可以自己进行此翻译,但出于某种原因,他们可能不想这样做(请参阅 cmets 中的“螺栓”示例评分最高的答案),因此该函数应该能够处理任何值。

                    【讨论】:

                      【解决方案15】:

                      也使用高于 360 度的角度,例如描述滑雪板技巧:

                      http://en.wikipedia.org/wiki/List_of_snowboard_tricks#Spins

                      如您所见,现实世界中存在各种使用更高角度来描述对象旋转的示例。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2015-10-23
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多