android camera擷取matrix作用於canvas的研究

來源:互聯網
上載者:User

android camera擷取matrix作用於canvas的研究

網上查了一下相關的文章,認為自己看懂了,但是實際測試時和網上說的並不一樣(後來研究發現,那個人寫的是錯的!!!),所以,在此提醒大家,要勇於質疑,勇於提出問題。

首先說明camera類,這個類位於package android.graphics 包下,用於映像3D變換,通過旋轉、位移等方式,最終通過getMatrix(Matrix)方法拿到矩陣,作用於canvas,使得畫面呈現出立體效果。

camera的源碼沒什麼看的,這裡列舉他的主要方法:

    public native void save();    public native void restore();    public native void translate(float x, float y, float z);    public native void rotateX(float deg);    public native void rotateY(float deg);    public native void rotateZ(float deg);    public native void rotate(float x, float y, float z);    public native float getLocationX();    public native float getLocationY();    public native float getLocationZ();    public native void setLocation(float x, float y, float z);    public void getMatrix(Matrix matrix) {        nativeGetMatrix(matrix.native_instance);    }    public void applyToCanvas(Canvas canvas) {        nativeApplyToCanvas(canvas.mNativeCanvas);    }    public native float dotWithNormal(float dx, float dy, float dz);

這些方法看起來都不難,通過字面意思可以大致進行瞭解,其中最後幾個方法目前還未研究,後面研究了補上。


接著我們來看看Camera變換的幾個軸座標,圖有點難看哈。


這個才是正確的x, y ,Z 軸座標,而另外一個文章說的左手座標系,經過我的驗證那個作者寫的是錯誤的。

<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+Y2FtZXJhzrvT2tf4seq140+146OoMCwwLDCjqaOs0rK+zcrHzbzW0LXE1/PJz73HPC9wPgo8cD5yb3RhdGU8L3A+CjxwPr3T18XO0sPHv7TI57rO0P3XqqOsztLDx7zZyei/ydLU16q2r8281tDX+LHqz7WjrM7Sw8fQ/deq1/ix6s+1o6zIw1jW4dX9t73P8ta4z/LO0sPHo6zSsr7NysfLtdXiyrG68s7Sw8e/tLn9yKVBteO6zU+149bYus/By6OoxNzA7b3iw7Sjv7K7xNzA7b3ixMO49re9v+m2q87316rXxdfUvLq/tKOpoaPIu7rzo6zV4sqxuvLR2NfFy7PKsdXrvfjQ0ND916qjrMi7uvPO0sPHtNPK1rv6xsHEu7e9z/K527Lso6y+zbvht6LP1rHku6/By6GjPC9wPgo8cD7Ex87Sw8fU2b+00ru49sD919OjumNhbWVyYS5yb3RhdGVZKDQ1KTwvcD4KPHA+y/vS4su8ysfIxnnW4cuzyrHV69D916o0NbbIoaPI57n7zu/M5dbQvOTP37rNedbh1ti6z6Os1f3IxnnW4cuzyrHV69D916o0NbbIvs3Kx9a4zu/M5dPSsOuyv7fWz/LA77et16qjrNfzsOuyv7fWz/LN4ret16qjuzwvcD4KPHA+Y2FtZXJhLnJvdGF0ZVgoNDUptcTS4su8ysfIxnjW4cuzyrHV69D916o0NbbIoaO+2cD9wLTLtaOsyOe5+87vzOXW0Lzkz9+6zXjW4dbYus+1xLuwo6zIxnjW4cuzyrHV69D916o0NbbIvs3Kx9a4zu/M5cnPsOuyv7fWz/LA77et16qjrM/CsOuyv7fWz/LN4ret16qjuzwvcD4KPHA+Y2FtZXJhLnRyYW5zbGF0ZSg0MCwgMzAsIDMwKbXE0uLLvKOs1NrNvNbQv7S+zcrHsNG527Lszu/M5dPS0sY0MKOsz8LSxjMwo6zP8nrW4dX9t73P8tLGMjCjqLy0yMPO78zl1LbA68bBxLujrLy0zu/M5b2ru+Gx5NCho6mjuzxicj4KPC9wPgo8cD48YnI+CjwvcD4KPHA+ztLDx7+0vLi49s28wLS808nuwO294qO6PC9wPgo8cD7K18/I1K3NvKO6PC9wPgo8cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20150117/20150117092512162.png" alt="\">

進行變換:camera.rotateX(60);


進行變換: camera.rotateY(60);


進行變換:camera.rotateZ(-60); (這裡是-60哈)


translate和canvas的位移類似,這裡不再示意。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.