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 사이의 인수 값이 필요하다는 것을 이해하지만, 엔드 이펙터 포인트가 길이가 2 인 길이가 (15,15) 인 경우, 어떻게해야 할지를 알 수 없습니다 ...
모든 것을 정규화해야합니까? 관절 사이의 거리와 방향 벡터 포함 (0,0) -> (15,15)
도움이 될 것입니다!
나는 아크 코사인을 사용하여 역함수를 찾으려고합니다. 아마 당신의 요점을 놓치고 있습니다! – user1018539
예 : 첫 번째 방정식을 반대로하면 'Angle = acos (Adj/Hyp)'가됩니다. Adj 나 Hyp에 잘못된 숫자를 주면'acos()'의 유효 입력 범위 밖의 값으로 끝날 수 있습니다. – uesp