计算距线段顶点距离为d的点

已知图像中的两点坐标: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(θ)。

发布了191 篇原创文章 · 获赞 104 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/u013925378/article/details/100776004
今日推荐