[問題] 三邊求角度...

看板C_and_CPP (C/C++)作者 (x1988)時間15年前 (2010/10/08 19:38), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 目前想利用三點座標求角度,用的公式是C^2+A^2-B^2/2ca 但出現一個 ACOS:DOMAIN error 不知道哪裡錯誤了 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) bcb 有問題的code: (請善用置底文標色功能) double a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double b=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)); double c=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); double d=0; if(2*c*a != 0) d=acos((c*c)+(a*a)-(b*b))/(2*c*a) ; ------------------------------------------------ x1,y1 =第一點 x2,y2=第二點 x3,y3=第三點 麻煩各位大大 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.234.122

10/08 20:07, , 1F
是否要改成d=acos((c*c+a*a-b*b)/(2*c*a));
10/08 20:07, 1F

10/08 20:08, , 2F
還有浮點數對於等式判斷會有精確度問題
10/08 20:08, 2F

10/08 20:12, , 3F
改了是沒有跳出那問題 但是裡面的值都是0點多
10/08 20:12, 3F

10/08 20:13, , 4F
要如何轉換成出現角度呢
10/08 20:13, 4F

10/08 20:15, , 5F
算出來的值是徑度,把他乘以180在除以3.14即為所求
10/08 20:15, 5F

10/08 21:39, , 6F
謝謝 想詢問我該如何確認算出來的角度第二點的
10/08 21:39, 6F

10/09 18:40, , 7F
你都有座標了何不用atan再算一次
10/09 18:40, 7F

10/09 18:40, , 8F
或內積 這是國中數學吧
10/09 18:40, 8F
文章代碼(AID): #1ChmAZdi (C_and_CPP)
文章代碼(AID): #1ChmAZdi (C_and_CPP)