language-agnostic - 以编程方式定位形状——高效打包

标签 language-agnostic constraints constraint-programming

假设我有一些抽象的形状,每个形状都定义了宽度和高度(为了简单起见,让它们成为矩形)。如何将尽可能多的它们放在一个定义了宽度和高度的 Canvas 上(只是一个术语,不一定是 HTML5 Canvas )?

显然这是某种约束满足问题,但我真的不知道从哪里开始(除了蛮力)。谷歌搜索只会出现不相关的结果(可能是因为我不知道要搜索什么)。什么是好的算法或创建算法来执行此操作的好方法是什么?

Fizz是一个很好的例子。形状(在本例中为圆形)成组出现并且彼此不重叠,并且彼此不受影响。我的用例更多是一次性定位交易。另一个例子是 SpriteRight ,在某些边界内尽可能有效地放置。

最佳答案

您的问题可能会受益于有限域 ( ) 上的约束逻辑编程。

考虑对 Prolog constraint processing: Packing squares 的问题和答案.它显示了几种方法,其中一种使用专用 placement constraints在 2D 中找到非重叠矩形的布局。

clpfd 还使您能够强制执行除打包约束之外的其他约束。有免费的(例如, SWIYAP )和商业的(例如, SICStus )支持 的实现.

关于language-agnostic - 以编程方式定位形状——高效打包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9268708/

相关文章:

language-agnostic - 如何区分UTF-8和ASCII文件?

ios - 具有多列的 TableViewCell

java - 如何使用 CP Optimizer 对提货和送货操作的容量约束进行建模?

c# - Microsoft Solver Foundation 为简单的 ILP 给出了错误的答案

sql-server - SQL Server 跨表约束

java - 考虑多重约束,如何处理任务之间的依赖关系?

algorithm - 行为树实现

algorithm - 如何使用线段树和二分搜索解决加权事件选择问题?

algorithm - 访问所有组合的最佳方式是什么

python - 传递给函数的未知类型的约束