我正在创建一个 Canvas 对象(线条、顶点、三角形......),我想对它们应用围绕一个点的旋转。
我不能使用 Canvas 的 rotate() 方法,因为点附加到地图上的 GeoPoint,所以如果我使用 rotate() 方法,所有地图都在旋转......
问题是 Canvas 需要 Point(int,int) 并且由于 cos 和 sin 函数而应用旋转会创建 double 。因此,当我将旋转应用于所有点时,由于将 double 转换为 int,我遇到了一些图形问题......
所以我正在寻找最好的解决方案。
这是我的轮换代码:
public Point rotatePoint(Point pt, Point center)
{
this.angle = ((this.angle/180)*Math.PI);
double cosAngle = Math.cos(this.angle);
double sinAngle = Math.sin(this.angle);
pt.x = center.x + (int) ((pt.x-center.x)*cosAngle-(pt.y-center.y)*sinAngle);
pt.y = center.y + (int) ((pt.x-center.x)*sinAngle+(pt.y-center.y)*cosAngle);
return pt;
}