Python中 角怎么计算

Python中 角怎么计算

作者:Joshua Lee发布时间:2026-03-25阅读时长:0 分钟阅读次数:2

用户关注问题

Q
如何用Python计算两条线之间的夹角?

我有两条线段的坐标,想用Python代码算出它们之间的夹角,应该怎么做?

A

计算两条线段夹角的方法

可以通过计算两条线段的方向向量,然后利用向量的点积公式计算夹角。具体步骤是先得到两个向量的坐标差,然后用点积除以向量模长的乘积,最后用反余弦函数(math.acos)得到夹角的弧度,再转为角度。Python示例代码可以如下实现:

import math

def calculate_angle(p1, p2, p3, p4):
    # 计算向量
    v1 = (p2[0] - p1[0], p2[1] - p1[1])
    v2 = (p4[0] - p3[0], p4[1] - p3[1])
    
    dot_prod = v1[0]*v2[0] + v1[1]*v2[1]
    mag_v1 = math.sqrt(v1[0]2 + v1[1]2)
    mag_v2 = math.sqrt(v2[0]2 + v2[1]2)
    
    cos_angle = dot_prod / (mag_v1 * mag_v2)
    angle_rad = math.acos(cos_angle)
    angle_deg = math.degrees(angle_rad)
    return angle_deg
Q
怎样在Python中计算点与原点的夹角?

如果我只有一个点的坐标,想知道该点与坐标原点连线与X轴的夹角,应怎么用Python实现?

A

利用反正切函数计算点与X轴夹角

可以用math库中的atan2()函数计算点到原点连线与X轴正方向之间的夹角,atan2接受两个参数(y坐标和x坐标),能自动处理象限问题。得到的结果是弧度,可以用math.degrees转换成角度。例如:

import math

def angle_with_x_axis(x, y):
    angle_rad = math.atan2(y, x)
    angle_deg = math.degrees(angle_rad)
    return angle_deg
Q
用Python计算三角形内角的方法有哪些?

已知三角形三个点,想用Python代码算出每个顶点的内角大小,通常怎么做?

A

通过向量夹角法计算三角形内角

可以把每个顶点和相邻两个顶点构成向量,计算它们的夹角即为内角。具体做法是:

  1. 对每个顶点,将连接其余两个点的向量提取出来。
  2. 使用向量点积公式计算两个向量夹角。
  3. 重复执行覆获取三角形三个内角。

示例代码的核心思想是:

import math

def vector(p1, p2):
    return (p2[0]-p1[0], p2[1]-p1[1])

def angle_between(v1, v2):
    dot = v1[0]*v2[0] + v1[1]*v2[1]
    mag1 = math.sqrt(v1[0]2 + v1[1]2)
    mag2 = math.sqrt(v2[0]2 + v2[1]2)
    cos_theta = dot / (mag1 * mag2)
    return math.degrees(math.acos(cos_theta))

def triangle_angles(A, B, C):
    vBA = vector(B, A)
    vBC = vector(B, C)
    vAB = vector(A, B)
    vAC = vector(A, C)
    vCB = vector(C, B)
    vCA = vector(C, A)
    
    angle_A = angle_between(vAB, vAC)
    angle_B = angle_between(vBA, vBC)
    angle_C = angle_between(vCA, vCB)
    
    return angle_A, angle_B, angle_C