0
嘿,我從下面的函數獲得「不是數」的返回值:逆運動學ACOS錯誤QNAN,INAN
void Spider::setAngles(double x,double y, double l1, double l2){
double theta1, theta2;
theta2=acos((pow(x,2)+pow(y,2)-pow(l1,2)-pow(l2,2))/(2*l1*l2));
cout<<theta2* 180/PI<<endl;
theta1=(-((l2*sin(theta2)*x)+(l1+l2*cos(theta2)*y))/((l2*sin(theta2)*y)+ (l1+l2*cos(theta2)*x)))* 180/PI;
cout<<theta1;
}
據我所知,ACOS需要-1到1之間的參數值,但我無法弄清楚如何做到這一點,如果說末端效應點是(15,15),長度都等於2 ...
我是否需要規範化所有內容?包括關節之間的距離和方向矢量從(0,0) - >(15,15)
任何幫助將不勝感激!
我試圖找到反餘弦反餘弦,雖然...也許我錯過了你的觀點! – user1018539
是的:顛倒我的第一個等式給出了'Angle = acos(Adj/Hyp)'。如果您爲Adj或Hyp提供不正確的數字,您可能會以'acos()'的有效輸入範圍之外的結果爲結束。 – uesp