【问题标题】:How do I check if a line is behind a vertex?如何检查一条线是否在顶点后面?
【发布时间】:2014-01-20 15:01:46
【问题描述】:

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

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

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

除了这种情况外,这一切都很好: 算法没有考虑绿线。如何让它继续超出多边形的末端?

【问题讨论】:

  • 为什么不检查你计算的交点是否也是一个顶点(在一些小的误差半径内)?
  • 我不太清楚你的意思,请你解释一下
  • 您能解释一下为什么算法没有考虑绿线吗?在我看来,考虑它们是因为多边形在某种程度上是透明的。
  • 我希望了解一些上下文。你到底想完成什么?
  • 算法的预期结果应该是什么?最近的顶点/最近点?

标签: algorithm geometry raytracing


【解决方案1】:

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

【讨论】:

  • 是的,我唯一能想到的是,光线追踪(不是背向光线追踪)上的有限数量的光线投射出的所有物体都比它们小,因此。当然,如果它会穿过边缘,那么它们看起来很可能会更大......
  • @Spektre,我认为这与您所描述的相反 - 光线 不会 穿过 vertices (不是边缘)而不是OP 的预期。
猜你喜欢
  • 2011-04-19
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
相关资源
最近更新 更多