一个C++程序 我看了也不明白数学表达意思//X=圆的X轴终点坐标-圆心X轴坐标,Y=圆的Y轴坐标-圆心Y轴坐标
//code表示 如果code=2 表示顺时针方向的圆弧。如果code=3 表示逆时针方向的圆弧
double Cal_Vect_Angle(double X,double Y,int code)
{ double angle; if(X == 0 && Y == 0)
{
return 0.0;
}
if(X == 0)
{
if(Y > 0) angle = PI/ 2;
else angle = PI + PI / 2;
}
if(Y == 0)
{
if(X > 0) angle = 0;
else angle = PI;
}
if(X != 0 && Y != 0)
{
angle = atan2(Y,X);//atan2表示反正切
if(X < 0) angle = angle + PI;
}
if(code==2) angle = angle - PI / 2;
if(code==3) angle = angle + PI / 2;
if(angle < 0) angle = angle + 2 * PI;
if(angle >= 2 * PI) angle = angle - 2 * PI; return angle;
}说能帮我解释下每行代码表达的数学意思
数学学的好的帮我解释下啊
//code表示 如果code=2 表示顺时针方向的圆弧。如果code=3 表示逆时针方向的圆弧
double Cal_Vect_Angle(double X,double Y,int code)
{ double angle; if(X == 0 && Y == 0)
{
return 0.0;
}
if(X == 0)
{
if(Y > 0) angle = PI/ 2;
else angle = PI + PI / 2;
}
if(Y == 0)
{
if(X > 0) angle = 0;
else angle = PI;
}
if(X != 0 && Y != 0)
{
angle = atan2(Y,X);//atan2表示反正切
if(X < 0) angle = angle + PI;
}
if(code==2) angle = angle - PI / 2;
if(code==3) angle = angle + PI / 2;
if(angle < 0) angle = angle + 2 * PI;
if(angle >= 2 * PI) angle = angle - 2 * PI; return angle;
}说能帮我解释下每行代码表达的数学意思
数学学的好的帮我解释下啊
解决方案 »
- .lib连接错误,fatal error LNK1136: invalid or corrupt file
- 哪位老大有国际象棋算法 谢谢 [email protected]
- 用ATL开发了一个ACTIVEX控件,用什么函数可以使控件重绘
- 是不是积分太少就没有资格提问了?
- 高手作答:如何修改本机的arp表
- 关于LISTBOX问题
- 百分求一函数:CString str1="021444000000000001"->"021444000000000002"
- 关于log文件的让人伤神的地方哦
- 怎样在一个窗口中调用另外一个窗口?
- 急呀!如何获得当前运行程序的路径????
- MFC让静态文本控件长度跟标题的长度一样?
- 快速接收数据包的算法求助
//X,Y分别表示X轴斜率和Y轴斜率
double Cal_Vect_Angle(double X,double Y,int code)
{ double angle; //定义一个角度值 if(X == 0 && Y == 0) //XY都为零
{
return 0.0; //angle(角度)为0
}
if(X == 0)
{
if(Y > 0) angle = PI/ 2; //第一象限内点
else angle = PI + PI / 2;
}
if(Y == 0)
{
if(X > 0) angle = 0; //第四象限内点
else angle = PI;
}
if(X != 0 && Y != 0)
{
angle = atan2(Y,X);//atan2表示反正切
if(X < 0) angle = angle + PI;
}
if(code==2) angle = angle - PI / 2;
if(code==3) angle = angle + PI / 2;
if(angle < 0) angle = angle + 2 * PI;
if(angle >= 2 * PI) angle = angle - 2 * PI; return angle;
}
{ double angle; if(X == 0 && Y == 0)
{
return 0.0;
}//自定义原点(0向量)的角度为0;
if(X == 0)
{
if(Y > 0) angle = PI/ 2;
else angle = PI + PI / 2;
}//自定义纵轴正负方向的向量的角度为PI/ 2、3PI/ 2;
if(Y == 0)
{
if(X > 0) angle = 0;
else angle = PI;
}//自定义横轴正负方向的向量的角度为0、PI;
if(X != 0 && Y != 0)
{
angle = atan2(Y,X);//atan2表示反正切?atan2(Y,X);?还是atan2(Y/X);?这个是第一、四象限内的
if(X < 0) angle = angle + PI;
}//atan2(Y,X);?还是atan2(Y/X);?
//以下根据象限来调整取值范围
if(code==2) angle = angle - PI / 2;
if(code==3) angle = angle + PI / 2;
if(angle < 0) angle = angle + 2 * PI;
if(angle >= 2 * PI) angle = angle - 2 * PI; return angle;
}//整个程序看似计算坐标或者向量的方位角的,code的值估计为象限编号