C++中cos,sin,asin,acos这些三角函数操作的是弧度,而非角度.C++中cos,sin,asin,acos这些三角函数操作的是弧度,而非角度,
你需要把角度转化为弧度.
弧度=角度*Pi/180;
例子1:
比如对边和邻边分别为a,b
设角度为x,则
x=atan(a/b);
其中x为弧度制
如需转换为角度值,则x*180/3.1415
例子2:
//计算旋转角度 {弧度=角度*Pi/180} {两点间距离公式 根号下(|X1-X2|的平方+|Y1-Y2|的平方)}
double angle_tanValue=sqrt(pow(point.x-point.x,2)+pow(point.y-Right_Top_Point.y,2))/
sqrt(pow(Turn_Point_L[1].x-point.x,2)+pow(Turn_Point_L[1].y-Right_Top_Point.y,2));
//求出tan 与 sin 的弧度
double angle_atanValue=atan(angle_tanValue);
double angle_sinValue=sin(angle_atanValue);
//弧度转换成角度
double angle=angle_atanValue*180/3.1415;
//取绝对值
angle=fabs(angle);
//===add by tcbo 2012.12.20 //位移转为角度
//==公式: L=2*R*Sin(θ/2) θ旋转角度 ---角度转换为旋长[位移]
//1弧度=180/π度1度=π/180 弧度
//Sin(弧度);
//===由度转换为弧度 :θ/2=(θ*π/2*180)=(θ*π/360)
//用反三角函数,反正弦Arcsin(x)
//例如已知sin x=0.25,那么x=Arcsin 0.25
float tmpFltVal=0;
float fAngle=0;
ASSERT(m_fTestRadius>0);
tmpFltVal=(fValMM/(2 * m_fTestRadius));
fAngle=(float)asin(tmpFltVal); //弧度
fValMM=(float)(2*fAngle*180.0/PI); //转换为角度
fValMM=(float)fabs(fValMM);
你需要把角度转化为弧度.
弧度=角度*Pi/180;
例子1:
比如对边和邻边分别为a,b
设角度为x,则
x=atan(a/b);
其中x为弧度制
如需转换为角度值,则x*180/3.1415
例子2:
//计算旋转角度 {弧度=角度*Pi/180} {两点间距离公式 根号下(|X1-X2|的平方+|Y1-Y2|的平方)}
double angle_tanValue=sqrt(pow(point.x-point.x,2)+pow(point.y-Right_Top_Point.y,2))/
sqrt(pow(Turn_Point_L[1].x-point.x,2)+pow(Turn_Point_L[1].y-Right_Top_Point.y,2));
//求出tan 与 sin 的弧度
double angle_atanValue=atan(angle_tanValue);
double angle_sinValue=sin(angle_atanValue);
//弧度转换成角度
double angle=angle_atanValue*180/3.1415;
//取绝对值
angle=fabs(angle);
//===add by tcbo 2012.12.20 //位移转为角度
//==公式: L=2*R*Sin(θ/2) θ旋转角度 ---角度转换为旋长[位移]
//1弧度=180/π度1度=π/180 弧度
//Sin(弧度);
//===由度转换为弧度 :θ/2=(θ*π/2*180)=(θ*π/360)
//用反三角函数,反正弦Arcsin(x)
//例如已知sin x=0.25,那么x=Arcsin 0.25
float tmpFltVal=0;
float fAngle=0;
ASSERT(m_fTestRadius>0);
tmpFltVal=(fValMM/(2 * m_fTestRadius));
fAngle=(float)asin(tmpFltVal); //弧度
fValMM=(float)(2*fAngle*180.0/PI); //转换为角度
fValMM=(float)fabs(fValMM);