【问题标题】:Haskell Gloss : direction vector to angle for rotationHaskell Gloss:方向矢量到旋转角度
【发布时间】:2014-10-28 22:33:44
【问题描述】:

对于 Haskell 中 Gloss 库的 Rotate 函数,我需要为它提供一个角度,而不是我用于可移动对象的方向矢量,因此我想知道如何转换它?我想我会为此使用 atan2 ,但这给了我一个非常奇怪的结果(应该旋转的图片只旋转一点,然后返回等等,而不是围绕它的原点)。

我尝试的是使用 Gloss Library 中的 Rotate 函数加上 atan2 函数将矢量转换为角度:

Rotate (atan2 (snd dir) (fst dir)) pic

其中 dir 是一个标准化向量,初始为 (1,0),指向图片(在本例中为玩家的船)指向并可能移动的方向。

但是这不能正常工作。

如果有人可以帮助我,将不胜感激!

最好的问候, Skyfe。

【问题讨论】:

  • rotate 期望度数,atan2 似乎给出弧度。
  • 请注意atan2 (snd dir) (fst dir)uncurry atan2 dir
  • @user2407038:我认为atan2 (fst dir) (snd dir)uncurry atan2 dir。请注意,atan2 首先采用 snd,而不是 fst

标签: haskell rotation geometry


【解决方案1】:

我认为您应该只使用argV 从矢量中获取角度。

编辑:

您还必须使用radToDeg 将此角度转换为度数(从弧度)。

【讨论】:

  • 谢谢!现在至少它在旋转,但它不是围绕它的原点旋转,我该怎么做?
  • @user2999349 如果您无法自己解决问题,请考虑提出一个新问题。
  • 我已经弄明白了,谢谢!应该知道它是按屏幕原点旋转的,所以我必须简单地将图像平移到该位置,然后旋转它并将其平移回原来的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多