順時針和逆時針旋轉難道效果是一樣的嗎? 按照肉眼可見,應該是不同的,所以是由默認的按逆時針旋轉的規定嗎?


其實在Direct3D是默認左手坐標系的,也就是從屏幕外面指向屏幕裡面是Z軸正方向,旋轉也是順時針的,而OpenGL默認是右手坐標系,也就是從屏幕裡面指向屏幕外面是Z軸正方向 ,旋轉也是逆時針的

本圖轉自互聯網

( https://blender.community/c/rightclickselect/K0bbbc/can-there-be-an-option-added-to-use-the-traditiona )

D3D默認的旋轉矩陣構建方式 Transforms (Direct3D 9) - Windows applications

繞X軸順時針轉theta

OpenGL的,可見與D3D中theta取反效果一樣 OpenGL - Transformations

繞X軸逆時針轉theta

如果把旋轉的角度設為負數,那就能以相反的方向轉啦。

在繪圖時也可以用Direct3D中的D3D11_RASTERIZER_DESC中的FrontCounterClockwise改成OpenGL的方式,也可以在OpenGL中用glFrontFace(GL_CW)來改成D3D11的方式來進行面剔除

2D很多情況下貌似theta的定義是「第一象限是theta值為0~90度之間,第二象限是90~180度,第三象限是180~270度,第四象限是270~360度」這麼規定的(因為課本上講到【極坐標系】的時候大多數時候是這樣的),但是也可以用不同的方式定義的吧,那樣就有可能默認是順時針轉了吧


大部分情況默認逆時針選擇,負值的旋轉弧度(角度)就代表順時針旋轉。

至於這麼規定的原因,我個人感覺和坐標系主要使用右手繫有關。右手握拳的方式剛好是逆時針方向。反之,在使用左手系時就反過來了。


物體的旋轉(rotation)是一個狀態,跟坐標一樣,一般是以四元數來表示的,這個狀態不需要指定方向,只需要指定旋轉軸(類似坐標與坐標系的關係)和旋轉角度(類似坐標系的正方向)。旋轉(rotate)是指物體由一個旋轉變換到另一個旋轉的過程,當然是要指定方向的,順時針轉與逆時針轉顯然是不同的體驗


結論:旋轉需要指定方向(不管3D還是2D)。

順時針和逆時針旋轉難道效果是一樣的嗎?

這個問題也對也不對。如果順時針旋轉360度,逆時針旋轉360度想過當然一樣。但是通常情況下,順時針和逆時針旋轉的效果是不一樣的。

舉個2D的栗子:

如下一個三角形,我分別逆時針和順時針旋轉50度。具體操作是需要選擇旋轉中心和旋轉方向(逆時針or順時針)

繞C點逆時針旋轉50度

繞C點順時針旋轉50度

紅色三角形是逆時針旋轉所得,綠色三角形是順時針旋轉所得

按照肉眼可見,應該是不同的,所以是由默認的按逆時針旋轉的規定嗎?

這個問題跟具體的軟體有關。如果你自己寫一個軟體:選定旋轉中心or旋轉軸,給出角度。你也可以讓它默認的順時針旋轉。不過很多軟體默認的旋轉方向確實是逆時針的,比如Blender。


這個跟參考繫有關,要看是左手參考系還是右手參考系,形象一點,比如opengl是屬於右手參考系,那對於opengl來說,想像一下,右手大拇指沿著坐標軸正軸方向,除了大拇指外四根手指彎曲的方向,逆時針就是正方向,順時針是反方向。


羅德里格斯矩陣瞭解一下


推薦閱讀:
相關文章