【问题标题】:AS3 Polar coordinate from Cartesian coordinateAS3 来自笛卡尔坐标的极坐标
【发布时间】:2013-09-03 01:13:17
【问题描述】:

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

但是,这将需要对身体的每一个小修改进行一些计算,所以现在我正在优化它。至于de design 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 中正确转换的任何提示?

【问题讨论】:

    标签: actionscript-3 math coordinate-systems


    【解决方案1】:

    尝试使用这个:

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

    来自Wikipedia

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


    【讨论】:

    • 是的!我刚刚修正了 x,y 定位(它是倒置的)以标记为正确答案。
    • @GustavoPinent,我很困惑!第一个参数应该是该点的 y 坐标:help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/…
    • 好吧,我不是最好的解释,但它使用相反的顺序或坐标。我认为是因为该类使用以度为单位的旋转和转换,并且度数是顺时针的。所以有两个错误反转导致正确的结果。我会进行调查,以便正确使用公式。
    • 好的,我的代码中有一些概念上的错误,现在它是 100% 正确的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多