转自:
https://www.jb51.net/article/178694.htm
使用 atan2来计算方位角,范围为-pi,pi
atan2(y,x)所表达的意思是坐标原点为起点,指向(x,y)的射线在坐标平面上与x轴正方向之间的角的角度。
结果为正表示从 X 轴逆时针旋转的角度,结果为负表示从 X 轴顺时针旋转的角度。
atan 和 atan2 都是求反正切函数,如:有两个点 point(x1,y1), 和 point(x2,y2);
那么这两个点形成的斜率的角度计算方法分别是:
float angle = atan2( y2-y1, x2-x1 );
math中关于三角函数常用的操作:
1 2 3 4 5 6 | import math math.acos(x) # 返回 x 的反余弦 弧度值。 math.asin(x) # 返回 x 的反正弦 弧度值。 math.degrees(x) # 将 弧度 转换为 角度, 如 degrees(math.pi/2) , 返回90.0 math.radians(x) # 将 角度 转换为 弧度 注意负数角度的转换。 计算两个向量的角度 #计算两个向量之间的角度,v1,v2分别是两个向量的起始点坐标和终点坐标,坐标顺序是先第几列(y)后第几行(x) def angleBetween(v1, v2): dx1 = v1[2] - v1[0] dy1 = v1[3] - v1[1] dx2 = v2[2] - v2[0] dy2 = v2[3] - v2[1] angle1 = math.atan2(dy1, dx1) angle1 = int(angle1 * 180/math.pi) # print(angle1) angle2 = math.atan2(dy2, dx2) angle2 = int(angle2 * 180/math.pi) # print(angle2) if angle1*angle2 >= 0: included_angle = abs(angle1-angle2) else: included_angle = abs(angle1) + abs(angle2) if included_angle > 180: included_angle = 360 - included_angle return included_angle |