首页 > 解决方案 > 如何判断 3D 图上的点是在平面上还是在曲线上?

问题描述

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

标签: pythonrgeometrydata-science

解决方案


如果平面倾斜,您还会发现范围很广的 z 值。

假设您的 3Dpoints在 nx3 数组中,您可以使用以下方法计算适合它们的平面:

centroid = np.mean(points, axis=0)
_, eigenvalues, eigenvectors = np.linalg.svd(points - centroid, full_matrices=False)
normal = eigenvectors[2]
dispersion = eigenvalues[2]

最接近散点的平面由点 ( centroid) 及其normal向量定义。

然后,根据dispersion法线轴上的值,您可以决定它是足够低(点位于平面上)还是太高(它们不在平面上)。


推荐阅读