C 回归方程1.QO
我试着在几个网站上搜索与我的问题类似的东西,包括这一个,但到目前为止,我没有找到一个类似的。在搜索了术语1.QO之后,我发现了一些关于quiet NaN的信息,但是我对C语言一般来说是新手,所以我不太理解这个问题 我试图获取操纵杆的x和y值,然后使用距离公式计算操纵杆位置和操纵杆自然静止位置之间的距离0,0 如果有关系的话,我想在RobotC做这件事C 回归方程1.QO,c,C,我试着在几个网站上搜索与我的问题类似的东西,包括这一个,但到目前为止,我没有找到一个类似的。在搜索了术语1.QO之后,我发现了一些关于quiet NaN的信息,但是我对C语言一般来说是新手,所以我不太理解这个问题 我试图获取操纵杆的x和y值,然后使用距离公式计算操纵杆位置和操纵杆自然静止位置之间的距离0,0 如果有关系的话,我想在RobotC做这件事 #pragma config(Hubs, S1, HTMotor, none, none, none) #pragma con
#pragma config(Hubs, S1, HTMotor, none, none, none)
#pragma config(Sensor, S1, , sensorI2CMuxController)
#pragma config(Motor, mtr_S1_C1_1, DriveMotor, tmotorTetrix, openLoop)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
#include "JoystickDriver.c"
int calculateDrivePower(int joyStickX, int joyStickY)
{
if (joyStickX != 0 & joyStickY != 0)
{
int joyDistance = (sqrt(pow((joyStickX - 0),2)+ pow((-joyStickY - 0),2)));
joyDistance = ((joyDistance/127)*100);
return (joyDistance);
}
else
{
return 0;
}
}
task main()
{
int previousJoySlope = 0;
int TurnSpeed = 70;
while (true)
{
getJoystickSettings(joystick);
if (abs(joystick.joy1_x1) > 10 || abs(joystick.joy1_y1) > 10)
{
writeDebugStreamLine("Test successful.");
motor[DriveMotor] = calculateDrivePower(joystick.joy1_x1,joystick.joy1_y1);
}
}
}
如果有人能提供任何见解,那太好了,谢谢
if (joyStickX != 0 & joyStickY != 0)
{
int joyDistance = (sqrt(pow((joyStickX - 0),2)+ pow((-joyStickY - 0),2)));
joyDistance = ((joyDistance/127)*100);
return (joyDistance);
}
出现的第一个问题是if语句中的条件。您有一个最有可能是&&的单个(&S):
注意:上面应该使用“可能”,因为您可以使用测试joystickx!=0,但在本例中,它提供相同的结果。在这种情况下,我建议使用更具可读性的&&
代码的下一部分只是0,0和操纵杆当前位置之间的矢量距离。对于一般形式dist^2=x2-x1^2+y2-y1^2,在您的情况下为x1,y1=0,0。取两边的平方根提供dist=sqrtx2-x1^2+y2-y1^2,或用C表示:
dist = (sqrt(pow((joyStickX - 0),2)+ pow((-joyStickY - 0),2)));
接下来,将应用dist=dist*100/127的缩放比例,该比例提供返回的最终距离。希望这能帮助您理解代码的作用。这可能会有所帮助:因此本质上,调试器读取的是1.QO,因为方程中的数字需要四舍五入?您可以简化整个CalculatedDrivePower函数,只返回sqrtjoyStickX*joyStickX+JoyStick*JoyStick/127*100;。如果这也解决了你的问题,我也不会感到惊讶。这似乎奏效了。我猜这只是数学上的问题,谢谢!
dist = (sqrt(pow((joyStickX - 0),2)+ pow((-joyStickY - 0),2)));