SVG 動畫

1、平移變換(translate)
平移表達式transform="translate(x,y)",即新坐標系的原點在原坐標系的(x,y)處。坐標軸的方向
不變。

2、旋轉變換(rotate)
transform="rotate(angle cx,cy)"。angle代表旋轉角度,缺省單位是“度”,瞬時針為正,逆時針為
負。(cx,cy)是旋轉中心所在的坐標。若省略旋轉中心坐標,則缺省值是(0,0)。

3、伸縮變換(scale)
transform="scale(sx,sy)",sx,sy分別代表x軸方向和y方向拉伸或縮小的比例因子。拉伸:大于1;``縮小:小于1。若省略sy,即sy=sx,作等比例縮放。

4、歪斜變換(skew)
transform="skewX(x-angle)"或transform="skewY(y-angle)",x-angle,y-angle分別代表沿x軸和y軸
歪斜的角度。

5、矩陣變換(matrix)
transform="matrix(a b c d e f)",這里的六個參數分別是變換矩陣中的六個參數。特點是靈活性
大,無論多么復雜的變換,只需進行一次矩陣運算即可。

svg中transform的矩陣變換原理

transform的原理是計算機圖形學中的2D矩陣變換, 在開始之前,首先來復習下一個簡單的線性代數知識:矩陣與向量乘法。太復的用不到,只需要3維向量與3x3矩陣的乘積:
image001

接下來我們來說說transform跟矩陣乘法的關系,我們的任何一個html元素渲染完成后可以得到一張位圖,把這張位圖上所有的點都做一次矩陣運算,將得到一張的新的位圖,這就是transform的基本含義。 首先來看最簡單的transform,translate。我們都知道tansform:translate(tx,ty);的基本含義是將一個元素的顯示位置平移tx,ty。在矩陣變換中,translate體現為下面的矩陣運算:
image002
tansform:scale(sx,sy);將一個元素拉伸或者壓縮指定的倍數,它對應的矩陣變換是:
image003
transform:rotate(a)將一個元素旋轉角度a,它對應的矩陣變換是:
image004

transform:skew(ax,ay)將一個元素研x向和y向傾斜角度ax和ay,它對應的矩陣變換是:
image005
transform:matrix(a,b,c,d,e,f)則是完整的矩陣變換,把這張位圖上所有的點都做一次矩陣乘法,得到的新位圖
image006
transition涉及到的則是另一個數學概念:貝塞爾插值。 transition的變換函數有 linear ease ease-in ease-out ease-in-out幾種,通常我們嘗試使用時能感覺到它們之間稍有不同。 實際上,它們是使用了不同的參數進行三次貝塞爾插值計算的結果。所以我們先來復習一下貝塞爾插值: 一個量(可以是任何矢量或者標量)從一個值到變化到另一個值,如果我們希望它按照一定時間平滑地過渡,就必須要對它進行插值。 最基本的情況,我們認為這個變化是按照時間均勻進行的,這個時候,我們稱其為線性插值。而實際上,線性插值不大能滿足我們的需要,因此數學上出現了很多其它的插值算法,其中貝塞爾插值法是非常典型的一種。它根據一些變換中的控制點來決定值與時間的關系。 K次貝塞爾插值算法需要k+1個控制點,最簡單的一次貝塞爾插值就是線性插值,將時間表示為0到1的區間,一次貝塞爾插值公式是:
image007
二次貝塞爾插值有3個控制點,相當于對P0和P1,P1和P2分別做貝塞爾插值,再對結果做一次貝塞爾插值計算
image008
三次貝塞爾插值則是兩次二次貝塞爾插值的結果在做一次貝塞爾插值:
image009
回到我們的transition,我們要用到的就是三次貝塞爾插值算法了。 把時間認為是0,1區間,待變換屬性也認為是0,1區間,那么所有的控制函數都是三次貝塞爾函數: ease [0, 0] [0.25, 0.1] [0.25, 1.0] [1.0,1.0] linear [0, 0] [0.0, 0.0] [1.0, 1.0] [1.0,1.0] ease-in [0, 0] [0.42, 0] [1.0, 1.0] [1.0,1.0] ease-out [0, 0] [0, 0] [0.58, 1.0] [1.0,1.0] ease-in-out [0, 0] [0.42, 0] [0.58, 1.0] [1.0,1.0] cubic-bezier(x1,y1,x2,y2) [0, 0] [x1, y1] [x2, y2] [1.0,1.0] 最后附上各函數圖,請自行辨認:
image010
image011
image012
image013
image014

源自 http://www.cnblogs.com/jenry/archive/2010/12/11/1903397.html
http://www.2cto.com/kf/201301/186980.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,182評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,489評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,290評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,776評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,510評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,866評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,860評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,036評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,585評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,331評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,536評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,058評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,754評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,154評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,469評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,273評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,505評論 2 379

推薦閱讀更多精彩內容