计算线段夹角的方法有多种,以下是几种常见的方法:
方法一:通过斜率计算夹角
计算斜率
设两条线段的端点分别为 \(A(x_1, y_1)\), \(B(x_2, y_2)\) 和 \(C(x_3, y_3)\)。
线段 \(AB\) 的斜率 \(m_1 = \frac{y_2 - y_1}{x_2 - x_1}\)。
线段 \(AC\) 的斜率 \(m_2 = \frac{y_3 - y_1}{x_3 - x_1}\)。
计算夹角
利用反正切函数计算夹角 \(θ\)(弧度):
\[ θ = \arctan\left(\frac{m_2 - m_1}{1 + m_1 \cdot m_2}\right) \]
将弧度转换为度:
\[ θ_{\text{度}} = θ \times \frac{180}{\pi} \]
方法二:使用向量计算夹角
计算方向向量
线段 \(AB\) 的方向向量 \(\vec{d_1} = (x_2 - x_1, y_2 - y_1)\)。
线段 \(AC\) 的方向向量 \(\vec{d_2} = (x_3 - x_1, y_3 - y_1)\)。
计算向量的点积和模长
点积:
\[ \vec{d_1} \cdot \vec{d_2} = (x_2 - x_1)(x_3 - x_1) + (y_2 - y_1)(y_3 - y_1) \]
模长:
\[ \|\vec{d_1}\| = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} \]
\[ \|\vec{d_2}\| = \sqrt{(x_3 - x_1)^2 + (y_3 - y_1)^2} \]
计算夹角
利用点积公式和模长计算夹角 \(θ\)(弧度):
\[ θ = \arccos\left(\frac{\vec{d_1} \cdot \vec{d_2}}{\|\vec{d_1}\| \cdot \|\vec{d_2}\|}\right) \]
将弧度转换为度:
\[ θ_{\text{度}} = θ \times \frac{180}{\pi} \]
示例代码
方法一:通过斜率计算夹角
```python
import math
def calculate_angle(x1, y1, x2, y2, x3, y3):
计算斜率
m1 = (y2 - y1) / (x2 - x1)
m2 = (y3 - y1) / (x3 - x1)
计算夹角(弧度)
angle_rad = math.atan((m2 - m1) / (1 + m1 * m2))
将弧度转换为角度
angle_deg = math.degrees(angle_rad)
return angle_deg
示例线段
x1, y1 = 0, 0
x2, y2 = 1, 1
x3, y3 = 0, -1
计算夹角
angle = calculate_angle(x1, y1, x2, y2, x3, y3)
print(f"夹角为: {angle}度")
```
方法二:使用向量计算夹角