Hey je reçois une valeur de retour de "Pas un numéro" de la fonction suivante:inverse Cinématique ACos erreur 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;
}
Je comprends que ACos a besoin d'une valeur d'argument entre -1 et 1, mais Je ne peux pas comprendre comment faire ceci, si par exemple le point effecteur final est à (15,15) avec des longueurs égales à 2 ...
Dois-je normaliser tout? Y compris les distances entre les articulations, et le vecteur directionnel de (0,0) -> (15,15)
Toute aide serait grandement appréciée!
J'essaye de trouver l'inverse avec l'arc cosinus si ... Peut-être que je manque votre point! – user1018539
Oui: inverser ma première équation donne 'Angle = acos (Adj/Hyp)'. Si vous donnez des nombres incorrects pour Adj ou Hyp, vous pouvez vous retrouver avec quelque chose en dehors de la plage valide d'entrées pour 'acos()'. – uesp