2

好的,所以我需要让 C 走从 A 到 B 的最短路径。A 到 B 是我的直角三角形的斜边,我需要给 C 所述三角形的反正切值。我该怎么做,公式有名字吗?

4

5 回答 5

3

目前尚不清楚您在问什么,但我认为您正在尝试找到 AB 线的角度。我将假设您知道,或者可以计算出 A 和 B 的 (x,y) 坐标,否则您将无法解决问题。

听起来您已经概述了解决方案的大部分内容……角度将等于(y/x)距离的反正切值。因此,如果我们将 A(y) 视为 A 的 y 坐标,那么您将看到类似以下内容:

arctan ((A(y) - B(y)) / (A(x) - B(x)))

这有帮助吗?或者你在寻找一些稍微不同的东西?

编辑:要注意的一件事是您考虑条款的顺序(无论您是从 A 到 B 还是反之亦然)等。您必须对此深思熟虑,否则您可能会得到一些迹象问题。

于 2009-02-24T20:00:44.100 回答
2

大多数系统都有Arctan2(dy, dx)它给你一个完整的圆的角度(并照顾垂直),所以你会说Arctan2((By - Ay), (Bx - Ax))以弧度(从东逆时针)获得方向。对于度数乘以360/(2*PI)

只要确保 A != B。

于 2009-02-24T20:15:44.797 回答
1

Arctan 会导致度数或弧度,因此您的 A 和 B 很可能具有像 (x, y) 这样的坐标。然后你做 arctan((By - Ay) / (Bx - Ax)) 如果我没记错的话,这里 Bx 是 B 等的 x 坐标。

如果 A 和 B 没有坐标,则无法有意义地获取度数。

于 2009-02-24T19:58:02.827 回答
1

如果你只有一个长度并且这里没有隐藏的假设(比如说,三角形的一侧已经标准化):你不能

一个有趣的隐藏假设可能是:

  • 所有距离都是整数
  • 三角形至少和它一样长。

那么问题就很难了。


如果AB是点,那么你想要的角度可能是 x 轴的角度,你可以通过(使用 fortranish 名称)得到它:

atan((B.y - A.y)/(B.x - A.x))

或者如果你的图书馆里有它

atan2((B.y - A.y),(B.x - A.x))

它巧妙地处理除以零的情况......

于 2009-02-24T20:06:00.157 回答
0

如果 A 到 B 是直角三角形的斜边,那么 A 到 B 也将是从 A 到 B 的最短路径,因为它是两点之间的直线。

您可以通过将相邻边的长度除以对边的长度来计算任一非直角的反正切,因为它是切线的倒数。但是,根据您所描述的信息,您将缺少分子或分母。

有无限数量的直角三角形具有给定长度的斜边。

于 2009-02-24T20:03:59.647 回答