利用二维数组实现二维坐标系系统
作者:吹吹风会发光
时间:2026-06-26
来源:互联网
浏览:0
二维数组模拟二维坐标系:行对应y,列对应x,原点左上角,y轴向下。需处理边界与初始化,支持点、线段、矩形填充及邻域查询。负坐标可用偏移法(整体平移)或哈希映射实现,以扩展至任意象限。
二维数组不仅能像表格一样组织数据,更可以模拟一个离散的二维坐标系。在这个体系里,行对应y方向,列对应x方向(当然反过来定义也行,只要团队约定一致),数组中的每个元素都记录着该坐标点的状态——是空闲、被占用、标记了颜色,还是设置了障碍物。

接下来,我们就一步步拆解这个映射过程,看看从数组索引到坐标点的转换是怎么玩的。
坐标与数组索引的映射关系
通常我们把arr[y][x]当作坐标系中点(x, y)的存储位置。这里要注意一个关键点:数组的第一维代表行(y),第二维代表列(x),所以索引顺序正好和数学上的(x, y)相反。举个例子:
- 坐标点(2, 3)对应arr[3][2],前提是y向下为正、x向右为正
- 如果觉得这样反直觉,也可以定义arr[x][y],但必须全程一致,并在内存布局和遍历习惯上多加注意
- 原点(0, 0)通常映射到数组左上角arr[0][0],y轴向下增长——这很符合多数屏幕坐标的惯例
初始化与边界处理
创建一个固定大小的坐标系,关键是要先明确范围和默认状态:
- 声明如int grid[HEIGHT][WIDTH],然后用循环或memset把所有元素初始化为0,代表空闲或空状态
- 每次访问前,必须检查索引是否越界:0 ≤ x < WIDTH 且 0 ≤ y < HEIGHT
- 建议封装一个安全读写函数,比如setPoint(x, y, value),内部做好范围判断,这样既能避免崩溃,也让代码更清晰
常见操作示例
在这个坐标系上实现基础功能,其实不用额外库,纯逻辑就能搞定:
- 绘制点:直接赋值grid[y][x] = 1
- 绘制线段:用Bresenham算法或简单插值得到整数坐标序列,然后逐点赋值
- 矩形填充:双重循环遍历x∈[x1,x2]和y∈[y1,y2]区域,逐个像素填充
- 邻域查询:遍历(y±1, x±1)共8个方向,注意跳过那些可能越界的坐标
扩展考虑:支持负坐标或动态范围
标准二维数组天生只支持非负索引。如果要用负坐标(比如(-5,-5)到(5,5)),有几种实用的方案:
- 偏移法:申请一个足够大的数组(例如[100][100]),约定中心点(0,0)对应arr[50][50],所有坐标都加上偏移量后再访问
- 哈希映射:改用map
, T> 或自定义哈希表,按需存储稀疏点。好处是节省空间,但随机访问性能会略差一些 - 动态二维容器:比如vector
>,可以在运行时调整大小,但需要手动管理行列长度
作者最新文章
PDF怎么取消密码保护?4种解锁方法整理
2026-09-08 18:23
三星 Galaxy Z Fold8 内屏边角支撑偏软?实测与官方回应
2026-09-08 16:39
手机Excel表格制作教程:小屏幕高效录入与格式调整指南
2026-09-04 09:27
PDF文档按页转换成图片怎么做?在线转换步骤整理
2026-09-03 11:06
PDF转Excel操作指南:在线工具、Adobe与Excel内置功能详解
2026-09-02 19:08
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















