【问题标题】:Listing integral plane points inside a triangle列出三角形内的积分平面点
【发布时间】:2020-05-25 02:08:42
【问题描述】:

给定平面点 p,q,r 如何判断三角形是否包含积分点?我想列出所有这些要点。

它有一个子问题:给定第四个点 s。如何判断 s 是否在三角形内?

【问题讨论】:

  • 平面是一个无限大的表面。它包含无限点,其中一些x,y,z 是整数。
  • @Ripi2 您提到的问题与子问题有关,尽管不太一样。

标签: algorithm geometry


【解决方案1】:

您需要三角形光栅化

可能的方法:按 Y 坐标对顶点进行排序,为顶点之间的每个垂直间隔确定边方程,并为该间隔中的每个整数 Y 获取左右整数点,然后填充内部点的整个水平扫描线。

例如,三角形的“左上角”边在 y 范围 3.14..17.3 中具有等式 2.2*y - x + 1.5 = 0。第一个整数 Y 是 4,代入得到10.3 - x = 0,所以最左边的整数 x 的值为 11。类似的过程为右边缘给出最右边的值(比如 p),所以我们输出点 (11,4), (12,4)...(p,4)

Arbitrary found article

subproblem - 这是完全不同的问题。检索所有积分点时不需要它。
如果你真的需要它 - calculate signs of cross products 带有矢量到点的边 (AB x AP, BC x BP, CA x CP)

【讨论】:

  • 感谢您的宝贵贡献。但应用不是在计算机图形中,而是在整数线性规划中。你的方法可能是可行的,但不是很清楚,我不相信它是有效的。您正在对坐标进行某种变换,但似乎忘记了它必须保留积分点。至于子问题,是的,这是一种方法。
  • 它非常高效——所有显卡/引擎都使用某种三角形光栅化来填充多边形片段,每秒数百万个三角形。你说的是什么变换?大多数图形例程都在整数坐标中工作 - 例如,看看 Bresenham 算法的线段
  • 但这不是一个图形例程,点 p,q,r 不是整数。我在欧几里得平面上工作。
  • 这并不重要。对于浮点值,线方程效果更好:)。
猜你喜欢
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 2017-03-30
  • 2014-03-24
  • 2021-12-21
  • 2014-12-06
  • 2011-03-05
  • 1970-01-01
相关资源
最近更新 更多