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

Finding two "bounding" vertices of a given polygon w.r.t. a known (light source) point

上下文:对于这个问题的不严谨性,我提前道歉,因为它比我原先想象的更难表述。我将通过不同的方法在给定多边形 w.r.t 的 2D space 中找到两个“边界”顶点。到一个已知点。在这种情况下,“边界”顶点是指 this image 最能描述的情况。 IE。设 p 为已知点,假设我们在 p 处放置一个光源。然后多边形 P(x_1,...,x_n) 的边界顶点是连接线段 l(v_1, v_2) 以与整个多边形相同的方式阻挡来自 p 的光线的那两个点 v_1, v_2 P(x_1,...,x_n) 确实如此。

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

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

LeftOf 测试仅仅是 2x2 行列式的符号。