如何计算Android路径中的arcTo参数

时间:2011-06-29 18:33:42

标签: android graphics path

我从Visual C ++将一些代码移植到Android。 VC ++ ArcTo函数将边界矩形以及起点和终点作为参数来定义弧。 android.graphics.Path函数arcTo将边界矩形和“起始角度”和“扫掠角度”作为参数。

我不清楚如何将VC坐标集转换为Android集,或者这两个角是什么。弧也有方向(CW或ACW) - 我不清楚如何将它们合并到一个路径中,或者如何在一个路径中切换。

我遇到的一个奇怪的是,在Android函数中,角度以度数表示,而不是弧度,这是大多数计算将使用的和人们期望的。

我希望我的问题有某种意义,有人可以提供帮助!

编辑:继续我从Dredel博士那里获得的帮助,以及大量的图表绘制,这是我最终将VC ++调用转换为Android的方式:

else if (coord.isArc())  
{  
    ptCentre = getPoint(new Coord(coord.getArcLat(), coord.getArcLong()));  
    nRadius = getPixels(coord.getArcRadius());  
    rect = new RectF(ptCentre.x - nRadius, ptCentre.y - nRadius,  
                     ptCentre.x + nRadius, ptCentre.y + nRadius);  
    if (coord.isClockwise())  
    {  
        alpha = Math.atan2(ptCentre.y - ptStart.y, ptCentre.x - ptStart.x) *  
                           Constants.k_d180Pi;  
        beta = Math.atan2(ptCentre.y - ptEnd.y, ptEnd.x - ptCentre.x) *  
                           Constants.k_d180Pi;  
        path.arcTo(rect, (float)(alpha + 180), (float)(180 - beta - alpha));  
    }  
    else  
    {  
    }

正如你所看到的,我还没有做过逆时针弧,但它应该是相似的。我的计算并不完美,因为我最初使用(360 - beta - alpha)而不是(180 - beta - alpha),原始版本给出了一些非常有趣的结果!
(哇!这种格式化机制是怪异的另一面!)

0 个答案:

没有答案