[SVG] 讓物體在原地旋轉
SVG 物體旋轉的時候是以 <svg></svg>
的左上角當作圓心進行旋轉,因此當我們直接對 svg 內的元素進行 rotate
時,常常不是我們想要的效果。若我們想要讓物體在原地進行選轉的話,可以使用一些技巧。
操作範例
可以搭配範例看下面的說明,SVG 原地旋轉 @ Codepen
STEP 0: 原本方形的位置
假設我們原本在 <svg></svg>
中畫一個方形:
<svg>
<!-- 原本方形的位置(400, 300) -->
<rect
x="400"
y="300"
width="40"
height="30"
stroke="#41b883"
stroke-width="2"
fill="#41CEC0"
></rect>
</svg>
STEP 1: 先讓物體進行位移(translate)把圓心移到原物體中心點
為了讓這個方形能在原地旋轉,我們要把旋轉的圓心透過 translate
移動到方形的中心點:
我們可以計算出方形的中心點是:
// x' = x + width / 2
x' = 400 + 40 / 2 = 420
// y' = y + height / 2
y' = 300 + 30 / 2 = 315
因此我們可以寫 transform="translate(420, 315)"
<!-- STEP1: 先移動旋轉圓心的位置 -->
<!-- x' = x + width /2 -->
<!-- y' = y + height / 2 -->
<!-- translate(400 + 40/2, 300 + 30/2) -->
<rect
x="400"
y="300"
width="40"
height="30"
stroke="#41b883"
stroke-width="2"
fill="#41CEC0"
transform="translate(420, 315)"
></rect>