亲爱的 stackoverflow 用户,
我正在尝试计算由一组 3D 点定义的任意(但光滑)表面上的法线向量。为此,我使用平面拟合算法,该算法根据计算法向量的点的 10 个最近邻点找到局部最小二乘平面。
然而,它并不总能找到看起来最好的飞机。因此,我想知道我的实现或算法是否存在缺陷。我正在使用奇异值分解,正如我在有关平面拟合主题的几个链接中发现的推荐的那样。这是在我的机器上重现该行为的代码:
#library imports
import numpy as np
import math
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#values used for best plane fit
xyz = np.array([[-1.04194694, -1.17965867, 1.09517722],
[-0.39947906, -1.37104542, 1.36019265],
[-1.0634807 , -1.35020616, 0.46773962],
[-0.48640524, -1.64476106, 0.2726187 ],
[-0.05720509, -1.6791781 , 0.76964551],
[-1.27522669, -1.10240358, 0.33761405],
[-0.61274031, -1.52709874, -0.09945502],
[-1.402693 , -0.86807757, 0.88866091],
[-0.72520241, -0.86800727, 1.69729388]])
''' best plane fit'''
#1.calculate centroid of points and make points relative to it
centroid = …Run Code Online (Sandbox Code Playgroud) 亲爱的 stackoverflow 用户,
我面临如下问题:我想在 python 脚本中将 3D 椭球体拟合到 3D 数据点。
起始数据是一组 x、y 和 z 坐标(笛卡尔坐标)。我想要得到的是 3D 数据点凸包的最佳拟合椭球定义方程中的 a 和 c。
在正确旋转和平移的坐标系中,该方程为:

所以我理想中想做的任务是:
查找 3D 数据点的凸包
将最佳拟合椭球拟合到凸包并得到 a 和 c
你知道是否有一些库允许在 Python 中以最少的代码行执行此操作吗?或者我是否必须用我有限的数学知识(在寻找最适合的椭球体时基本上为零)对每个步骤进行显式编码?