Verfasst am: 08.03.2021, 12:04
Titel: Kreissegmente animieren für unterschiedliche Startpunkte
Hey ich will Kreissegmente für unterschiedliche Start- und Endpunkte im und gegen den Uhrzeigersinn animieren. Mit animieren meine ich, das ein keiner Punkt die Entstehung des Kreissegmentes von Start- bis Endpunkt zeichnet.
Start- und Endpunkt, sowie Abstand in x- und y-Richtung von Startpunkt zu Mittelpunkt sind gegeben.
Mein bisheriger Ansatz war es mit Fallunterscheidungen zu arbeiten. Ich teile den Kreis in 4 Segmente und unterscheide einerseits in welchem Kreissegment mein Anfangspunkt ist und in welchem Kreissegment mein Endpunkt liegt. D.h. insgesamt sind das 4 Fallunterscheidungen mit jeweils 4 weiteren Fallunterscheidungen.
Code:
i =....
j =....
p =.... % Startpunkt
x =.... % Endpunkt x
y =.... % Endpunkt y
M = [p(1) + i, p(2) + j]% Mittelpunkt
r = round(sqrt(i^2 + j^2),2)% Radius
%%%%% 1 Fall für Start in 1. Segment und Ziel im 1.Segment %%%%%%%%%%
if p(1) > M(1) && p(2) >= M(2) && x >= M(1) && y > M(2)
alpha1 = round(acos(abs(i)/r),2)
alpha2 = round(acos(abs(y - M(2))/r),2)
alpha = 90 - alpha1 - alpha2
t = linspace(alpha1,alpha)
x = r * cos(t) + M(1)
y = r * sin(t) + M(2) for m = 1:length(x)
plot2 = plot(app.UIAxes,x(m),y(m),'ro','LineWidth',1.5,'MarkerSize',5);
plot3 = plot(app.UIAxes,x(1:m),y(1:m),'r-','LineWidth',1.5,'MarkerSize',5);
drawnow if m ~= length(x) delete(plot2) delete(plot3) end if m == length(x) delete(plot2)
app.plot_array = [app.plot_array; plot3] end end end
Die Idee hinter dem Ansatz sollte funktionieren, aber ich frage mich ob es nicht noch einfacher geht. Oben seht ihr den Code für den 1. Fall gegen den Uhrzeigersinn. Ein Bild von der Idee habe ich auch angehängt.
Wenn ich den obigen Fall animiere treten paar Unstimmigkeiten auf von denen ich nicht weiß woher sie kommen.
Wenn ich die Winkel berechne, bekomme ich ein Ergebnis in degrees, obwohl acos() eigentlich ein Ergebnis in radians liefern sollte. Weiterhin funktioniert die Animation nicht gescheit. Für einen Winkel Alpha 90° und alpha1 = alpha2 = zeichnet es mir ganz viele eckige Kreise, die zusammen einen ganzen Kreis ergeben. Ein Screenshot davon habe ich euch auch beigefügt. In dem Beispiel ist p1(5,0) der Startpunkt, i = -5, j= 0 und der Zielpunkt p2(5,0).
Wenn ich alle Winkel extra in radians umrechne klappt es. Ob das ganze aber einfacher geht, interessiert mich trotzdem.
Lg
Tim
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.