我遇到了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