2012-12-14 51 views
5

我的目標是讓svg:ellipse帶有四個控制點,您可以使用它們來調整大小和旋轉。我的代碼工作正常,如果旋轉變換應用於橢圓本身,但我想將旋轉應用於容器svg:g,以便控制點同時旋轉,而無需額外的代碼。當我將變換應用到組中時,我假設旋轉失常,因爲我沒有正確地考慮變換後的座標。拖動以旋轉SVG:g組

在這裏看到:http://jsfiddle.net/PbKYn/3/

注意,角度附近的旋轉開始時的正,負值之間和鼠標的2PI旋轉僅旋轉形狀1PI閃爍。 (我不認爲我的angleBetweenPoints功能是錯的,因爲如果我申請轉動到<ellipse>而不是<g>,旋轉是完美的。)

我在做什麼錯? Thanks-

+0

如果我點擊其中一個手柄並嘗試旋轉360°的整個橢圓,我不會遵循整個方法。你想要這個嗎? – philipp

+0

@philipp不,這是一個錯誤,除了0度左右的閃爍。點擊的控制點應該留在鼠標下面。 – ZachB

回答

11

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

的修復程序是改變從angleBetweenPointscurrentAngle + angleBetweenPoints(僞)的旋轉角度。我認爲這意味着在應用旋轉之後,座標也被變換,使得angleBetweenPoints本質上給出dTheta而不是theta。勒嘆。

+0

好找!請記住,你可以接受你自己的答案。 – Wex

+0

@Wex,謝謝忘記接受:) – ZachB