版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
判斷三維坐標系旋轉正方向的簡單方法更多0的方向判斷坐標方法簡單引言做iOS開發(fā),不免要接觸到一些特效,其中不乏3D特效,這時候就要對iOS所使用的坐標系了解才行。若不限于iOS開發(fā),還有MacOS開發(fā),若不知道它們所使用坐標系的不同,初學者會很容易陷于混亂,三維坐標系做3D特效,就要用到三維坐標系,這是后人在笛卡爾的平面坐標系的基礎上發(fā)明的。三維坐標系分兩種,左手坐標系和右手坐標系,為什么用左手和右手來區(qū)分呢?這是因為當確定了x軸,y軸方向之后,z軸的方向的兩種,它可以通過左手或右手來確定。下面就是這兩個坐標系的規(guī)則示意圖(圖中固定了x軸的正方向向右,y軸的正方向向上):左手 右手相信大多數(shù)人對圖中的右手坐標系很眼熟,沒錯,這就是初高中數(shù)學教材用到的三維坐標系,只是我們不一定知道它叫右手坐標系。左手坐標系我們之前很少接觸,但是在計算機圖形學中這種坐標系非常重要,比如iOS的UlView使用的坐標系就是左手坐標系。有人可能會說,不對吧,UIView的坐標系是原點在左上角,y軸正方向向下,圖中的不是這樣啊,其實沒錯啦,把圖中的左手坐標系沿x軸旋轉180度就是原點在左上角的左手坐標系,區(qū)別就是旋轉的角度不同而已。這是因為左手坐標系或者右手坐標系整體旋轉后性質是不變的。對坐標系使用左手與右手的命名,有一個作用就是用來方便判斷旋轉的正方向,這就是左手法則和右手法則。例如對左手坐標系,確定一個旋轉軸后,左手握住拳頭,拇指指向旋轉軸的正方向,四指彎曲的方向為旋轉的正方向。相應地,右手坐標系就用右手來判定。確定了旋轉的正方向后,在公式計算中就很容易知道是該使用正角度還是負角度了。下圖就是右手但是,這個判斷旋轉正方向的方法還是不夠快。給定任意一個旋轉角度的三維坐標系,如果按上面的方法判斷旋轉正方向,首先,你得確定這個坐標系是左手坐標系還是右手坐標系,這時你會先拿出一只手來,像上圖一樣擺好三根手指的姿勢來比對給定坐標系的x、y、z軸正方向看是否一致。然后根據旋轉軸的正方向,用相應的手來判斷旋轉正方向。其實,完全沒有必要這么麻煩。怎么更方便地判斷,且看我慢慢道來。先看第一個圖的兩個坐標系,左邊的為左手坐標系,右邊的為右手坐標系,兩坐標系的x軸和y軸正方向保持一致,z軸正方向相反。分別用左手法則與右手法則去判斷它們各自繞z軸旋轉的正方向,那么從我們眼睛看屏幕的角度來看,它們繞z軸旋轉的正方向都是逆時針,這當然不會是巧合。觀察這兩個坐標系,就會發(fā)現(xiàn)這個逆時針方向與x軸正方向箭頭頂點指向y軸正方向箭頭頂點的方向一致,這說明繞z軸旋轉的正方向與x軸正方向箭頭頂端指向y軸正方向箭頭頂端的方向有關聯(lián)嗎?我想是的。然后再嘗試判斷兩坐標系繞x軸旋轉的正方向,它與y軸正方向頂端指向z軸正方向頂端的方向一致;而繞y軸旋轉的正方向,與z軸正方向頂端指向x軸正方向頂端的方向一致。結論一據此,我覺得可以得出一個結論:對于任意旋轉角度的三維坐標系,繞某一坐標軸旋轉的正方向,與另外兩個坐標軸的正方向頂端按X—>Y—>Z—>X的順序進行指向的方向一致。這就意味著,判斷三維坐標系繞某一坐標軸旋轉的正方向,不用事先知曉這個坐標系是左手坐標系還是右手坐標系,完全不需要你用手去比劃.反過來,既然判斷旋轉正方向這么容易,我們也可以利用它來快速判斷一個坐標系是左手坐標系和右手坐標系:使用上述結論確定坐標系繞某一某旋轉的正方向,然后逆用左手法則與右手法則,大拇指指向該軸的正方向,如果左手四指彎曲的方向與旋轉的正方向一致,該坐標系就是左手坐標系,反之就是右手坐標系。不過這還是復雜,還是需要用手比劃。我突然想到了一個更好的方法:想象y軸是一面墻,你面朝前方斜靠在墻上,可以假設你的頭部為y軸正方向頂點,腳為x軸正方向頂點,那么z軸在你的左側時就是左手坐標系,在右側時就是右手坐標系。這個時候,人體的生長方向也剛好是繞z軸旋轉的正方向。結論二再擴展一下就是:對于任意旋轉角度的三維坐標系,想象你的腳踩在一個坐標軸(如x軸)正方向的頂點,頭倚靠在其鄰高坐標軸(如y軸)的正方向頂點,面朝背離原點的方向,那么,第三軸正方向頂點在你的左手邊時,這個坐標系就是左手坐標系,在右手邊時就是右手坐標系,而人體此時的生長方向就是繞第三軸(如z軸)旋轉的正方向。(注:這里的鄰高坐標軸是我自己定義的一個概念,X軸的鄰高坐標軸為Y軸,Y軸的鄰高坐標軸為Z軸,Z軸的鄰高坐標軸為X軸.)在這個方法里,坐標系屬性與繞坐標軸旋轉正方向的判斷達到了統(tǒng)一,從此可以拋棄左手法則與右手法則,也可以拋棄手指比劃的方式來判斷左右手坐標系,是不是會覺得很簡單?_?三維坐標系據說有一次笛卡爾生病了,躺在床上休息,但是他的大腦卻沒有休息,一只在尋思著通過什么手段把幾何圖形和代數(shù)方程關聯(lián)起來,也就是幾何圖形中的每一個點怎么和方程的每一組解關聯(lián)起來。這個時候他看到房頂上有一只蜘蛛在織網,蜘蛛空中爬來爬去。他想地上墻角的三面墻相交出三條線,把墻角作為原點,把這三條線作為數(shù)軸,那么蜘蛛某刻的位置可以通過這三條數(shù)軸上的數(shù)來表示,反過來,給定一組數(shù)便可以確定空間中的一點。后來笛卡爾發(fā)明了平面直角坐標系,當然上面的故事是三維空間的,只是為了說明,坐標系的作用是為了便于描述點的位置。(我們學過的除了平面直角坐標系這個二維坐標系外,還學過極坐標系,通過到原點的距離以及夾角角度來表示一個點。)后人在笛卡爾的平面坐標系的基礎上發(fā)明了三維坐標系,常用的三維坐標系分兩種:左手坐標系和右手坐標系。當確定了x軸,y軸方向之后可以通過左手或右手來確定z軸的方向。下圖則是左手坐標系和右手坐標系的規(guī)則示意圖:左手 右手彎曲拇指,食指和中指使它們兩兩相互垂直,拇指指向x軸正方向,食指指向y軸正方向,中指指向z軸正方向。左手坐標系使用左手,右手坐標系使用右手。(上面示意圖中的左手坐標系或者右手坐標系整體旋轉后性質不變,比如左手坐標系旋轉后,使得y軸正方向向下,x軸正方向保持向右,它依然是左手坐標系。)另外還有一個左手或者右手定則來判斷旋轉的正方向,握住拳頭,拇指指向旋轉軸的正方向,四指彎曲的方向為旋轉的正方向。左手坐標系使用左手來判定,右手坐標系使用右手來判定.
下圖是右手的例子下圖是右手的例子:二Mac,iOS界面中的坐標系話說Mac,iOS中的各種坐標系總會讓初學者摸不著頭腦,一會兒這樣一會兒那樣。不過有一點是不變的,z軸的正方向總是指向觀察者,也就是垂直屏幕平面向上。1?NSView坐標系在Mac中NSView的坐標系默認是右手坐標系(View其實是二維坐標系,但是為了方便我們可以假設其是三維坐標系,只是所有界面的變化都是在xy平面上),原點在左下角.NSView提供了一個可以用于覆蓋的方法-(BOOL)isFlipped;
此默認返回NO,當返回YES的時候,則坐標系變成左手坐標系,坐標原點變成左上角。Standard<unflipped}亡oordinaLesFlippedGQprdinates在Mac的AppKit中有很多界面組件本身就使用了FlippedCoordinateSystem(覆蓋了上面的方法并返回YES),如NSButton,NSTableview,NSSplitView更詳細的看這里其中CocoaUseofFlippedCoordinates這一節(jié)https://developer.apple.eom/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/Transforms/Transforms.html
2?UIView坐標系{0.0)9而在{0.0)9而在iOS的UlView中,則沒有所謂的FlippedCoordinate的概念,統(tǒng)一使用左手坐標系,也就是坐標原點在左上角.3?Quartz坐標系Quartz(CoreGraphics)坐標系使用的右手坐標系,原點在左下角,所以所有使用CoreGraphics畫圖的坐標系都是右手坐標系,當使用CG的相關函數(shù)畫圖到UIView上的時候,需要注意CTM的Flip變換,要不然會出現(xiàn)界面上圖形倒過來的現(xiàn)象。由于UIKit的提供的高層方法會自動處理CTM(比如UIImage
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨境電商保稅倉2025年收發(fā)貨協(xié)議
- 池洲初三期末考試試卷及答案
- 2025-2026人教版八年級地理上學期期末測試卷
- 2025 小學六年級科學上冊科學教育中的創(chuàng)新意識激發(fā)策略課件
- 檢查各部門衛(wèi)生制度
- 水樂園衛(wèi)生管理制度
- 洗浴衛(wèi)生制度
- 社區(qū)衛(wèi)生監(jiān)督員工作制度
- T∕CAICI 126-2025 5G消息業(yè)務增強能力規(guī)范-AI智能體能力要求
- 關于衛(wèi)生間管理制度
- 雷波縣糧油貿易總公司 2026年面向社會公開招聘備考考試試題及答案解析
- 療養(yǎng)院員工勞動保護制度
- 2026浙江溫州市蒼南縣城市投資集團有限公司招聘19人考試參考試題及答案解析
- 2026年廣州中考化學創(chuàng)新題型特訓試卷(附答案可下載)
- 2025司法鑒定人資格考試考點試題及答案
- 保健用品生產管理制度
- 檔案計件工資管理制度
- 浙江省杭州市拱墅區(qū)2024-2025學年八年級上學期語文期末試卷(含答案)
- DB11∕T 695-2025 建筑工程資料管理規(guī)程
- 產科護理中的人文關懷與溝通藝術
- 2025年廣電營銷考試題庫
評論
0/150
提交評論