gpt4 book ai didi

c# - 将矩形拆分为 n 个较小的矩形并计算每个中心的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:00 26 4
gpt4 key购买 nike

我正在寻找一种简单的算法,给定一个宽度为 w 高度为 h 的矩形,将该矩形分成 n 个大小和形状大致相等的矩形,并计算这些矩形的中心。

编辑:忘记提及形状应尽可能类似于正方形。

有什么开始的提示吗?

最佳答案

一个简单的算法是垂直分割成 n 个大小相等的 strip ,高度为 h,宽度为 w/n。

如果您假设初始矩形的角为 (0,0) 和 (w,h),则使用此算法第 ith 矩形的中心点为 (w/n * (i + ½ ), h/2), 对于 0 <= i < n.


更新:尝试将数 n 分解为因子对 (i, j) 使得 i * j = n,并找到因子对使得因子的比值最接近边的比值的矩形。然后使用这两个因素创建较小矩形的规则网格。

例如,当 n 为 10 时,您可以在 (1, 10)、(2, 5)、(5, 2) 和 (10, 1) 之间进行选择。这是一个使用因子 (5, 2) 的示例网格:

------------------------------------|      |      |      |      |      ||      |      |      |      |      |------------------------------------|      |      |      |      |      ||      |      |      |      |      |------------------------------------

如果您的初始矩形的宽度为 60,高度为 20,那么使用因子对 (5, 2) 将得到十个大小为 (60/5, 20/2) = (12, 10) 的矩形,接近正方形。

关于c# - 将矩形拆分为 n 个较小的矩形并计算每个中心的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4913714/

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