gpt4 book ai didi

java - 是否可以制作多边形边界框?

转载 作者:行者123 更新时间:2023-11-29 06:15:05 24 4
gpt4 key购买 nike

(首先,可以肯定的是,六边形是具有 6 个点的多边形,想想 hive 或文明 5)

我正在制作一个使用六边形网格的游戏,但我似乎无法获得正确的边界框,Javas API 只告诉我矩形“BB”(getBounds 和 getBounds2D)。

我已经绘制了形状并将它们按应有的方式对齐,但我希望单元格彼此完全相邻,或者边缘进入彼此或者它们紧挨着彼此,但从来没有甚至 1 个像素它们之间。当 BB 是矩形时,这是不可能的。

如果这完全不可能,也许有一种方法可以减小组件的大小但仍然绘制完整的东西?这样你就可以有一个横跨六边形中间的规则矩形,尽管它使两个“点”无用,这并不好。

谢谢<3

最佳答案

根据定义,边界框是一个框(也称为矩形)。所以不,不可能制作非矩形边界框。

可以创建一个非矩形窗口、裁剪区域……但是包围这些东西的框永远是一个“框”。这是因为很多例程对边界框进行初步检查(重叠等),然后对实际形状进行细粒度检查。细粒度检查的计算成本很高,因此快速检查(这些矩形是否重叠?)可以充当过滤器,为哪些候选人值得额外的时钟周期。

也就是说,您要对边界框执行的操作是完全不同的事情:

  1. 如果您打算使用边界框的坐标来确定是否需要将某些内容绘制到屏幕上,那么即使边界框的一部分可见,也可以绘制它。然后使用裁剪例程(可以裁剪成任何形状)以确保仅显示您希望可见的位。

  2. 如果您打算使用边界框的坐标来指定点击监听器,那么就这样做吧。在六边形监听器中实现额外代码以确定点击是在六边形内还是仅在边界框内。如果它在十六进制之外,则丢弃。

基本上,如果不进一步了解您要完成的目标,就不可能提供合理的解决方案;然而,许多例程首先进行边界框检查,作为减少调用次数的一种快速而肮脏的方法,然后进行更详细的检查以查看边界框解决方案是否为误报(想想对象碰撞)。

关于java - 是否可以制作多边形边界框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5396697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com