从法线和点绘制3D表面

4
我有一组(x,y,z)点的集合,每个点都有相应的法线和值。所以数据的格式为[x y z nx ny nz c]。我想在这些点上绘制一个垂直于这些法线的3D表面,并具有与值相对应的颜色。因此,我想要的是surfnorm的反向操作。
我已经使用meshgridinterp2surf绘制了一个表面,但这没有考虑到法线。我还想到通过绘制垂直于法线的小正方形来制作表面。我成功地做到了这一点,但不知道如何“填充”正方形之间的空间,因为点是不规则分布的。
有什么好方法可以实现这个目标?

表面和数据应该完全“精确匹配”吗? - tvo
哦,还有一个问题:数据中是否有结构?例如,点是否在某种结构化网格上(x,y)?请将此类信息添加到问题中。 - tvo
@Crowley 我可以在 x、y、z 坐标上拟合表面,但我不知道有什么方法可以考虑到那些坐标处的法向量。 - BrtH
@tvo 我试图确保数据完全匹配,但如果无法证明,则不是必要的。预计点之间有(非常)大致相同的空间,但没有结构(如我在问题中所说“点是不规则间隔的”)。很抱歉这一点不够清楚。该数据表示一个表面,每个x、y点只有一个z值。 - BrtH
@Yvon 寻找交点是我试图避免手动完成的事情,因为当点不在定期间隔的网格上时,这并不有趣。然而,如果有人知道一个好的算法,或者有更多的信息,如果必要的话,我会考虑它。 - BrtH
显示剩余4条评论
1个回答

1
我看到两种选择:
1)使用基于点和法线的多边形进行直接几何重建。我认为在这种情况下,patch函数会很有用。它允许设置颜色。缺点:您需要进行大量手动处理和异常情况处理。
2)假设拟合函数,例如2D多项式,并使用优化方法匹配数据。您将需要一个目标函数,既考虑xyz数据,又考虑法线分量nxnynz。缺点:根据您选择的拟合函数,不太可能得到原始表面的精确表示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接