본문 바로가기

소프트웨어/MATLAB

[MATLAB] rolling pitching을이용한 전투기 이륙

 

 

[MATLAB] rolling pitching을이용한 전투기 이륙

전투기소스는 학교에있어서 종이학알모형으로 대체..ㅋㅋ

 

암튼... 첫번째 for문은 직진롤링

두번째 for문은 상승하면서 피칭을써서 자연스럽게 깃수가 올라가게 만들었음.

 

x=[ 0 15 0 12 15 12 0;
    0 12 15 12 12 12 0;
    0 0 0 12 0 -12 0;
    1 1 1 1 1 1 1];


% i ==x축으로 이동거리
for i= 0: 1 :60
   
    th=i*720/60;
    movex=[ 1 0 0 i;
            0 1 0 0;
            0 0 1 0;
            0 0 0 1];
    rolling=[1 0        0       0;
             0 cosd(th) -sind(th) 0;
             0 sind(th)  cosd(th) 0;
             0 0        0       1];
       
    mvx=movex*x; %x축으로 이동시키는 movex matrix를 이용해서 mvx matrix를 만든다.
    rollx=rolling*mvx; %mvx에 rolling matrix를 곱해서 rollx matrix를 만든다.
       
    clf;       
    line([rollx(1,:) rollx(1,1)], [rollx(2,:) rollx(2,1)] , [rollx(3,:) rollx(3,1)]);
    %rollx(전진하면 회전하는)모습을 그래프에 그린다.
    VIEW([ 0  180 0])
    axis([ -150 150 -150 150 -150 150])

    pause(0.001)

end

%두번째 for문. 상승하며 자연스럽게 비행기 각도가 올라감
for i=0 : 3: 60
    %x축과 z축을 동시에 증가시킴-> 대각선으로 진행함
    movex=[ 1 0 0 i;
            0 1 0 0;
            0 0 1 0;
            0 0 0 1];
    movez=[ 1 0 0 0;
            0 1 0 0;
            0 0 1 i;
            0 0 0 1];
    %matrix설명 movex는 x축으로 이동시키는 matrix이고
    %movez는 z축으로 이동시키는 matrix이다.
    %이 두개의 matrix가 직전 행렬인 rollx에 곱해진다면
    %비행기는 대각선으로 올라갈것이다.
       
    th=i*30/60;   
    pitch=[cosd(th) 0 -sind(th) 0;
           0       1  0       0;
           sind(th) 0  cosd(th) 0;
           0       0  0       1];
    %movex movez만 쓴다면 비행기는 기수를 높이지 않은채로 대각선상승만 할것이다.
    %그래서 대각 상승하는동안 그에맞춰 피칭을 해주었다.
    %그래서 결과값인 pitchy는 기수를 높이며 대각선으로 자연스럽게 상승한다.

    mvx=movex*rollx;
    mvxz=movez*mvx;
    pitchy=pitch*mvxz;
   
   
    clf;
 
    line([pitchy(1,:) pitchy(1,1)], [pitchy(2,:) pitchy(2,1)] , [pitchy(3,:) pitchy(3,1)]);
    %line함수로 pitchy를 그래프에 그려줍니다.
       
    VIEW([ 0  180 0])
    axis([ -150 150 -50 50 -150 150])

    pause(0.001)
       
end