已知图像中的两点坐标:p1(x1,y1)与p2(x2,y2),求距点p2距离为d的点p(x,y)。
求解方法(c++实现):
θ= atan2(y2 – y1, x2 * 1.0 – x1);
x = x2 + d * cos(θ);
y = y2 + d * sin(θ);
计算方法解释:
1.c++中求反正切的函数说明:
atan(double x)与atan2(double y,double x)
atan的返回值范围(-π/2, π/2)
atan2的返回值范围(-π, π)
θ=atan2(y,x)表示:坐标原点为起点,指向(x,y)的射线在坐标平面上与x轴正方向之间的角度。
当y>0时,射线与x轴正方向的角度是x轴正方向绕逆时针方向到达射线的旋转角, θ为正;
当y<0时,射线与x轴正方向的角度是x轴正方向绕顺时针方向到达射线的旋转角,θ为负;
2.线段p1p2与x轴正方向的夹角(单位为度):
θ=atan2(y2-y1,x2-x1)*180/π
其原理为:把p1平移到坐标原点,p2变为p2'(x2-x1,y2-y1),即为p2'与x轴正方向的夹角,如下图所示。
3.计算点p的坐标:
x = x2 + d * cos(θ);
y = y2 + d * sin(θ)。