【问题标题】:Plot 3D surface from normals and points从法线和点绘制 3D 表面
【发布时间】:2016-05-02 09:58:10
【问题描述】:

我有一个 (x,y,z) 点的集合,这些点具有相应的法线和值。所以数据的格式是[x y z nx ny nz c]。我想在这些点上绘制一个 3D 表面,该表面垂直于这些法线并且具有与该值相对应的颜色。所以我想要的是surfnorm 的反面。

我已经设法使用meshgridinterp2surf 绘制了一个曲面,但这并没有考虑到法线。我还想到了通过绘制垂直于法线的小方块来制作曲面。我设法做到了,但是看不到任何“填充”正方形之间空间的方法,因为这些点的间距不规则。

有什么好的方法可以做到这一点?

【问题讨论】:

  • 你试过fit表面吗? mathworks.com/help/curvefit/fit.html
  • 表面是否应该与无处不在 完全匹配的数据匹配?
  • 哦,还有一个问题:数据中有什么结构吗?例如。是(x,y)中某种结构化网格上的点吗?请在问题中添加此类信息。
  • 我认为数据是否只代表一个表面或可能包含两个或多个不相交的表面也很重要,例如两个分离的球体。
  • 准确的方法是找到每一对法线平面的交点,然后用那些直线找到交点,形成不规则多边形,最后绘制出这些平面形状。它可以以数字方式实现,例如从定义的点增长法向平面,直到它们彼此相交;但这取决于点的分布,需要大量的运行时内存。

标签: matlab plot 3d


【解决方案1】:

我看到两个选项:

1) 使用基于点和法线的多边形进行直接几何重建。我认为patch 函数在这种情况下会很有用。它允许设置颜色。缺点:需要大量人工处理和处理异常情况。

2) 假设一个拟合函数,例如2D 多项式,并使用优化方法来匹配数据。您将需要一个目标函数,一方面考虑xyz 数据,另一方面考虑正常分量nxnynz。缺点:不太可能得到原始表面的精确表示,这也取决于您选择的拟合函数。

【讨论】:

    猜你喜欢
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2015-09-14
    • 2016-07-03
    • 2017-04-02
    • 1970-01-01
    相关资源
    最近更新 更多