Verfasst am: 15.01.2018, 20:20
Titel: Flugzeuggame mit Positionsanzeige
Das ist mein Programm zu einem rotierendem Flugzeug mittels KeyPress
Kann mir evtl jmd Helfen wie ich die drei ständig verändernden Daten derPositions pos als eine Art Legende oben Rechts mit Plotten kann.
%% Keyboard callbacks and flags to move the plane. set(fig,'KeyPressFcn',@KeyPress,'KeyReleaseFcn', @KeyRelease);
fig.UserData.e = false;
fig.UserData.q = false;
fig.UserData.a = false;
fig.UserData.d = false;
fig.UserData.w = false;
fig.UserData.s = false;
forwardVec = [100]'; %Vector für die x-Richtung des Flugzeugs
rot = eye(3,3); %Rotationsmatrix des Flugzeugs
pos = [-8000,8000,-2000]; %Flugzeugposition
vel = 3000; %Geschwindigkeit
hold off
axis([-1000010000-1000010000-1000010000])
%Flugzeugrotation durch Userinput steuern
if fig.UserData.d
rot = rot*rotatePlane(-0.025,0,0);
end if fig.UserData.a
rot = rot*rotatePlane(0.025,0,0);
end if fig.UserData.s
rot = rot*rotatePlane(0,-0.025,0);
end if fig.UserData.w
rot = rot*rotatePlane(0,0.025,0);
end if fig.UserData.q
rot = rot*rotatePlane(0,0,0.025);
end if fig.UserData.e
rot = rot*rotatePlane(0,0,-0.025);
end
%Kinematische Kette für die Positionsberechnung, abhängig von zeit,
%geschwindigkeit und userinput
pos = vel*(rot*forwardVec*(tnew-told))' + pos;
%If the plane wants to go under the ground, then bring it back up to the ground
nearestGroundZ = interp2(groundSurf.XData,groundSurf.YData,groundSurf.ZData,pos(1),pos(2));
if pos(3)<nearestGroundZ
pos(3) = nearestGroundZ;
end
%Eckpunkte des Flugzeuges durch die neue Position neu berechnen
p1.Vertices = (rot*vert')' + repmat(pos,[size(vert,1),1]);
%Kameraupdates:
camupvec = rot*[001]';
camup(camupvec);
campos(pos' - 1000*rot*[10-0.25]'); %Kameraposition (hinter dem Flugzeug) camtarget(pos' + rot*[100]'); %Fokus der Kamera auf das Flugzeug
aberr das Programm wird sooo langsam, da ich vermute das in jedem while durchgang eine neue Legende erstellt wird.
Ich möchte jedoch nur den Inhalt abändern.
An sich würde meine Möglichkeit aber Funktionieren.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.