從矩陣來看Android中的一些動畫變換

個人博客: http://zhangsunyucong.top


開頭

這篇博客奖年,是參考了文章:Android Matrix友题,這篇文章有具體的分析過程和android實(shí)例都办。我只是參考和根據(jù)自己的理解寫的美侦。

在Android中系谐,我們可以從數(shù)學(xué)的角度來看顏色和動畫的變換巾陕。這里會從矩陣變換的角度來理解平移讨跟,旋轉(zhuǎn),縮放鄙煤,對稱的變換晾匠。

這些變換的完成實(shí)際上,是操作一個3X3的矩陣的梯刚。而這四種基本變換與操作和這個矩陣有什么樣的關(guān)系呢凉馆?下面會分析。

圖片

在Android中亡资,已經(jīng)為每種變換提供了pre澜共、set和post三種操作方式。

set 用于設(shè)置Matrix中的值锥腻。
pre 是先乘嗦董,因?yàn)榫仃嚨某朔ú粷M足交換律,因此先乘瘦黑、后乘必須要嚴(yán)格區(qū)分京革。先乘相當(dāng)于矩陣運(yùn)算中的右乘。
post 是后乘幸斥,因?yàn)榫仃嚨某朔ú粷M足交換律匹摇,因此先乘、后乘必須要嚴(yán)格區(qū)分甲葬。后乘相當(dāng)于矩陣運(yùn)算中的左乘来惧。

另外,除平移變換(Translate)外演顾,旋轉(zhuǎn)變換(Rotate)、縮放變換(Scale)和錯切變換(Skew)都可以圍繞一個中心點(diǎn)來進(jìn)行隅居,如果不指定钠至,在默認(rèn)情況下是圍繞(0, 0)來進(jìn)行相應(yīng)的變換的。

平移變換

圖片

假設(shè)坐標(biāo)系中有A和B兩個點(diǎn)胎源,從A平移到B點(diǎn)棉钧,它們之間的關(guān)系上圖所示。

在x和y軸的移動增量分別是:


圖片

則易得:


圖片

它的矩陣表示為:
圖片

旋轉(zhuǎn)變換

1涕蚤、圍繞坐標(biāo)原點(diǎn)旋轉(zhuǎn)
圖片

由A點(diǎn)順時針旋轉(zhuǎn)一定角度到B點(diǎn)宪卿,如圖所示。

由圖易知:


圖片

由上面四個式子万栅,可得:


圖片

矩陣表示佑钾,得:
圖片

旋轉(zhuǎn)變換

2、圍繞某點(diǎn)旋轉(zhuǎn)

假設(shè)旋轉(zhuǎn)點(diǎn)是:


圖片

順時針旋轉(zhuǎn)烦粒,結(jié)合1休溶、上面的推導(dǎo)結(jié)果代赁,可以得到矩陣:


圖片

可以化為:
圖片

可知,圍繞某一點(diǎn)進(jìn)行旋轉(zhuǎn)變換兽掰,可以分成3個步驟芭碍,即首先將坐標(biāo)原點(diǎn)移至該點(diǎn),然后圍繞新的坐標(biāo)原點(diǎn)進(jìn)行旋轉(zhuǎn)變換孽尽,再然后將坐標(biāo)原點(diǎn)移回到原先的坐標(biāo)原點(diǎn)窖壕。

縮放變換

A點(diǎn)的x,y坐標(biāo)分別放大a,b倍杉女。則有一下關(guān)系:


圖片

用三維矩陣表示為:


圖片

對稱變換

1瞻讽、如果對稱軸是x軸,則有:


圖片

用三維矩陣表示為:


圖片

2宠纯、如果對稱軸是y軸卸夕,則有:


圖片

用三維矩陣表示為:


圖片

3、如果對稱軸是y = x軸婆瓜,如圖


圖片

由等腰直角三角形可知:


圖片

已知中點(diǎn)在對稱軸上快集,由中點(diǎn)坐標(biāo)公式,易得:
圖片

聯(lián)合兩式子廉白,2式先乘以2个初,再兩式相加和相減,可得:


圖片

用三維矩陣表示為:
圖片

4猴蹂、如果對稱軸是y = -x軸院溺。
同理,易推導(dǎo)得:
圖片

5磅轻、如果對稱軸是y = kx時珍逸。如圖

圖片

由圖易知:


圖片

則有:


圖片

由直線的斜率公式,可得:
圖片

中點(diǎn)坐標(biāo)在直線上聋溜,結(jié)合中點(diǎn)坐標(biāo)公式谆膳,易得:


圖片

由上面兩式,可求得:
圖片

用三維矩陣表示為:
圖片

k為任意實(shí)數(shù)撮躁,可以取特殊的值漱病,驗(yàn)證前面對稱推導(dǎo)的結(jié)果。k為1或者-1時把曼,k為0時杨帽,k為無窮大時等等。

6嗤军、如果對稱軸是y = kx + b時

只需要在5的基礎(chǔ)上增加兩次平移變換即可注盈,即先將坐標(biāo)原點(diǎn)移動到(0, b),然后做上面的關(guān)于y = kx的對稱變換型雳,再然后將坐標(biāo)原點(diǎn)移回到原來的坐標(biāo)原點(diǎn)即可当凡。用矩陣表示大致是這樣的:


圖片
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末山害,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沿量,更是在濱河造成了極大的恐慌浪慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朴则,死亡現(xiàn)場離奇詭異权纤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)乌妒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門汹想,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撤蚊,你說我怎么就攤上這事古掏。” “怎么了侦啸?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵槽唾,是天一觀的道長。 經(jīng)常有香客問我光涂,道長庞萍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任忘闻,我火速辦了婚禮钝计,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘齐佳。我一直安慰自己私恬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布炼吴。 她就那樣靜靜地躺著践付,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缺厉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天隧土,我揣著相機(jī)與錄音提针,去河邊找鬼。 笑死曹傀,一個胖子當(dāng)著我的面吹牛辐脖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播皆愉,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼嗜价,長吁一口氣:“原來是場噩夢啊……” “哼艇抠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起久锥,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤家淤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瑟由,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體絮重,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年歹苦,在試婚紗的時候發(fā)現(xiàn)自己被綠了青伤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡殴瘦,死狀恐怖狠角,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚪腋,我是刑警寧澤丰歌,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站辣吃,受9級特大地震影響动遭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜神得,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一厘惦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哩簿,春花似錦宵蕉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宗苍,卻和暖如春稼稿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讳窟。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工让歼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丽啡。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓谋右,卻偏偏與公主長得像,于是被迫代替她去往敵國和親补箍。 傳聞我的和親對象是個殘疾皇子改执,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容