我遇到了2D旋转实现的问题。我正在尝试为地图创建一个平移功能(将鼠标移动到上方;它应该将地图向下移动)。地图只是一个可以旋转的二维背景图像等。问题是当它位于旋转状态移动我的鼠标将继续移动鼠标的方向,就好像它有0度的旋转。 (IE。旋转的90度地图会切换移动鼠标左移鼠标。)我试着在下面实现一个修正,但在某些地图角度向上移动时,地图会向下移动&稍微向左移动并向上移动地图&稍微正确。我正在寻找删除“略有”。旋转并应用到当前鼠标坐标的鼠标差异
在OnMouseMove事件中,我得到了上一个位置和当前位置之间的差异,以确定我的鼠标在X轴上的移动量。然后,我将这些X和Y差异转换成二维旋转公式来计算旋转后的X,Y差异。我采取旋转的差异并缩放它,并将其添加到我的旧地图点的位置以获取新的经纬度。这对于0度坐标的工作很好,就像93度一样略微下降。
任何帮助,为什么它会略有关闭?谢谢!
double cosA = Math.Cos(MapAngle.DecimalRadians);
double sinA = Math.Sin(MapAngle.DecimalRadians);
double dx = (_oldMouseX - args.MouseX);
double dy = (_oldMouseY - args.MouseY);
double rdx = (cosA*dx - sinA*dy);
double rdy = (sinA*dx + cosA*dy);
double latitude = oldMapPoint.Latitude.DecimalDegrees + rdy * latitudePerPixelScale;
double longitude = oldMapPoint.Longitude.DecimalDegrees + rdx * longitudePerPixelScale;
请注意,此代码的正好两行与鼠标有任何关系。其余的是2d几何。 – 2010-08-26 22:37:14