clear;clf;cla reset;                                 % 초기화
X=[0 1 1 0];                                          % 개미 각각의 초기 X 좌표
Y=[0 0 1 1];                                          % Y 좌표
Z=[0 1 0 1];                                          % Z 좌표
r=[X;Y;Z];                                            % 개미들의 위치
v=0.01;                                                 % 속도
track=r;                                                % 개미의 위치 변화
tmax=400;                                            % 최대 시간
color=char('or','hb','+','d');                   % 표시 형식

hold on
for t=2:tmax
    direction=r(:,[2 3 4 1])-r(:,[1 2 3 4]);   % 방향 벡터
    udir=direction/norm(direction(:,1));     % 단위 벡터
    r=r+v*udir;                                        % 위치 계산
    if norm(r(:,1)-[0.5;0.5;0.5]) < 0.01       % 중앙 위치에 가까워지면 종료.
        break;
    end
    track(:,:,t)=r;                                     % 좌표를 track에 저장
end

for m=1:4                                              %SQUEEZE Remove singleton dimensions
    x(:,m)=squeeze(track(1,m,:));y(:,m)=squeeze(track(2,m,:));z(:,m)=squeeze(track(3,m,:));
end

plot3(x,y,z)                                           % 입체로 그래프 그림

for m=1:4                                               % 개미를 좌표에 표시
    p(m)=plot3(x(1,m),y(1,m),z(1,m),color(m));
end

view(3)                                                 % 입체로 보기
grid on;                                                 % 눈금선 표시

for t=1:length(x(:,1))                                % 개미의 이동을 애니메이션 처럼 표시
    for m=1:4
        set(p(m),'XData',x(t,m),'YData',y(t,m),'ZData',z(t,m))
    end
    drawnow
end
hold off 
사용자 삽입 이미지
크리에이티브 커먼즈 라이센스
Creative Commons License

"Matlab" 카테고리의 다른 글

Posted by downright

2008/07/01 23:07 2008/07/01 23:07

Leave a comment
[로그인][오픈아이디란?]

% 앞의 개미의 방향을 따라 일정한 속력으로 이동하는 개미의 궤적

X=[0 0 1 1];                                 % X 좌표
Y=[0 1 1 0];                                 % Y 좌표
r=[X;Y];
v=0.0005;                                    % 개미의 이동 속도
track=r;                                     % 초기 위치 좌표
tmax=10000;                                  % 최종 시간
color=char('or','hb','+','d');               % 4마리 개미 표시 설정

for t=2:tmax
    direction=r(:,[2 3 4 1])-r(:,[1 2 3 4]); % 앞의 개미에서 자신의 위치를 계산한 방향
    udir=direction/norm(direction(:,1));     % 방향 단위 벡터
    r=r+v*udir;                              % 속도에 방향을 곱하여 위치 계산
    if norm(r(:,1)-[0.5;0.5]) < 0.01         % 개미가 중앙에 오면 break 명령
        break;
    end
    track(:,:,t)=r;                          % 개미 4마리의 위치를 track에 저장
end

t=1;                                         % 값 초기화
x=[];y=[];
for m=1:4                                    % 각 개미의 x,y 좌표를 track으로 부터 계산
    x(:,m)=squeeze(track(1,m,:));
    y(:,m)=squeeze(track(2,m,:));
end

clf                                          % 기존 이미지를 지우고 재설정
cla reset;
hold on                                      % 이미지 유지 on
plot(x,y)                                    % 개미의 궤적을 그림
for m=1:4                                    % 개미 4마리를 초기 위치에 표시
    p(m)=plot(x(1,m),y(1,m),color(m),'EraseMode','xor');
end

for t=1:length(x(:,1))                       % 시간의 변화에 따라 set을 이용하여 개미 위치 변화
    for m=1:4
        set(p(m),'XData',x(t,m),'YData',y(t,m))
    end
    drawnow
end

axis([0 1 0 1])                              % x, y 축 설정
hold off

사용자 삽입 이미지

크리에이티브 커먼즈 라이센스
Creative Commons License

"Matlab" 카테고리의 다른 글

Posted by downright

2008/01/31 22:26 2008/01/31 22:26

Leave a comment
[로그인][오픈아이디란?]