【问题标题】:"Inverting" a concave polygon“反转”凹多边形
【发布时间】:2015-11-01 19:49:01
【问题描述】:

我正在构建一个 2D 游戏,玩家只能看到未被其他物体阻挡的事物。考虑一下这个例子,看看它现在的样子:

我已经为此实现了光线追踪算法,它似乎工作得很好(我已经减少了演示的边界以使所有边缘都可见)。

如您所见,较亮的区域由一堆三角形组成,每个三角形在玩家的位置上都有共同点。每两个邻居有两个共同点。

但是我愿意为多边形的外部部分计算边界,用黑色三角形填充它,“隐藏”玩家看不到的东西。 p>

一种方法是用当前多边形“掩盖”黑色矩形,但恐怕它非常无效。

关于实现这一目标的有效算法有什么想法吗?

谢谢!

【问题讨论】:

  • by external 你的意思是用三角形(或多边形)填充不可见区域吗?
  • @willywonka_dailyblah 是的,没错。我也编辑了问题以澄清这一点。

标签: graphics 2d trigonometry vector-graphics


【解决方案1】:

一种非分析性的粗略解决方案。

  • 极角逐渐增大的投射光线
  • 记录光线第一次击中对象的时间(以及击中的点)
  • 继续前进,直到它不再击中同一个物体(并记录它之前击中的位置)
  • 使用两个记录点,构造一个延伸到无穷大(或任何地方)的梯形

注意事项:

  • 不能很好地处理凹面 - 还需要包括中间的所有点。可能需要 Delaunay 三角剖分等……很乱!

  • 可能需要额外的状态来说明相互隐藏的对象。

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 2013-02-24
    • 2011-01-28
    • 1970-01-01
    • 2015-07-13
    • 2016-02-18
    • 2011-05-09
    • 2020-11-02
    • 2013-03-11
    相关资源
    最近更新 更多