我从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),原始版本给出了一些非常有趣的结果!
(哇!这种格式化机制是怪异的另一面!)