Algorithm 如何检查线是否位于顶点后面?

Algorithm 如何检查线是否位于顶点后面?,algorithm,geometry,raytracing,Algorithm,Geometry,Raytracing,我有一个算法,从光源追踪凸多边形,所有的多边形都包含在4面墙之间。这是一个算法: 准备-将所有顶点添加到一个数组中,按它们与光源的角度排序,然后添加由另一个数组中的所有顶点生成的所有线 循环所有顶点并将光线旋转到它们的角度 将每个顶点设置为最近的点。 对于每个顶点,循环所有线并与射线相交,如果线/射线交点比上一个最近点更近,则将其设置为最近点 除此情况外,此操作非常有效: 算法没有考虑到绿线。我如何使它在多边形端点之外继续?我看不出有任何理由考虑绿线!光线落在顶点上,该顶点仍然是实体多边形的一部

我有一个算法,从光源追踪凸多边形,所有的多边形都包含在4面墙之间。这是一个算法:

准备-将所有顶点添加到一个数组中,按它们与光源的角度排序,然后添加由另一个数组中的所有顶点生成的所有线

循环所有顶点并将光线旋转到它们的角度 将每个顶点设置为最近的点。 对于每个顶点,循环所有线并与射线相交,如果线/射线交点比上一个最近点更近,则将其设置为最近点

除此情况外,此操作非常有效:
算法没有考虑到绿线。我如何使它在多边形端点之外继续?

我看不出有任何理由考虑绿线!光线落在顶点上,该顶点仍然是实体多边形的一部分。因此,光线将不再继续(沿绿线)是合乎逻辑的。您的算法正确且一致

为什么不检查你计算的交点是否也是一个顶点(在一些小的误差半径内)?我不太确定你的意思,你能解释一下吗?你能解释一下为什么算法不考虑绿线吗?在我看来,之所以考虑它们,是因为多边形在某种程度上是透明的。你到底想完成什么?算法的预期结果是什么?最近的顶点/最近的点?是的,我能想到的唯一一件事是光线跟踪上有限数量的光线(不是反向光线跟踪)投射出所有比它们更小的对象,因为这一点。当然,如果光线穿过边缘,那么它们很可能看起来更大…@Spektre,我认为这与你描述的相反-光线不会穿过顶点(而不是边缘),这与OP预期的相反。