Geometry 如何将点映射到扭曲的栅格上

Geometry 如何将点映射到扭曲的栅格上,geometry,grid,coordinates,mesh,unwarp,Geometry,Grid,Coordinates,Mesh,Unwarp,假设您有一组点,其坐标在笛卡尔坐标系上 你想画另一个点,你知道它在同一个笛卡尔坐标系中的坐标 但是,您正在绘制的绘图与原始绘图不同。想象一下,以不对称的方式(没有重叠或任何复杂的东西)将原始平面打印在橡胶板上,在某些地方拉伸,在其他地方挤压 () 您知道每个点集的拉伸和非拉伸坐标,但不知道基本拉伸函数。您知道新点的非拉伸坐标 如何根据附近点的拉伸位置估计在拉伸坐标中绘制新点的位置?它不需要精确,因为除非有更多信息,否则无法从一组重新映射的点确定实际拉伸函数 其他可能的关键字:扭曲扭曲的网格平面

假设您有一组点,其坐标在笛卡尔坐标系上

你想画另一个点,你知道它在同一个笛卡尔坐标系中的坐标

但是,您正在绘制的绘图与原始绘图不同。想象一下,以不对称的方式(没有重叠或任何复杂的东西)将原始平面打印在橡胶板上,在某些地方拉伸,在其他地方挤压

()

您知道每个点集的拉伸和非拉伸坐标,但不知道基本拉伸函数。您知道新点的非拉伸坐标

如何根据附近点的拉伸位置估计在拉伸坐标中绘制新点的位置?它不需要精确,因为除非有更多信息,否则无法从一组重新映射的点确定实际拉伸函数


其他可能的关键字:扭曲扭曲的网格平面坐标unwarp

好,这听起来像是图像扭曲。这就是你应该做的:

  • 创建未扭曲栅格的三角形,并使用扭曲栅格和未扭曲栅格之间的对应关系知识为扭曲栅格创建三角剖分。现在您知道了每个图像中对应的三角形,并且由于没有重叠,您应该能够轻松地执行下一步

  • 现在,要在扭曲的图像中找到相应的点
    A

  • 找到三角形
    A
    所在的位置,并使用未旋转栅格中的三角形和扭曲栅格之间的变换来计算新位置
  • 对此进行了详细的解释


    另一种(更复杂的)方法是(上面的幻灯片中也解释了这一点)。

    很大程度上取决于现有点的数量。如果你只有一个点,你就不能用它来做很多事情——你可以在同一个方向上用同样的量来偏移第二个点,但是你没有足够的数据来做得更好


    如果有相当多的现有点,可以通过这些点进行曲面拟合,并使用该拟合来近似新点的正确位置。给定N个点,您总是可以使用N阶多项式获得完美拟合,但您很少希望这样做——相反,您通常猜测拉伸函数是一个相当低阶的函数(例如,二次或三次),并在此基础上将曲面拟合到点。然后根据拟合曲面的函数放置新点。

    据我所知,包裹网格点和未包裹网格点之间存在一对一的对应关系。我假设变形并不是那么极端,你可能有相交的网格线(就像你展示的图像)

    该策略正是Jacob建议的:对两个网格进行三角剖分,使三角形之间存在一对一的对应关系,在三角剖分中定位要映射的点,然后在相应三角形中使用重心坐标计算新点的位置

    预处理

  • 生成包裹网格点的形状,我们称之为
    WT
  • 对于
    WT
    中的每个三角形,在展开网格中的相应顶点之间添加一个三角形。这将对展开的点进行三角剖分
    UWT
  • 将点
    p
    映射到包装的网格中

  • 在包含
    p
    UWT
    中找到三角形
    T(p1,p2,p3)
  • 计算
    T(p1,p2,p3)中
    p
    (b1,b2,b3)
  • Tw(q1,q2,q3)
    WT
    中对应于
    T(p1,p2,p3)
    的三角形。新职位是b1*q1+b2*q2+b3*q3
  • 备注
    这将提供一个变形函数作为一个函数。对于更平滑的行为,可以使用相同的三角剖分,但进行高阶近似,这将导致更复杂的计算,而不是重心坐标。

    其他答案非常好。我要补充的唯一一件事是,您可能希望以一种方式来描述变形


    如果这是有用的,那么很有可能将变形网格/晶格拟合到已知的点对,然后您就有了一种非常快速的变形未来点的方法。

    +1对于解释您试图做什么的图形,我公平地偷走了它们;)展开网格点和包裹网格点的Delauay三角形之间没有一对一的对应关系。事实上,规则网格已经没有唯一的Delaunay三角剖分,即使有,变形也可能会导致某些边翻转……因为OP事先知道这一点,所以存在一对一的对应关系。由于这种对应关系是已知的,并且在扭曲过程中没有重叠(根据OP),因此未扭曲网格上的任何Delaunay三角剖分都可以用于扭曲网格,因此可以找到相应的三角形。顶点之间有一对一的对应关系,但两个Delaunay三角剖分之间没有对应关系。请参见此处的示例:这是两个Delaunay三角剖分,颜色表示顶点之间的对应关系。由于变形,右侧的红、绿、蓝顶点之间没有三角形。这就是为什么我在我的解决方案中建议只计算一个Delaunay三角剖分,然后根据顶点对应关系推导出另一个三角剖分。我现在明白你的意思了。我在给你的评论和我最初的回答中提出的方法是不同的,我会改变这一点-谢谢。你知道扭曲点和未扭曲点之间的映射吗?我喜欢你在这里包括细节,而不是仅仅链接到一个长的外部文档,但是