编辑代码

% 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; % 释放图形,不再保持