【发布时间】:2019-07-23 08:56:54
【问题描述】:
我正在查看一组 100 张具有相同大小的红色圆圈的 PowerPoint 幻灯片,其中第一张幻灯片有 1 个圆圈,第 100 张幻灯片有 100 个圆圈。在每张幻灯片上,圆圈不重叠,虽然它们是半随机放置的,但它们往往会被中心吸引,并且彼此不会太近(我看不到极端异常值)。您可以自己查看幻灯片here)。
这些似乎是手工创建的(这肯定花了很长时间!),我开始思考以编程方式创建这样的东西的最佳方法是什么(有趣的玩具问题 - 自动化无聊的东西)?
我一直在考虑以下几点。
每张幻灯片最多 n 圈:
- 为画布上随机点处的圆生成坐标。
- 为此圆和画布上已有的所有其他圆计算更大的直径(对于更大的值),并使用计算出的更大直径检查新圆是否与任何现有圆重叠(以阻止圆太靠近一起)。如果可以,请继续,否则重新开始 2。
- 要阻止异常值,请进行某种检查以确保新生成的圆距 3(?) 个现有圆的中心不超过 x 距离?
- 如果所有签出,请保留新圈并再次从 1 开始,直到有足够的圈。
- 想办法为每个画布生成一个 png 或其他东西。
还需要找到一种方法,至少使前几个圆圈趋向于中心。
但是,虽然我喜欢思考问题,但我的编码能力需要工作,并且必须有某种出色的算法或其他东西才能正确地做到这一点?
很高兴任何指针或任何人都可以破解它 - 特别喜欢阅读一些 Python 实现来学习。
[我知道这可能不完全符合 StackOverflow 的风格,但不知道从哪里获得有关问题的想法]。
【问题讨论】:
-
如何在光盘上“均匀”分布点(这是一个众所周知的问题)然后剪切/拉伸光盘?
-
谢谢@norok2,我会看看。