【问题标题】:Calculating angle using Pythagoras' theorem使用毕达哥拉斯定理计算角度
【发布时间】:2016-10-16 19:41:28
【问题描述】:

我正在完成一项任务。但是我一直在努力解决它的一个问题并且无法解决。

我应该计算 2 点之间的角度和距离,四舍五入到小数点后 3 位。一切都很好,但它发出的角度是错误的

double angleInRadians = Math.Atan2(point2X, point1X) - Math.Atan2(point2Y, point1Y);

这应该是正确的吧?但是当它应该说 45 度时,它只是一直说 0。我已经检查过,将其转换为度数的计算是正确的,它以弧度为单位获得了正在播放的角度

有谁知道它有什么问题吗?

【问题讨论】:

  • 嗯,你可以计算两个点之间的距离,而不是角度。你有vectors,而不仅仅是points
  • 我不确定你的意思。增量和向量是一回事吗? Atan2不计算向量(delta)吗?
  • 作业笔记说“计算从点 1 到点 2 必须移动的角度(0 度直接向右)”
  • 您提供的信息不足以计算角度,仅在两点之间。如果您有要参考的坐标系但您没有提及任何有关坐标系的内容,则可以使用它(也可以在两点和坐标系的轴之间)。
  • double angle = Math.Atan2(point2Y - point1Y, point2X - point1X) / Math.PI * 180.0;

标签: c# math angle


【解决方案1】:

无法计算两点之间的角度。但在“角度我们必须移动从点 1 到点 2”的情况下,它是

double angle = Math.Atan2(point2Y - point1Y, point2X - point1X) / Math.PI * 180.0;

计算这个角度正是Atan2 的设计目标。一些测试:

(1, 0), (0, 1) -> 135
(1, 0), (5, 0) ->   0
(5, 0), (1, 0) -> 180
(0, 1), (1, 0) -> -45 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多