Python 如何判断3D绘图上的点位于平面或曲线上?

Python 如何判断3D绘图上的点位于平面或曲线上?,python,r,geometry,data-science,Python,R,Geometry,Data Science,我有一个使用matploblib Axis 3D生成的一些数据的3D散点图。我需要决定它是在平面上还是在曲线上。我试图理解平面或曲线的视觉差异。我的猜测是,如果沿z值的大范围存在点,那么它位于曲线上,因为如果它位于平面上,这意味着这些点仅分布在平面上。即使我的猜测是正确的,我也是正确的,因为排除了唯一的其他可能性,所以我如何具体地判断数据是否位于曲线上?如果平面倾斜,你也会发现z值的范围很广 假设nx3阵列中有3D点,则可以使用以下方法计算适合它们的平面: centroid = np.mean(

我有一个使用matploblib Axis 3D生成的一些数据的3D散点图。我需要决定它是在平面上还是在曲线上。我试图理解平面或曲线的视觉差异。我的猜测是,如果沿z值的大范围存在点,那么它位于曲线上,因为如果它位于平面上,这意味着这些点仅分布在平面上。即使我的猜测是正确的,我也是正确的,因为排除了唯一的其他可能性,所以我如何具体地判断数据是否位于曲线上?

如果平面倾斜,你也会发现z值的范围很广

假设nx3阵列中有3D
,则可以使用以下方法计算适合它们的平面:

centroid = np.mean(points, axis=0)
_, eigenvalues, eigenvectors = np.linalg.svd(points - centroid, full_matrices=False)
normal = eigenvectors[2]
dispersion = eigenvalues[2]
最接近散射点的平面由点(
质心
)及其
法线
向量定义

然后,根据沿法向轴的
离散度
值,您可以确定其是否足够低(点位于平面上)或过高(点不位于平面上)