查找给定多边形 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个顶点的多边形。游