SVG Przechwytywanie współrzędnych myszy

Wiem, że pytania dotyczące współrzędnych myszy svg zostały zadane wcześniej, ale jestem dość zaskoczony obecnym zachowaniem, którego doświadczam i żaden z wątków nie wydaje się go rozwiązać.

Metoda, której używam do przechwytywania współrzędnych:

var pt = svg.createSVGPoint();  // Created once for document

function alert_coords(evt) {
    pt.x = evt.clientX;
    pt.y = evt.clientY;

    // The cursor point, translated into svg coordinates
    var cursorpt =  pt.matrixTransform(svg.getScreenCTM().inverse());
    console.log("(" + cursorpt.x + ", " + cursorpt.y + ")");
}

Problem polega na konwersji współrzędnych kliknięcia myszą na współrzędne svg w przestrzeni użytkownika. Używam współrzędnych do przeciągania prostokąta po ekranie, a gdy kursor przesuwa się dalej w prawo w przestrzeni svg, współrzędne stają się coraz bardziej przekrzywione. Aby przetestować to w prosty sposób, umieściłem trzy prostokąty w globalnej przestrzeni svg przy (100, 500), (500, 500), (1000, 500) i (1000, 200). Używając prostej funkcji rejestrowania, otrzymane współrzędne (plus lub minus 5 dla niedokładności myszy) wynoszą (98, 473), (487, 470), (969, 471), (969, 190). Jak widzisz dalej wzdłuż osi x lub y mysz idzie, tym bardziej staje się niedokładna. Próbowałem to powtórzyć w skrzydle, używając tej samej metody do przechwytywania współrzędnych myszy, ale nie mogę go tam powtórzyć ... Jeszcze jedną rzeczą, którą należy zauważyć, może być znaczący fakt, że kiedy loguję dokument svg, szerokość i wysokość są ustawione na wartości nieco mniejsze niż wartości pola widzenia, tj. 1380 szerokość i 676 wysokość przy wartości pola widzenia „0 0 1400 700”. Tak czy inaczej, oto skrzypce, wszystkie właściwości svg są takie same jak w moim programie.

http://jsfiddle.net/ASLma/11/

questionAnswers(1)

yourAnswerToTheQuestion