% Koch Curve Plot
% 初始线段 E0
E0 = [0 0; 1 0];
% Koch Curve 生成函数
function E = koch_curve(E, n)
if n == 0
E = E;
else
% 计算新的顶点
third = (E(2,:) - E(1,:)) / 3;
E1 = [E(1,:); E(1,:) + third];
E2 = [E(1,:) + third; E(1,:) + 2*third + [0, sqrt(3)*third(1)]];
E3 = [E(1,:) + 2*third + [0, sqrt(3)*third(1)]; E(2,:)];
E4 = [E(2,:); E(2,:) - third];
% 递归调用生成更小的 Koch 曲线段
E1 = koch_curve(E1, n-1);
E2 = koch_curve(E2, n-1);
E3 = koch_curve(E3, n-1);
E4 = koch_curve(E4, n-1);
% 合并所有曲线段
E = [E1; E2; E3; E4];
end
end
% 主脚本
figure; % 创建一个新的图形窗口
hold on; % 保持当前图形,以便在同一个图上绘制多个曲线
% 绘制 E2
E2 = koch_curve(E0, 2);
plot(E2(:,1), E2(:,2), 'b-', 'LineWidth', 2);
text(0.5, 0.8, 'E2', 'Color', 'b');
% 绘制 E3
E3 = koch_curve(E0, 3);
plot(E3(:,1), E3(:,2), 'r-', 'LineWidth', 2);
text(0.5, 0.7, 'E3', 'Color', 'r');
% 绘制 E6
E6 = koch_curve(E0, 6);
plot(E6(:,1), E6(:,2), 'g-', 'LineWidth', 2);
text(0.5, 0.6, 'E6', 'Color', 'g');
% 设置图形属性
title('Koch Curve Iterations E2, E3, E6');
xlabel('x');
ylabel('y');
axis equal; % 使 x 轴和 y 轴的比例相同,以便图形不会变形
grid on; % 显示网格线
hold off; % 释放图形,不再保持