python - 如何判断 3D 图上的点是在平面上还是在曲线上?
问题描述
我有一个使用 matploblib Axes 3D 生成的一些数据的 3D 散点图。我需要决定它是在平面上还是在曲线上。我试图了解表明平面或曲线的视觉差异。我的猜测是,如果沿大范围的 z 值存在点,那么它位于曲线上,因为如果它位于平面上,这意味着这些点仅分布在平面上。即使我的猜测是正确的,我也只是通过消除唯一的其他可能性是正确的,那么我将如何具体判断数据是否位于曲线上?
解决方案
如果平面倾斜,您还会发现范围很广的 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
法线轴上的值,您可以决定它是足够低(点位于平面上)还是太高(它们不在平面上)。
推荐阅读
- android - ExtendedFloatingActionButton - 图标重力设置为文本结束但图标不在中心时尖叫
- python - 按月和年对熊猫的数据框系列进行排序?
- mysql - 你可以将多值索引与范围扫描结合起来吗
- dialogflow-es - 有没有办法在用户被定向到网页后将用户重定向到谷歌助手操作中的同一会话
- android - 如何处理 Kotlin 中的递归和嵌套数据类
- android - 在 Cordova 应用程序中检测首选语言顺序
- asp.net-mvc - 如何在 MVC 中更改 ASP.NET_SessionId cookie 路径
- mysql - 多选用户名SQL
- git - 想要在 Azure 构建管道中将 Git 提交详细信息设置为构建标题/定义
- callback - 有没有办法将多个变量、结构、小部件数据等传递给 Octave 中的回调函数?