Math 将矩形等分为n个部分

Math 将矩形等分为n个部分,math,Math,我想编码一个视频平台,但遇到了一个问题,现在想不出解决方案 我想把一个矩形等分 我想出了一个正方形的解,但我不能想出一个不同比率的解 也许你们能帮我 例如: BAD GOOD n=4 ________ ________ | | | | | | | | | | | | |

我想编码一个视频平台,但遇到了一个问题,现在想不出解决方案

我想把一个矩形等分

我想出了一个正方形的解,但我不能想出一个不同比率的解

也许你们能帮我

例如:

 BAD                                GOOD

n=4
________                            ________
| | | | |                           |   |   |   
| | | | |                           |---|---|
|_|_|_|_|                           |___|___|

n=2
________                             ________
|   |   |                           |       |
|   |   |                           |       |
|   |   |                           |–––––––|
|   |   |                           |       |
|___|___|                           |_______|

设X为矩形的宽度,Y为高度。我们的目标是将这个矩形划分为N个面积相等的矩形,这些矩形的边尽可能接近相等

解决办法并不困难。首先,找出N的所有因子。然后,将N写成两个数字a和B的乘积,使a和B尽可能接近(也就是说,没有其他选择a'和B'使| a'-B'|<| a-B |)。假设我们选择了A>B。我们所要做的就是沿矩形的长边放置A-1行,沿短边放置B-1行

例如:n=4、A=2和B=2是最优的,因此沿矩形的每一侧放置A-1=1和B-1=1行(如n=4的“好”列)

例如:n=21、A=7和B=3是可选的,因此沿矩形的长边放置6行,沿短边放置2行,间距相等:

 _ _ _ _ _ _ _
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
 

当然,对于素数N,你不会得到一个很好的解,但是在这种情况下,没有很好的解。在这种情况下——A和B非常不同,矩形的尺寸也没有类似的不同——您可能需要选择另一种解决方案,它不要求所有矩形的边长都相同。例如,在解中加入2到3种或更多的矩形,可以做得更好。

对于n=31或另一个素数,需要什么样的解?我突然想到,这使得矩形尽可能接近原始矩形。它不会将矩形分割为尽可能接近正方形的矩形。要做到这一点,您需要选择A和B,使它们的比率尽可能接近X和Y的比率,然后相应地布置线。