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

如何获取拟合线性曲面的法向量以计算点到曲面距离?

获取poly11拟合平面的法向量及点到平面的距离计算

步骤说明

你拟合的poly11是线性平面,数学表达式为:
$$Z = c_1 + c_2X + c_3Y$$
其中c = coeffvalues(sf)返回的系数顺序是:$c_1$(常数项)、$c_2$(X的系数)、$c_3$(Y的系数)。

1. 构造法向量

将平面方程整理为隐式形式:$c_2X + c_3Y - Z + c_1 = 0$,对应平面标准式$AX + BY + CZ + D = 0$,法向量直接由系数$A,B,C$组成:

c = coeffvalues(sf);
% 构造法向量
N = [c(2); c(3); -1];

2. 单位化法向量(关键)

计算点到平面的距离需要单位法向量,否则点积结果会被法向量的模长缩放:

% 单位化法向量
N_unit = N / norm(N);

3. 批量计算所有点到平面的距离

假设你的数据点是列向量$X2,Y2,Z2$,可以用矩阵运算批量处理:

% 将所有点整理为列向量矩阵
P = [X2(:), Y2(:), Z2(:)]';
% 计算点到P0的向量(广播复制P0匹配点数)
vec = P - repmat(P0, 1, size(P, 2));
% 点积后取绝对值得到每个点的距离
distances = abs(dot(vec, N_unit, 1));

补充说明

  • 因为poly11是平面,法向量是全局固定的,不需要针对每个点计算;如果是高阶曲面,才需要逐点求梯度得到法向量。
  • 注意sf是拟合对象,不能直接和向量做减法,需用原始数据点或拟合平面上的点参与计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:40:41