一个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;
 
}说能帮我解释下每行代码表达的数学意思
 数学学的好的帮我解释下啊

解决方案 »

  1.   

      
    //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;
     
    }
      

  2.   

    double Cal_Vect_Angle(double X,double Y,int code)
    { 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的值估计为象限编号