Arrays 我的矩形在二维正方形网格中接触多少个正方形?
我遇到了以下谜团: 在我的2d正方形网格中,随机放置的给定矩形有多少个正方形 请注意,矩形当然可以旋转,这会使内容复杂化 示例-它接触4x6=24个正方形,但如果旋转,它将接触更多: 我的努力是: 检查每个正方形,查看每个肋骨是否与原始正方形相交。我见过一种非常优雅的方法来判断一条直线的两段是否相交,但我还是觉得有点难看 更好的方法是找到靠近原始A、b、c、d点的点,并对它们进行检查,直到得到一个不在矩形中的点。有一个很好的解决方案来确定一个点是否包含在一个矩形中。Arrays 我的矩形在二维正方形网格中接触多少个正方形?,arrays,algorithm,geometry,Arrays,Algorithm,Geometry,我遇到了以下谜团: 在我的2d正方形网格中,随机放置的给定矩形有多少个正方形 请注意,矩形当然可以旋转,这会使内容复杂化 示例-它接触4x6=24个正方形,但如果旋转,它将接触更多: 我的努力是: 检查每个正方形,查看每个肋骨是否与原始正方形相交。我见过一种非常优雅的方法来判断一条直线的两段是否相交,但我还是觉得有点难看 更好的方法是找到靠近原始A、b、c、d点的点,并对它们进行检查,直到得到一个不在矩形中的点。有一个很好的解决方案来确定一个点是否包含在一个矩形中。 然而,这里有很多边缘情况,
然而,这里有很多边缘情况,我不知道如何处理。当旋转矩形时,计算接触的细胞可能是一个相当复杂的问题。但是你可以使用一种光栅化来获得所有被触摸的细胞 按Y排序顶点。获取顶部顶点。平行穿过两条入射边,计算每条扫描线中的单元数(最左边的单元表示左边缘,最右边的单元表示右边缘),直到遇到下一个顶点。再次使用相应的边继续 请注意,不能直接使用像Bresenham这样的线条绘制算法,因为它们不用于检测所有接触的单元格(尽管它们可能会被修改) Amanatides和Woo的“用于光线跟踪的快速体素遍历算法”用于二维 例如:
为了寻找一个切实可行的解决方案,我将采用以下方法: 1.围绕(旋转的)矩形(R1)绘制一个矩形(r2)。方格R1是r2减去所有剩余的方格 2a。从左下角开始,每次向右移动一个正方形,直到到达c1 2b。对于每个正方形,计算完整的正方形,向上移动直到触摸R1。 (即4+3+2+1) 3a。从右下角开始,每次向左移动一个正方形,直到到达c1 3b。对于每个正方形,计算完整的正方形,向上移动直到触摸R1。 (3+2+1) 4对顶部重复上述步骤 (2+1)+(4+3+2+1) R1取=r2-上面计数的平方=(8*8)-(10+6+3+10)=35
我的意思是,你可以轮换它来寻求帮助,你最好展示自己的努力。对不起,现在我已经展示了我的努力。我相信你应该重新表述这个问题,加上Max这个词:在我的二维正方形网格中,一个给定的矩形,随机放置,有多少个正方形是最大的接触?我会说(天花板(宽度)+1)*天花板(高度)+1)。我相信旋转不会产生影响,因为你在三角形底部的松动会在顶部得到。Gassa和我有着相同的问题:清晰的问题陈述会被认可(我被问题所吸引)。我做了类似的事情,但是,运行这样的算法需要很长时间,因为你必须扫描所有可以将矩形放入网格中的选项。好的,我想你在根据放置的矩形搜索答案的地方,我想你已经改变了你的文本。尽管如此,我还是喜欢这个谜语,我将继续寻找最大平方数的数学答案。