查找给定多边形 w.r.t 的两个“边界”顶点。已知(光源)点

Posted

技术标签:

【中文标题】查找给定多边形 w.r.t 的两个“边界”顶点。已知(光源)点【英文标题】:Finding two "bounding" vertices of a given polygon w.r.t. a known (light source) point 【发布时间】:2021-12-08 03:02:55 【问题描述】:

上下文:我提前为这个问题的不严谨性表示歉意,因为事实证明它比我最初想象的更难表述。我将通过不同的方法在给定多边形 w.r.t 的 2D 空间中找到两个“边界”顶点。到一个已知点。在这种情况下,“边界”顶点是指this image 最能描述的情况。 IE。让p 成为已知点并假设我们在p 放置一个光源。那么多边形P(x_1,...,x_n) 的边界顶点就是这两个点v_1, v_2,连接线段l(v_1, v_2) 阻挡来自p 的光,就像整个多边形P(x_1,...,x_n) 一样。

问题:我已经有一个解决方案,可以通过旋转角度 w.r.t 比较 P 的顶点。到p。但是这种方法需要使用三角函数 atan2 函数,所以我很想知道是否有一种计算成本更低的方法。

【问题讨论】:

也许这会有所帮助:dgp.toronto.edu/~ghali/publications/thesis/html/node8.html 【参考方案1】:

选择一个任意的起始顶点,让 A。现在选择另一个,让 B,并检查它是否位于 FA 的左侧。如果是,继续FB等等。同时对左和右执行此操作。

LeftOf 检验只是 2x2 行列式的标志。

【讨论】:

以上是关于查找给定多边形 w.r.t 的两个“边界”顶点。已知(光源)点的主要内容,如果未能解决你的问题,请参考以下文章

在给定多边形坐标的情况下查找点属于哪个多边形的算法

多边形裁剪与文字裁剪

c_cpp 给定Ñ个顶点的多边形,每个顶点标有一个整数,每条边上标有+(加)或是×(乘)号,并且Ñ条边按照顺时针依次编号为1〜n的给出。了一个N = 4个顶点的多边形。游

Hzoi 2018.2.11多边形 区间DP

数字几何处理

裁剪算法——多边形裁剪/文字裁剪