【问题标题】:Calculate Radians In Order To Have Player Face Unit - From Player(X,Y) to Unit(X,Y)计算弧度以使玩家面对单位 - 从玩家(X,Y)到单位(X,Y)
【发布时间】:2020-01-12 14:46:16
【问题描述】:

给定一个 Player.X 和 Player.Y,以及一个 Unit.X 和 Unit.Y,计算面向玩家的适当弧度的公式是什么,以便玩家直接面向单位x,y 位置..

最小弧度为 0,最大弧度约为 6.3(360 度),我在 C++ 中修改的游戏中的弧度。

例子:

Player.x = -9000
Player.y = -150

Unit.x = -8950
Unit.y = -132

我数学不太好,提前谢谢你!

【问题讨论】:

  • C++ 标签是关于 C++ 代码的问题,这个问题是关于数学的
  • @foreknownas_463035818 抱歉,按习惯做的,删除了。
  • 如果有数学问题,请咨询Math.SE
  • 您不希望播放器顺时针或逆时针转动较短的那个吗?而且,我猜您希望将坐标视为来自原点的向量?

标签: math


【解决方案1】:

如果您使用来自<cmath>std::atan2,那么您可能可以执行以下操作:

template <typename P, typename U>
double delta_theta(P p, U u) {
    auto delta = std::atan2(u.y, u.x) - std::atan2(p.y, p.x);
    if (delta > M_PI) return delta - 2*M_PI;
    if (delta < -M_PI) return return delta + 2*M_PI;
    return delta;
}

如果u 向左(逆时针旋转),这通常返回正数,如果u 向右(顺时针旋转),则返回负数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-29
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2021-01-07
    相关资源
    最近更新 更多