Kohn曲线

相比基本的科赫曲线,加入了角度的修改


function draw_Kohn_Curve(P1, P2, N, options)

% P1,P2是线段的始末两点(必须是1*2的向量),N是递归层数
% options(1):线段宽度
% options(2):旋转角度
% options(3:5):线段颜色
% 分支会往向量 P1P2 的逆时针方向凸

default_options = [3 pi/3 0 1 0];
if nargin == 3
    options = default_options;
end
LineWidth = options(1);
theta = options(2);
Color = options(3:5);

A = [cos(theta) sin(theta); -sin(theta) cos(theta) ];
Rate = 1 / (2 + 2*cos(theta));

if N == 1
    plot([P1(1) P2(1)], [P1(2) P2(2)], 'Color', Color, 'LineWidth', LineWidth, 'EraseMode', 'xor');
else
    mid = (P2 - P1) * Rate;
    L = P1 + mid;
    R = P2 - mid;
    New = L + mid * A;
    draw_Kohn_Curve(P1, L, N-1, options);
    draw_Kohn_Curve(L, New, N-1, options);
    draw_Kohn_Curve(New, R, N-1, options);
    draw_Kohn_Curve(R, P2, N-1, options);
end

端点处由于被画了两次,会有神奇的效果。

把EraseMode改为none,就不会擦除了。

角度范围是0~pi,角度大于pi/2时最好用xor模式,不然图片比较紊乱。


科赫雪花,经典的的分形图像,由正三角形展成。


function Koch_Snowflake(N)

% N 是迭代次数

fig = figure('NumberTitle','off','name','科赫雪花','MenuBar','none');
set(fig, 'color', [255 235 215]/255);

axis equal;
axis off; hold on;

draw_Kohn_Curve([1 0], [-1 0], N);
draw_Kohn_Curve([-1 0], [0 sqrt(3)], N);
draw_Kohn_Curve([0 sqrt(3)], [1 0], N);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值