【问题标题】:Mapping random 2D shape to uv parametric rectangular grid将随机 2D 形状映射到 uv 参数矩形网格
【发布时间】:2018-10-03 17:06:03
【问题描述】:

我想将一些随机的 2D 形状映射到 uv 参数空间, 例如A:(u:0.0 v:1.0)B:(u:0.0 v:0.0)C:(u:1.0 v:1.0)D:(u:1.0 v:0.0), 并希望将项目内部的随机点 P 映射到参数空间。

线AB、AC、BD、CD由路径组成,也可以表示为连通边。

所以问题是,我应该如何获得正确的 P uv 值? 我在图形和几何方面有一些知识,所以如果需要,你能推荐任何基本的文章,我能找到解决问题的任何提示吗? 非常感谢

【问题讨论】:

  • 你的随机形状是如何表示的?
  • 我有 4 种形状:椭圆、矩形、多边形,其余的一种是闭合路径,如图所示。所有形状都是封闭的并在 2D 空间中表示。由于我的系统是基于 QT 构建的,因此它们表示为 qgraphicsItemClass 或 svg。 e. G。椭圆有中心点和r,矩形有4个点和边的长度。
  • 每个形状都可以转换为路径或边缘集。转换后可以得到某个点的dx、dy等成员函数。颜色均匀。点 ABCD 由用户选择,应位于形状的边界或内部。
  • 那么,您想将 2D 映射到 2D 吗?那么也许只使用bilinear interpolation
  • 看看 Coons 补丁。我猜你可以根据你的情况调整它们。 (但不幸的是,它们解决了 (u, v) 到 (x,y) 的逆问题),您将不得不求解非线性方程。)

标签: qt graphics 2d computational-geometry uv-mapping


【解决方案1】:

你问的不是那么容易。

您可以通过两个 Coons 插值 X(u, v) 和 Y(u, v) 生成从 (u, v) 坐标到笛卡尔 (x, y) 坐标的转换。

现在如果你想反转关系,你需要解决系统

X(u, v) = x
Y(u, v) = y

这是非线性的。

如果您有许多要映射的点(这很可能),解决问题的一种方法是在 (u, v) 空间中应用网格并在 (x, y) 中计算相应的网格。网格应该足够精细以确保准确性。然后对于给定的 x 和 y,您需要找到它们所属的四边形并获得 u 和 v,例如通过双线性插值,计算水平与边的交点,然后与垂直相交。

为了加快包含图块的搜索,您可以使用边界框并将它们存储在间隔树中。也可能,搜索最近的顶点(通过 kD 树)并在相邻的瓦片中搜索封闭的四边形。

所有这些都是非常技术性的。


如果您的目的只是提供在顶点处可用的 (u, v) 信息进行三角剖分,那么如上所述的网格划分就足够了。

【讨论】:

  • 你的两个cmet都给了我很多建议。我想知道的一点是:如果我们假设路径 AB 和路径 CD 是不同的函数,那么穿过形状的路径就像两个函数的卷积?或者受两个函数影响的东西。所以我的方法是准确地得到那个路径通过 (0.u,0.v) 点,并首先获得网格。
  • @andkspark:我说了两次:浣熊队。
  • 是的,看来这就是我要找的。再次感谢:)
猜你喜欢
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
相关资源
最近更新 更多