看板 Programming 關於我們 聯絡資訊
兩向量(x,z) (x1,z1)求夾角 公式thita = cos^-1((x * x1 + z * z1) / (((x * x + z * z) * (x1 * x1 + z1 * z1))^0.5)); 但是當(x,z)=(-0.08, 9.7) (x1,z1)=(-0.08, 9.8)時 Math.acos裡的值會大於1 造成thita=NaN 請問這要怎麼解決呢? -- ◤ __ \__◢◤◢◤ ψhirabbitt ◤ ◢███◣ ◢███◣ 妳是我 █████ █████ 你是我 ██ ███ 最愛的寶貝 ██╱╲ ◥█████◣● 最寶貝的愛╱╱ ◥████ ˇ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.13.127.91
proach:你用float?改用double試試看囉 114.43.192.101 11/12 11:11
ericinttu:加個判斷式, 超過值域範圍就調回來 59.117.125.198 11/12 12:26
hirabbitt:好 謝謝 163.13.127.91 11/12 16:40
latinboy:可以把程式碼放上來嗎 我用float還是正確 58.115.36.65 11/12 22:49
hirabbitt:我已經改寫了耶0.0> 114.45.173.67 11/14 12:25
hirabbitt:你這樣一說 搞不好真的是我也錯 114.45.173.67 11/14 12:25
hirabbitt: 寫 114.45.173.67 11/14 12:26
hehechang:你要不要先把向量先個別"正規化" 211.74.209.114 11/14 21:49
hehechang:就是各分量除以所屬向量的長度 211.74.209.114 11/14 21:50
hehechang:再直接將正規化後兩向量做內積就是cos值 211.74.209.114 11/14 21:54
hehechang:雖然我說的跟你的式子其實沒有分別 211.74.209.114 11/14 21:55
hehechang:但是這樣應該會準確許多... 211.74.209.114 11/14 21:58
hirabbitt:順序的問題? 163.13.127.91 11/19 14:18
hehechang:將這兩個向量除各自的長度變成單位向量 203.70.252.63 11/20 11:07
hehechang:再將這兩個單位向量直接內積就是cos值 203.70.252.63 11/20 11:08
hehechang:十進位小數轉成浮點數會產生誤差 203.70.252.63 11/20 11:15
hehechang:你的式子沒錯但會將轉換產生的誤差放大 203.70.252.63 11/20 11:16
hehechang:這只是我的想法 參考看看囉 203.70.252.63 11/20 11:42