【问题标题】:Special polygonial for loop in two dimensional array二维数组中的特殊多边形for循环
【发布时间】:2012-01-13 04:20:54
【问题描述】:

这对计算机科学家来说有点棘手。 假设我有一个 100 x 100 个条目的二维数组/矩阵,arr[i][j]。 i 和 j 从 0 到 99。 这可以设想为一个正方形的点,每个点对应一个数据值。

现在,如果我定义一个 4 点多边形并知道这 4 个点的索引: 是否有可能(是否有一个聪明的算法)只遍历矩阵中位于 4 点多边形内的那些条目? 也就是说,循环圈中 i 和 j 的每个值都对应于 arr[i][j] 中的一个有趣的值(i 和 j 在 4 点多边形内)。

这清楚吗?如果很难理解,我可以理解。

此致

【问题讨论】:

  • 在网上搜索“扫描转换”。您会发现大量的教程和示例代码。
  • 你本质上是在寻找一种填充算法,其中有很多。
  • 非常感谢,这确实帮助解决了我的大部分问题。你知道这些算法是否也适用于参数化椭圆而不是多边形?
  • 阅读enchantia.com/graphapp/doc/tech/ellipses.html 看看是否有帮助。
  • 谢谢 Iskar,我也找到了那张纸。但我需要它是一个比轴对齐的更通用的椭圆。 /尼克

标签: c++ c loops real-time point-in-polygon


【解决方案1】:

听起来类似于三角形光栅化。

你可以在上面找到很多文章/教程,比如这篇:

http://joshbeam.com/articles/triangle_rasterization/

或者这个:

http://sol.gfxile.net/tri/index.html

使用 4 点多边形只需将其分成 2 个三角形。

【讨论】:

  • 谢谢 Pubby,因为我们的目标是在实时实现中使用该算法,所以它必须快速且简单。这是找到位于多边形内的指标的最佳(计算)方法(在您的示例中将它们涂成灰色/蓝色)?
  • @Nicke 非常快,因为它主要用于 3D 图形。
  • 非常感谢,这确实帮助解决了我的大部分问题。我还会像上面一样问你另一个相关的问题:你知道这些算法是否也适用于参数化椭圆而不是多边形?
猜你喜欢
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 2019-06-02
  • 1970-01-01
相关资源
最近更新 更多