Math 板


LINE

參考維基的公式 (https://zh.m.wikipedia.org/zh-tw/欧拉角) 有參考座標系xyz已經相對座標系XYZ 想照公式得到alpha beta gamma 有兩個問題: 為何beta角:z軸與Z軸夾角範圍是0~pi 跟空間中計算有向角的公式 a,b 夾角範圍0~2pi 感謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.65.110 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Math/M.1595679373.A.94C.html
1F:推 hwanger : a,b間夾角T是用內積算 T= cos^{-1}(<a,b>) 其中<a,b07/26 14:40
2F:→ hwanger : >是用內積 座標用舊的即可07/26 14:40
3F:推 hwanger : beta角只需要0到pi是因為pi到2pi的部份是多餘的 可07/26 14:44
4F:→ hwanger : 以透過旋轉不同的alpha和gamma達到相同的結果07/26 14:44
5F:推 hwanger : 另外你問a,b之間的"有向角" 這個問題必須在 "對於a,07/26 15:10
6F:→ hwanger : b所展開的子空間中 有給定一個「有序基底」" 的前07/26 15:10
7F:→ hwanger : 提下才有意義07/26 15:10
8F:推 hwanger : 如果你的方向就是a轉到b 那用gram-schmidt可以找到07/26 15:16
9F:→ hwanger : 一組同方向的正交基 e1 e2 將a b的座標用e1 e2表示07/26 15:16
10F:→ hwanger : 就可以用平面的方法求有向角07/26 15:16
感謝大大 我後來有發現是我需要任意ab平面的有序基底 可以定出n(法向量) 但得到的不會是有序的第三個基底 我只有參考座標系xyz 跟目標座標系XYZ 是能得到有序基底的嗎? ※ 編輯: magic83v (101.12.65.110 臺灣), 07/26/2020 18:25:40
11F:推 hwanger : 我不太清楚你的想法 不過我猜下列可能解答你的問題07/26 18:54
12F:→ hwanger : 對三維空間中的一平面及選定的一個法向量 在保持右07/26 18:54
13F:→ hwanger : 手定則的情況下 平面上的方向是唯一的07/26 18:54
14F:推 hwanger : 也就是說 為了配合你選的法向量 你子空間的有序基07/26 19:02
15F:→ hwanger : 不再能亂選07/26 19:02
16F:推 hwanger : 現在假設在三維空間下已經給定一組基底e1,e2,e3 現07/26 19:41
17F:→ hwanger : 在給一個平面L及一個法向量n(假設為單位向量) 07/26 19:41
18F:→ hwanger : 那你可以用高斯消去法去確定n,e1,e2,e3的相依性 並 07/26 19:41
19F:→ hwanger : 決定一組basis{n,ei,ej} 07/26 19:41
20F:→ hwanger : 用gram-schmidt得到一組正交基 n, f1,f2 07/26 19:41
21F:→ hwanger : 如果det[n,f1,f2]>0 則f1,f2就是平面的有序基 如果 07/26 19:41
22F:→ hwanger : 小於0 則有序基是f2,f1 07/26 19:41
23F:推 hwanger : 以上的算法一定不是最快的 但是直觀性最強的 07/26 19:44
了解 正在往這方向思考 似乎有找到有序基底和我要的n 不過還在驗證正確性 還有一個問題是我按照wiki的zxz轉動得到的歐拉角 歐拉角的逆運會是唯一嗎 (x,y,z) (X,Y,Z) 得到(a,b,r) (表歐拉角) 我再用x,y,z也都能得到一樣的(X,Y,Z)嗎 真的是感謝h大! 前面講的是假設我有有序基底 如果沒有的話還有什麼做法嗎? (如wiki的圖 https://i.imgur.com/0Qf1UUR.jpg 這個交點線的方向 只用z,Z 外積得到的話 方向也是取決於角度 但是我只有zZ兩軸 也定不出有序基底的樣子 ※ 編輯: magic83v (101.12.65.110 臺灣), 07/26/2020 20:17:55
24F:推 hwanger : 歐拉角的逆運會是唯一嗎>>>我不太懂這段的意思 07/26 20:28
我以xyz參考座標系 和 XYZ相對座標系 得到的歐拉角 (這裡先當作xyz=e1,e2,e3 ) 照歐拉角得到的旋轉矩陣R 一定能得到 [XYZ] = R [e1,e2,e3]嗎 ※ 編輯: magic83v (101.12.65.110 臺灣), 07/26/2020 20:37:53
25F:推 hwanger : "這個交點線的方向 只用z,Z 外積得到的話 方向也是07/26 20:36
26F:→ hwanger : 取決於角度">>>你算的方向不會取決於角度 注意beta07/26 20:36
27F:→ hwanger : 介於0到pi之間07/26 20:36
28F:→ hwanger : zxZ的方向是從z出發 經由zZ之間小於pi的角 再到Z07/26 20:36
29F:→ hwanger : 用右手四指表示旋的方向 大姆指指向外積結果的方向07/26 20:36
30F:推 hwanger : "前面講的是假設我有有序基底07/26 20:43
31F:→ hwanger : 如果沒有的話還有什麼做法嗎?">>>這邊我其實一直07/26 20:43
32F:→ hwanger : 都不太懂為什麼要特地討論有向角 算歐拉角其實不用07/26 20:43
33F:→ hwanger : 考慮這些東西07/26 20:43
囧 還麻煩指正這部分的觀念 我是照著wiki給的zxz旋轉範圍 alpha gamma要介於0~2pi 若沒考慮(俯視)方向計算夾角的話 只會得到0~pi的範圍 (我是用程式下去跑 驗證範圍)
34F:推 hwanger : "一定能得到 [XYZ] = R [e1,e2,e3]嗎" >>>對 更嚴07/26 20:53
35F:→ hwanger : 謹的說 一個向量v在xyz下的座標是(a,b,c) 在XYZ下07/26 20:54
36F:→ hwanger : 的座標是(A,B,C) 則 (A,B,C)^t= [R] (a,b,c)^t07/26 20:54
37F:推 hwanger : 其實不會太難看出來 R其實就是連續作用三次平面旋07/26 20:59
38F:→ hwanger : 轉 每次都把舊座標換成新的中途點座標07/26 20:59
39F:推 hwanger : 例如x軸在你只轉z軸alpha時 其座標變成(cos alpha, 07/26 21:03
40F:→ hwanger : -sin alpha, 0)07/26 21:03
我計算歐拉角的觀念是 已經有的是參考軸xyz 目標軸XYZ 1. 先用z,Z cross 得到N(交點線) 2. 再繞正z旋轉 x軸轉到N 得alpha 繞 3. 再繞正N旋轉 z軸到Z 得beta 4. 繞正Z旋轉 N軸到X 得gamma (我是看維基上那張範例圖算的 要方向角是因為 我是先定義俯視軸看旋轉角度的 回推的部分就直接combine旋轉矩陣R R*[e1,e2,e3]T = [e1’,e2’,e3’]T 即得XYZ基底 但是問題是反推回去 並不是得到原本的XYZ基底 推測是出在前面的2. 使用沒定義有序方向z,Z得到的N 出問題 觀念上哪裡有不對嗎? 謝謝QQ ※ 編輯: magic83v (101.12.65.110 臺灣), 07/26/2020 21:27:25
41F:→ hwanger : Ok 是我沒有想清楚 算x和N的角度 及 N和X的角度時 07/26 21:28
42F:→ hwanger : 的確需要有向角的觀念07/26 21:29
43F:推 hwanger : "我計算歐拉角的觀念是" >>>這段是對的 不過beta其07/26 21:35
44F:→ hwanger : 實就用zZ夾角就可以了07/26 21:36
45F:→ hwanger : "並不是得到原本的XYZ基底">>> 這段我不懂07/26 21:38
好像發現問題是出在這裡 這邊是指我下面說的 我的XYZ基底的意思 就是XYZ軸的單位方向 想要[e1,e2,e3] 經過R之後得到XYZ軸的單位方向
46F:→ hwanger : [R]是用來轉換任一個向量的舊座標和新座標用的07/26 21:41
47F:→ hwanger : 比如說 一個向量v在舊座標下是(1,0,0) 則新座標就是07/26 21:43
48F:→ hwanger : (cos a cos r - cos b sin a sin r, -cos a sin r -07/26 21:45
49F:→ hwanger : cos b sin a cos r, sin b sin a)07/26 21:46
50F:→ hwanger : 跟高中時的平面旋轉的座標轉換一樣07/26 21:47
51F:推 hwanger : 另外 你所謂的"俯視軸" 其實就是之前我說的選定的07/26 21:58
52F:→ hwanger : 法向量07/26 21:58
53F:推 hwanger : 而 N 就是 z cross Z這點是沒有問題的07/26 22:02
目前是這樣計算N 還在想怎麼驗證 感謝!
54F:推 hwanger : 下面這篇文章可能幫助理解 [R]07/26 22:16
55F:→ hwanger : shorturl.at/bdHR707/26 22:17
56F:→ hwanger : 更正 http://shorturl.at/bdHR707/26 22:18
57F:→ hwanger : [R]就是座標變換矩陣07/26 22:20
58F:推 hwanger : 更正 [R]就是"基底變換矩陣"07/26 22:22
謝謝大大我再認真看一次這篇!xd 還有個問題是 大部分像我舉例計算到歐拉角的方式(wiki上寫靜態歐拉角) 我得到的alpha beta gamma 並非繞x y’ z”這樣轉的順序 (求得的beta是繞N旋轉 即zZ法向量 等於我上面寫的 “順推跟回推”的”角”並不一樣 這問題有辦法解決嗎? ※ 編輯: magic83v (36.224.121.158 臺灣), 07/26/2020 22:51:54
59F:推 hwanger : "想要[e1,e2,e3] 經過R之後得到XYZ軸的單位方向">>> 07/26 23:52
60F:→ hwanger : 如果你的[e1,e2,e3]是個3x3矩陣 那就有些問題 07/26 23:52
61F:→ hwanger : 實際上 如果你把XYZ用相對於xyz的座標表示 則[ X,Y,07/26 23:52
62F:→ hwanger : Z]=R^{-1}07/26 23:52
63F:推 hwanger : "並非繞x y’ z”這樣轉的順序">>>歐拉角是z x' z'' 07/26 23:55
64F:→ hwanger : 這樣轉 其中N就是x' 07/26 23:55
65F:推 hwanger : 「等於我上面寫的 “順推跟回推”的”角”並不一樣 07/27 00:05
66F:→ hwanger : 」>>>我還是不太懂這段 07/27 00:05
67F:→ hwanger : 如果相對xyz, 我們寫出X=(Xx, Xy, Xz)^t ;Y=(Yx, Yy 07/27 00:05
68F:→ hwanger : , Yz)^t; Z=(Zx, Zy, Zz)^t, 則R^{-1}這個矩陣 就是07/27 00:05
69F:→ hwanger : [X,Y,Z]07/27 00:05
70F:推 hwanger : 如果e1=(1,0,0) e2=(0,1,0) e3=(0,0,1) 則R^{-1}[e107/27 00:12
71F:→ hwanger : ,e2,e3] =[X,Y,Z]07/27 00:12
72F:→ magic83v : 感謝大大 我是照這邏輯思考 在程式計算不清楚哪裡出07/28 22:40
73F:→ magic83v : 問題QQ 我手算一次看是哪裡錯再請教你07/28 22:40
74F:推 hwanger : 沒有看到你的程式碼 很難判斷到底哪裡出了問題 不過07/28 23:05
75F:→ hwanger : 你可以先試試簡單的case 譬如beta=0的狀況 去debug07/28 23:05
https://paste.ofcode.org/bjpHEfEY6MDPnEbdzbF86C 這是我寫的function 遇到的問題是正負號有不對 https://i.imgur.com/ISMCFMV.jpg 還不知道是哪個方向定錯之類 囧 感謝h大qq ※ 編輯: magic83v (36.224.120.33 臺灣), 07/29/2020 13:18:14
76F:推 hwanger : https://paste.ofcode.org/gUNJLVg6ieKCvfwD49kjXg 07/29 16:49
77F:→ hwanger : 這是我修改後的代碼 主要修改了theta3d(a,b,n)這個 07/29 16:51
78F:→ hwanger : 函數 因為我看不懂你原來的邏輯 所以我就用我之前說 07/29 16:52
79F:→ hwanger : 的邏輯重寫 另外我修改了euler_reverse的typo 07/29 16:53
80F:推 hwanger : https://paste.ofcode.org/MkYJgKLiBpKxEVpk9NNVLk 07/29 18:48
81F:→ hwanger : 上面這個是我重新理解你的邏輯後做修改的 你原本的 07/29 18:49
82F:→ hwanger : 問題主要是發生在你不管arctan2產出什麼 都加了Pi 07/29 18:50
83F:推 hwanger : 你應該是介於0到pi的不動 介於-pi到0的平移2pi才對 07/29 18:53
84F:推 hwanger : 如果你接受alpha和gamma的值可以在-pi到pi之間的話 07/29 20:26
85F:→ hwanger : 那theta3d可以直接傳回np.arctan2(det, dot) 07/29 20:27
86F:推 hwanger : 順帶一提 euler這個函數並沒有處理大N為0的情況 或 07/29 20:30
87F:→ hwanger : 設定大N接近0的敏感度 如果這個程式只是練手的話 就 07/29 20:31
88F:→ hwanger : 不需要特別管他 07/29 20:32
感謝h大!沒想到問題是出在-pi~pi的範圍 現在想起來早該發現 囧 是還打算用來處理一些方向偵測的問題 想再請教如果大N夾角接近0或太小該怎麼處理? 視為xy平面上旋轉嗎 ※ 編輯: magic83v (101.10.9.236 臺灣), 07/29/2020 20:49:45
89F:推 hwanger : 最簡單的方法 就是如果大N的長度夠小時(比如小10的 07/29 21:01
90F:→ hwanger : -6或-7 或在高精度下-14之類的) 就讓beta為0或pi 07/29 21:04
91F:→ hwanger : 並讓gamma為0 只算alpha就可以了 07/29 21:05
92F:→ hwanger : 但應該視你之後應用數據的東西的特性再做更詳細的判 07/29 21:08
93F:→ hwanger : 別方法 07/29 21:08
94F:推 hwanger : 如果照上面最簡單的想法 那就是 07/29 21:13
95F:→ hwanger : alpha = theta3d(x_axis, X_axis, z_axis) 07/29 21:14
96F:→ hwanger : beta = 0 if Z_axis[2] > 0 else np.pi 07/29 21:17
97F:→ hwanger : gamma = 0 07/29 21:18
98F:推 hwanger : 更進階的方法就是用微積分的線性逼近對不同的情況作 07/30 11:51
99F:→ hwanger : 處理 可以參照下列兩個分析的精神 07/30 11:53
100F:推 hwanger : https://shorturl.at/acrD2 又及 07/30 11:55
101F:→ hwanger : https://shorturl.at/uKNPW 07/30 11:57
102F:推 hwanger : 依照英文wiki解歐拉角的思路 解alpha, beta, gamma 08/01 09:41
103F:→ hwanger : 的確不需要特別去處理三維空間的有向角 08/01 09:41
104F:→ hwanger : 如果我們讓X=(X0,X1,X2),Y=(Y0,Y1,Y2),Z=(Z0,Z1,Z3) 08/01 09:42
105F:→ hwanger : 則 X2=sin(b)sin(r), Y2=sin(b)cos(r) 08/01 09:43
106F:→ hwanger : Z0=sin(b)cos(a), Z1=-sin(b)cos(a), Z2=cos(b) 08/01 09:43
107F:推 hwanger : 依此邏輯我重寫了程式碼 08/01 09:46
108F:→ hwanger : https://paste.ofcode.org/36DNmNx7AjEnKgmSKYmxZui 08/01 09:46







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP