2012-12-14 11 views
5

Mój cel to uzyskanie svg:ellipse z czterema punktami kontrolnymi, których można użyć do zmiany rozmiaru i obracania. Mój kod działa dobrze, jeśli transformacja obrót jest zastosowana do samej elipsy, ale chcę zastosować obrót do kontenera svg:g, aby punkty kontrolne obróciły się jednocześnie bez dużej ilości dodatkowego kodu. Kiedy zastosuję transformację do grupy, rotacja źle działa, zakładam, ponieważ nie myślę właściwie o przekształconych współrzędnych.Przeciągnij, aby obrócić SVG: grupa g

Zobacz tutaj: http://jsfiddle.net/PbKYn/3/

Zauważ, że kąt pomiędzy migoczącego pozytywnej i negatywnej wartości bliskiej początku obrotu i że 2pi obrót myszy obraca się tylko kształt 1pi. (Nie sądzę, mój angleBetweenPoints funkcja jest źle chociaż, ponieważ jeśli stosuje rotację do <ellipse> a nie <g>, rotacja jest doskonały.)

Co robię źle? Thanks-

+0

Jeśli kliknę na jeden z uchwytów i spróbuję obrócić całą elipsę o 360 °, to nie podążam całą tą drogą. Chcesz tego? – philipp

+0

@philipp nie, to jeden z błędów, oprócz migotania wokół 0 stopni. Zatrzaśnięty punkt kontrolny powinien pozostać pod myszą. – ZachB

Odpowiedz

11

http://jsfiddle.net/PbKYn/5/

Rozwiązaniem było zmiany kąta obrotu z angleBetweenPoints do currentAngle + angleBetweenPoints (pseudo). Myślę, że oznacza to, że po zastosowaniu obrotu, współrzędne zostały również przekształcone tak, że angleBetweenPoints był zasadniczo dając dTheta zamiast theta. Le westchnienie.

+0

Dobre znalezisko! Pamiętaj, że możesz zaakceptować własne odpowiedzi. – Wex

+0

@Wex, dzięki zapomniałem przyjąć :) – ZachB

Powiązane problemy