代码之家  ›  专栏  ›  技术社区  ›  Martin

将曲面拟合到3到100个点,其中Z值为3D

  •  0
  • Martin  · 技术社区  · 7 年前

    我发现自己遇到了一个很大的问题。我的数学一般,我需要解决一些东西,这是不是很涵盖在互联网上。

    我的问题是:我有一个由x和y定义的二维空间,这个空间只是一个绘图空间。我想给特定的xs,ys分配一种带有rgb值的颜色。

    假设我有4个点,位置在xy,颜色在z:

    1. [0,0,[255,0,0]]
    2. [0,10,[0255,0]]
    3. [10,10,[0,0255]]
    4. [5,5,[0,0,0]]

    我的绘图空间是xy:15x15。 我想把颜色分配给所有的空白点

    对我来说,这是一个相当微妙的问题,因为Z轴本身就是一个基本的3D空间。

    我的全部意图是创建一个彩色地图,其中点1,2,3,4之间有平滑的过渡。 我能在1d内解决这个问题,其中过渡点在2点之间。但我需要在xy绘图空间中根据这4个点的拟合曲面来创建二维彩色地图,这既取决于3d-rgb的空间,又取决于它们之间的距离。

    提前谢谢你的帮助

    1 回复  |  直到 7 年前
        1
  •  1
  •   Rory Daulton    7 年前

    你没有显示任何算法或代码,所以我只解释一个高级算法。如果你需要更多的细节,代码或数学公式,展示更多你自己的工作然后问。你不能仅仅解释你所说的“平稳过渡”是什么意思——它有多种含义。这将导致连续的阴影,但可能不够平滑的目的。

    首先,给定矩形绘图空间中的点,找到 Voronoi diagram 为了这些。这会将绘图空间划分为凸多边形,每个多边形围绕一个点。

    为每个人 顶点 在voronoi图中,找出哪些点最接近顶点——通常只有三个点,但可能还有更多。然后在该顶点处,指定颜色,该颜色是附近给定点的rgb值的平均值。也就是说,分别取r值、g值和b值的平均值。

    对于voronoi多边形上的任何点 边缘 ,其颜色是端点处两种颜色的加权平均值。即,如果点是距一端距离的三分之一,则其rgb值是距端点距离的三分之一。

    最后,为了任何一点 里面 一个voronoi多边形,计算从定义该多边形的点(“中心点”)到当前点的光线。找到光线与多边形相交的位置。然后,rgb值是中心点和多边形交点的值的加权平均值。

    最困难的是找到voronoi图。 Fortune's algorithm 可以在合理的时间内完成。您可能可以找到一个库来使用您选择的编程语言来完成这项工作。


    另一个算法是从 triangulation of your given points 以及绘图区域的角。然后三角形中任意点的颜色是顶点颜色的加权平均值。对于三角形顶点或边上的点,这将自动保持一致,因此这可能比我以前的算法简单。这里的困难是找一个三角测量法(任何方法都可以)。