Я не могу понять, почему октава (Matlab) представила этот график - PullRequest
1 голос
/ 06 августа 2020

Я старшеклассник и новичок. Я пытаюсь сделать фрактальное дерево, и Octave представляет этот график:

Однако я думаю, что в моем коде нет ошибок. Помогите плз ТТ.

graphics_toolkit gnuplot_binary
function FractalTree()
totalIter=9;
angle=pi/6;
len1=3*1.2^tatalIter;
w=totalIter;
figure(1); clf
plot([0 0],[-len1,0],'LineWidth',w,'Color',[0 0 0]
hold on
drawBranches(pi/2,[0,0],totalIter-1, ...
    angle,totalIter);
    function drawBranches(initAngle,pt,Iter,... 
            angle, totalIter)
        len=1.2^Iter;
        x1=pt(1);
        y1=pt(2);
        ang1=initAngle+angle;
        ang2=initAngle-angle;
        x2=len*cos(ang1)+x1;
        y2=len*sin(ang1)+y1;
        x3=len*cos(ang2)+x1;
        y3=len*sin(ang2)+y1;
        w=Iter;
        c2=[1-Iter/totalIter 0 1-Iter/totalIter];
        p1=plot([x1,x2],[y1,y2],'LineWidth',w,'Color',c2);
        p2=plot([x1,x3],[y1,y3],'LineWidth',w,'Color',c2);
        pause(0.01)
        if Iter-1>0
            drawBranches(ang1,[x2,y2],Iter-1,angle,... 
                totalIter);
            drawBranches(ang2,[x3,y3],Iter-1,angle,... 
                totalIter);
        end
   end
axis image
axis on
grid on
end

1 Ответ

4 голосов
/ 06 августа 2020

Когда я помещаю ваш код в MATLAB Online R2020a, я получаю ошибку. Я удалил первую строку, изменил опечатку в строке 5 с len1=3*1.2^tatalIter; на len1=3*1.2^totalIter; и добавил недостающую скобку в строке 8 с plot([0 0],[-len1,0],'LineWidth',w,'Color',[0 0 0] на plot([0 0],[-len1,0],'LineWidth',w,'Color',[0 0 0]), поэтому код выглядит так:

function FractalTree()
totalIter=9;
angle=pi/6;
len1=3*1.2^totalIter;
w=totalIter;
figure(1); clf
plot([0 0],[-len1,0],'LineWidth',w,'Color',[0 0 0])
hold on
drawBranches(pi/2,[0,0],totalIter-1, ...
    angle,totalIter);
    function drawBranches(initAngle,pt,Iter,... 
            angle, totalIter)
        len=1.2^Iter;
        x1=pt(1);
        y1=pt(2);
        ang1=initAngle+angle;
        ang2=initAngle-angle;
        x2=len*cos(ang1)+x1;
        y2=len*sin(ang1)+y1;
        x3=len*cos(ang2)+x1;
        y3=len*sin(ang2)+y1;
        w=Iter;
        c2=[1-Iter/totalIter 0 1-Iter/totalIter];
        p1=plot([x1,x2],[y1,y2],'LineWidth',w,'Color',c2);
        p2=plot([x1,x3],[y1,y3],'LineWidth',w,'Color',c2);
        pause(0.01)
        if Iter-1>0
            drawBranches(ang1,[x2,y2],Iter-1,angle,... 
                totalIter);
            drawBranches(ang2,[x3,y3],Iter-1,angle,... 
                totalIter);
        end
   end
axis image
axis on
grid on
end

И это дает мне следующее изображение

Симпатичная фигура фрактального дерева.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...