C++ 为什么acosf从未为我返回-ve值? xlight=cosf(角度到光线); ylight=sinf(与灯光的角度); xrotate=A*xlight;//-B*X排斥;//+C*xrandom; 酪酸盐=A*ylight;//-B*yrepel;//+C*yrandom; 旋转角度=acosf(旋转/(旋转角度+旋转角度+旋转角度]); //printf(“xrotate=%f,yrotate=%f,rotate=%f\n”,xrotate,yrotate,角度到旋转); 如果(旋转角度>0){ 设置电机(0,千转/右转); } else if(根据acosf函数旋转的角度
返回[0;π]范围内的值C++ 为什么acosf从未为我返回-ve值? xlight=cosf(角度到光线); ylight=sinf(与灯光的角度); xrotate=A*xlight;//-B*X排斥;//+C*xrandom; 酪酸盐=A*ylight;//-B*yrepel;//+C*yrandom; 旋转角度=acosf(旋转/(旋转角度+旋转角度+旋转角度]); //printf(“xrotate=%f,yrotate=%f,rotate=%f\n”,xrotate,yrotate,角度到旋转); 如果(旋转角度>0){ 设置电机(0,千转/右转); } else if(根据acosf函数旋转的角度,c++,debugging,trigonometry,C++,Debugging,Trigonometry,返回[0;π]范围内的值 数学上,ARCOCs是一个多值函数,特别是CoS x==COS—X.,C++函数只能返回一个有代表性的值,并且在这个范围内决定。可以通过添加2π和/或否定.< /P>来获得其他值,但是在ACOSF线下有一个IF EFILE子句,用不同的方式调用StIsA运动来表示+ +和-angle。如果角度旋转总是正的,我该如何输入else if部分?一些正的可能是正确的,因为这个代码片段一直在循环中以不同的角度旋转values@DhanvinKodiatar也许你必须用另一种方法来
数学上,ARCOCs是一个多值函数,特别是CoS x==COS—X.,C++函数只能返回一个有代表性的值,并且在这个范围内决定。可以通过添加2π和/或否定.< /P>来获得其他值,但是在ACOSF线下有一个IF EFILE子句,用不同的方式调用StIsA运动来表示+ +和-angle。如果角度旋转总是正的,我该如何输入else if部分?一些正的可能是正确的,因为这个代码片段一直在循环中以不同的角度旋转values@DhanvinKodiatar也许你必须用另一种方法来确定方向,这是一个简单的事实,X和-X有相同的余弦我明白了…我可以检查我的论点。基本上如果(acosf的论点<0){angle\u of theu rotation=-angle\u of theu rotation}。谢谢你的帮助!!@Dhanvinkoditar很酷,很高兴你把它整理好了
xlight = cosf(angle_to_light);
ylight = sinf(angle_to_light);
xrotate = A*xlight;// - B*xrepel;// + C*xrandom;
yrotate = A*ylight;// - B*yrepel;// + C*yrandom;
angle_to_rotate = acosf( xrotate/( sqrtf(xrotate*xrotate + yrotate*yrotate) ) );
//printf("xrotate = %f, yrotate = %f, rotate = %f\n", xrotate, yrotate, angle_to_rotate);
if (angle_to_rotate>0) {
set_motors(0,kilo_turn_right);
}
else if (angle_to_rotate<0) {
printf("hello\n" );
set_motors(kilo_turn_left,0);
}