WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Kreissegmente animieren für unterschiedliche Startpunkte

 

timlie
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2021, 12:04     Titel: Kreissegmente animieren für unterschiedliche Startpunkte
  Antworten mit Zitat      
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).

Ich freue mich über eure Rückmeldungen

Lg
Tim

Idee.pdf
 Beschreibung:

Download
 Dateiname:  Idee.pdf
 Dateigröße:  71.91 KB
 Heruntergeladen:  165 mal
Animation.PNG
 Beschreibung:

Download
 Dateiname:  Animation.PNG
 Dateigröße:  22.18 KB
 Heruntergeladen:  158 mal
Private Nachricht senden Benutzer-Profile anzeigen


timlie
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2021, 12:28     Titel:
  Antworten mit Zitat      
Wenn ich alle Winkel extra in radians umrechne klappt es. Ob das ganze aber einfacher geht, interessiert mich trotzdem.

Lg
Tim
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.