You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算拟合三维点集的平面与垂直Z轴的夹角

计算拟合平面与Z轴的夹角

你已经通过最小二乘法得到了平面方程 (a x + b y + c z + d = 0),要计算这个平面与Z轴的夹角,可以按照以下几何思路实现:

核心原理

平面与Z轴的夹角,本质是Z轴与平面之间的最小夹角,它等于Z轴方向向量与平面法向量夹角的补角(取锐角)。具体推导:

  • 平面的法向量为 (\mathbf{n} = (a, b, c))
  • Z轴的方向向量为 (\mathbf{k} = (0, 0, 1))
  • 法向量与Z轴的夹角 (\phi) 满足:(\cos\phi = \frac{\mathbf{n} \cdot \mathbf{k}}{|\mathbf{n}| \cdot |\mathbf{k}|} = \frac{c}{\sqrt{a^2 + b^2 + c^2}})
  • 平面与Z轴的夹角 (\theta) 是 (\theta = 90^\circ - \phi),转换为三角函数关系可得:(\sin\theta = |\cos\phi|),因此 (\theta = \arcsin\left( \frac{|c|}{\sqrt{a^2 + b^2 + c^2}} \right))

若需要角度值(而非弧度),只需将结果转换为角度单位即可。

代码实现

在你现有的代码基础上,添加以下计算逻辑:

import numpy as np

# 你已得到的平面系数
a, b, c, d = C[0], C[1], -1., C[2]

# 计算法向量的模长
norm_n = np.sqrt(a**2 + b**2 + c**2)

# 计算平面与Z轴的夹角(弧度)
theta_rad = np.arcsin(np.abs(c) / norm_n)

# 转换为角度(可选)
theta_deg = np.degrees(theta_rad)

print(f"平面与Z轴的夹角(弧度):{theta_rad}")
print(f"平面与Z轴的夹角(角度):{theta_deg}")

验证示例

  • 当平面平行于XY平面((a=0, b=0)),法向量与Z轴平行,此时平面与Z轴夹角为0°,符合预期;
  • 当平面垂直于XY平面(如平面方程为 (x=0)),法向量与Z轴垂直,此时平面与Z轴夹角为90°,符合几何逻辑。

内容的提问来源于stack exchange,提问作者Sadae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:10:50