我正在尝试在 ActionScript 3 中编写一个公式,该公式将为我提供以度为单位的 var“z”(请参见下图),然后将其转换为弧度。

我已经知道变量“x”和“y”的值。使用三角学,如何计算斜边的长度以及 var z 的可变角度?AS3 或伪代码中的解决方案将非常有帮助。谢谢。

triangle

有帮助吗?

解决方案

你需要的是这样的:

var h:Number = Math.sqrt(x*x + y*y);
var z:Number = Math.atan2(y, x);

这应该给你以弧度为单位的角度,你可能需要交换 x/y 并可能添加或删除 90 度,但它应该可以解决问题!(请注意,您甚至不需要 H 要得到 z 当你使用atan2时)

我使用乘法而不是 Math.pow() 只是因为数学非常慢,你可以这样做:

var h:Number = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));

而且应该是一模一样的。

其他提示

z 相当于 yH 的 180 度角。或者:

180 - arctan(x/y) //Degrees
pi - arctan(x/y) //radians

另外,如果 Actionscript 的数学库有它,请使用 arctan2,它同时接受 x 和 y 并正确处理符号。

您想要的角度与 y 和 h 之间的相对角相同。

我们打电话吧 a 之间的角度 yh, ,你想要的角度实际上是 180 - a 或者 PI - a 取决于您的单位(度或弧度)。

现在几何告诉我们:

cos(a) = y/h
sin(a) = x/h
tan(a) = x/y

使用 tan(),我们得到:

a = arctan(x/y)

当我们寻找 180 - a 时,您应该计算:

180 -  arctan(x/y)

@Patrick 所说的,斜边也是 sqrt(x^2 + y^2).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top