2

我正在玩 AS3 中的身体动画。我用所有部分(不包括手指)做了一个身体,并用“骨架”制作了一个 XML。XML 获得了每个部分的实例和下一部分的关节位置。我让它与基坐标(x,y)一起工作,当我旋转一个部分并再次重新计算所有链接(每个关节中的每个部分)时,身体会移动。

但是,这将需要对身体的每一个小修改进行一些计算,所以现在我正在对其进行优化。至于设计 x,y 更容易,所以当 body 实例创建时,类重新构建 XML 将坐标转换为极坐标系 (r,t),如下所示(“Quadro”是具有坐标的节点):

dx = Quadro.@x;
dy = Quadro.@y;
Quadro.@r = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2));
Quadro.@t = (dy>0)? Math.asin(dx/Quadro.@r) : Math.acos(dy/Quadro.@r);

我做了一些更改以使其正常工作,但列表中的一个象限总是错误的!在这种情况下,左上角是错误的。颈部和头部应该在这个位置并且它们在右上角(镜像)。

在 AS3 中正确转换的任何提示?

4

1 回答 1

2

尝试使用这个:

Quadro.@t=Math.atan2(dy,dx);

来自维基百科

笛卡尔坐标 x 和 y 可以通过以下方式转换为极坐标 r 和 φ,其中 r ≥ 0 和区间 (−π, π] 中的 φ:

在此处输入图像描述
在此处输入图像描述

于 2013-09-03T08:35:34.993 回答