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

Patch drehen und auf neue Eckwerte zugreifen

 

sherlock

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2010, 11:51     Titel: Patch drehen und auf neue Eckwerte zugreifen
  Antworten mit Zitat      
Hallo,
ich bin dabei für ein Projekt ein Rechteck zu patchen und dieses soll mit einem Pushbutton um seinen Mittelpunkt zu drehen sein.
Die Eckpunkte werden über eine 2x4-Matrix (x- sowie y-Werte) übergeben.

Das erste patchen klappt auch, die erste Drehung ebenfalls, aber danach soll die Funktion 'drehung_test' auf die neuen Eckpunkte zugreifen, und nicht auf die Alten bzw. auf Daten, von denen ich nicht so recht weiß, welche es sind.

Die erste Funktion, die das Figure und den Pushbutton erzeugt, lautet folgendermaßen:


Code:
%Balken_figure
function balken(Balken)

global Balkenx Balkeny
axis equal

Balkenx=[Balken(1,:)];  
Balkeny=[Balken(2,:)];

patch(Balkenx, Balkeny, 'b');
buttonHandle = uicontrol('Style','pushbutton','String',...
'Textschalter','Position',[(250/2)-100 150 100 50],...
'Tag','Button','Callback','drehung_test');

end


Der Callback des buttons greift auf die folgende Funktion zu:

Code:
%Drehungs_funktion
function drehung_test
 
  global Balken Balkenx Balkeny
 
  %Werte für Eckpunkte in Abhaengigkeit vom Mittelpunkt des Rechtecks
        ax1=[(Balkenx(1,2)-Balkenx(1,1))/(-2)];
        ax2=[(Balkenx(1,2)-Balkenx(1,1))/(2)];
        ax3=[(Balkenx(1,2)-Balkenx(1,1))/(2)];
        ax4=[(Balkenx(1,2)-Balkenx(1,1))/(-2)];
        ay1=[(Balkeny(1,4)-Balkeny(1,1))/(-2)];
        ay2=[(Balkeny(1,4)-Balkeny(1,1))/(-2)];
        ay3=[(Balkeny(1,4)-Balkeny(1,1))/(2)];
        ay4=[(Balkeny(1,4)-Balkeny(1,1))/(2)];
        mx=[Balkenx(1,1)+ax2];
        my=[Balkeny(1,1)+ay3];
        m=[mx; my];         %Neuer Mittelpunkt
   
    a1=[ax1;ay1];
    a2=[ax2;ay2];
    a3=[ax3;ay3];
    a4=[ax4;ay4];
   
    %Drehung der Eckpunkte
    c1=[cos(pi/16) -sin(pi/16); sin(pi/16) cos(pi/16)]*[a1];
    c2=[cos(pi/16) -sin(pi/16); sin(pi/16) cos(pi/16)]*[a2];
    c3=[cos(pi/16) -sin(pi/16); sin(pi/16) cos(pi/16)]*[a3];
    c4=[cos(pi/16) -sin(pi/16); sin(pi/16) cos(pi/16)]*[a4];
   
    %Neue Eckpunkte in relation zum ursprünglichen Ursprung
    c1=m+c1;
    c2=m+c2;
    c3=m+c3;
    c4=m+c4;

    cx=[c1(1,1),c2(1,1), c3(1,1), c4(1,1)];
    cy=[c1(2,1),c2(2,1), c3(2,1), c4(2,1)];
    patch(cx,cy,'r');
   
%Hier sollen jetzt die ursprünglichen Werte von Balkenx/y überschrieben werden mit den neuen Eckpunkten, die die Drehung bei erneutem Aufruf nutzen soll, dies geschieht aber nicht.
    Balkenx=cx;
    Balkeny=cy;
       
  end



Stattdessen passiert das, was ich als jpg angehängt habe.

Woran liegt es, bzw. was muss ich ändern?
Wäre um jeden Ratschlag dankbar..

Grüße
Sherlock

Drehung.JPG
 Beschreibung:
Screenshot nach mehrmaligem betätigen des Drehbuttons

Download
 Dateiname:  Drehung.JPG
 Dateigröße:  112.76 KB
 Heruntergeladen:  514 mal


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2010, 15:59     Titel:
  Antworten mit Zitat      
okay hat sich erledigt Wink
 
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 - 2025 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.