您的位置:首页 >如何从大正方形提取固定小正方形
发布于2026-04-20 阅读(0)
扫一扫,手机访问

本文介绍如何将一个给定坐标的较大正方形,按指定边长均匀划分为多个不重叠的小正方形,并返回其坐标数组;支持边界截断处理,自动忽略超出原区域的部分。
本文介绍如何将一个给定坐标的较大正方形,按指定边长均匀划分为多个不重叠的小正方形,并返回其坐标数组;支持边界截断处理,自动忽略超出原区域的部分。
在图像处理、网格布局、地图瓦片生成或游戏开发等场景中,常需将一个二维区域(如大正方形)按固定尺寸切分为若干个规则子区域(小正方形)。关键在于:确保每个小正方形完全落在原始区域内,且彼此无重叠、无缝隙(除可能存在的右/下边界余量外)。
给定大正方形的左上角坐标 (x1, y1) 和右下角坐标 (x2, y2)(注意:此处采用常规笛卡尔坐标系理解,即 x 向右递增、y 向下递增,且坐标为整数点),以及目标小正方形边长 $smallerSquareSide,我们可通过双重嵌套循环实现高效划分:
以下是完整可运行的 PHP 示例代码:
$x1 = 1;
$x2 = 100;
$y1 = 1;
$y2 = 100;
$smallerSquareSide = 10;
$res = [];
for ($i = $y1; $i + $smallerSquareSide - 1 <= $y2; $i += $smallerSquareSide) {
for ($j = $x1; $j + $smallerSquareSide - 1 <= $x2; $j += $smallerSquareSide) {
$res[] = [$j, $j + $smallerSquareSide - 1, $i, $i + $smallerSquareSide - 1];
}
}
// 输出前5个示例(验证格式)
print_r(array_slice($res, 0, 5));
// 输出示例:
// Array (
// [0] => Array ( [0] => 1 [1] => 10 [2] => 1 [3] => 10 )
// [1] => Array ( [0] => 11 [1] => 20 [2] => 1 [3] => 10 )
// [2] => Array ( [0] => 21 [1] => 30 [2] => 1 [3] => 10 )
// [3] => Array ( [0] => 31 [1] => 40 [2] => 1 [3] => 10 )
// [4] => Array ( [0] => 41 [1] => 50 [2] => 1 [3] => 10 )
// )✅ 注意事项与最佳实践:
掌握此方法后,你可轻松扩展至矩形区域划分、带偏移量的滑动窗口采样,甚至结合 GD 或 Imagick 实现图像分块导出。
下一篇:微信群管理员查看与转让方法
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9