Matlab 绘制 k-六角星跳棋盘
Matlab 绘制 k-六角星跳棋盘
已知六角星跳棋盘,它是由一些小的正三角形拼出的,如果记棋盘上最小正三角形的边长为1cm,六角星的每个角上的三角形的边长为 k cm,就称这个六角星跳棋盘为'k-六角星棋盘'。跳棋盘上的每一个交叉点是旗子可以落下的地方。
本文将介绍如何使用 Matlab 脚本绘制 k-六角星跳棋盘。
代码示例
以下代码示例展示了如何绘制 '5-六角星棋盘'。
% pr_qmks2_zhcz2.m
% 绘制k-六角星棋盘
% 作者:Xu Xiaotian
% 日期:2021年5月12日
% 清空原有变量和命令窗口
clear; clc;
% 定义k的值
k = 5;
% 计算六边形内切圆的半径r
r = k * sqrt(3) / 3;
% 计算棋盘宽度
width = 2 * k + 1;
% 计算棋盘高度
height = 4 * k - 2;
% 创建画布
figure('Name', [num2str(k) '-六角星棋盘'], 'NumberTitle', 'off');
% 绘制棋盘
for i = 1 : height
% 计算当前行的起始和终止位置
if i <= k
start = k - i + 1;
stop = k + i - 1;
else
start = i - k + 1;
stop = width - (i - k);
end
% 绘制当前行
for j = start : stop
% 计算当前格子的中心坐标
x = j * sqrt(3);
if mod(i, 2) == 0
x = x + sqrt(3) / 2;
end
y = i * 1.5;
% 绘制六边形
theta = 0 : pi / 3 : 2 * pi;
xunit = r * cos(theta) + x;
yunit = r * sin(theta) + y;
fill(xunit, yunit, 'w');
% 绘制交叉点
plot(x, y, 'ko', 'MarkerFaceColor', 'k', 'MarkerSize', 5);
end
end
% 设置坐标轴范围和标签
axis equal;
axis off;
xlim([-r, width * sqrt(3) + r]);
ylim([-r, height * 1.5 + r]);
代码解析
- 定义 k 值:代码首先定义了 k 的值为 5,表示要绘制 '5-六角星棋盘'。
- 计算六边形内切圆的半径:根据正六边形的性质,可以计算出六边形内切圆的半径 r 为 k * sqrt(3) / 3。
- 计算棋盘宽度和高度:代码计算了棋盘的宽度和高度,分别为 2 * k + 1 和 4 * k - 2。
- 创建画布:代码创建了一个名为 '5-六角星棋盘' 的绘图窗口。
- 绘制棋盘:代码使用嵌套循环绘制棋盘,外层循环控制行号,内层循环控制列号。
- 绘制六边形:代码使用 fill 函数绘制六边形,参数为六边形的顶点坐标。
- 绘制交叉点:代码使用 plot 函数绘制交叉点,参数为交叉点的坐标。
- 设置坐标轴范围和标签:代码设置了坐标轴的范围和标签,并使用 axis equal 函数使横纵坐标轴比例一致。
运行结果
运行以上代码将得到 '5-六角星棋盘' 的图形。
总结
本文介绍了使用 Matlab 脚本绘制 k-六角星跳棋盘的方法,并提供了代码示例。通过修改代码中的 k 值,可以绘制不同大小的 k-六角星跳棋盘。
原文地址: https://www.cveoy.top/t/topic/oQsL 著作权归作者所有。请勿转载和采集!