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

Zwei 3d-Plots mit exakt der selben Perspektive

 

Fabse
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 17.07.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 17.07.2015, 19:01     Titel: Zwei 3d-Plots mit exakt der selben Perspektive
  Antworten mit Zitat      
Hallo,

folgende Schwierigkeit: Ich möchte zwei surf-Plots unter exakt dem selben Winkel und der selben Kamera Position anzeigen.
Den ersten Plot dreh ich mir in der Matlab GUI zurecht. Nun möchte ich, dass zum Vergleichen der zweite Plot (in einem zweiten Figure) in exakt der selben Perspektive angezeigt wird.

Mein Ansatz war "view" zu verwenden. Das funktioniert so aber nicht, das Problem dabei ist, dass "view" eine 4x4 Matrix ausgibt sich mit "view" aber keine 4x4 Matrix setzen lässt.

Rufe ich stattdessen "view" gemäß der Dokumentation auf:
Code:
[az,el] = view;
view(az,el)
 


wird die Perspektive des zweiten Plots ähnlich der des ersten gesetzt, aber offenbar nicht alle Parameter (die 4x4 Matrizen haben nach dem Aufruf von "view(az,el)" viele Einträge gleich aber nicht alle).

Wie lassen sich also zwei Surf Grafiken unter exakt derselben Ansicht erzeugen?
Danke für die Hilfe
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.07.2015, 20:31     Titel:
  Antworten mit Zitat      
Hallo,

die Eigenschaft 'CameraPosition' beim ersten Plot abfragen und beim zweiten Plot entsprechend setzen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Fabse
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 17.07.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 17.07.2015, 22:27     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die Antwort. Leider bin ich mit Deinem Lösungsvorschlag nicht weiter gekommen. Ich habe folgendes ausporbiert
Code:
tmp = get(gca,'CameraPosition');
>> set(gca,'CameraPosition',tmp)

und damit identisch
Code:


Die Perspektive wird zwar verändert aber ist für beide surf-Plots unteschiedlich. Im Gegenteil, nach Setzen der campos Eigenschaft hat die 4x4 "view"-Matrix fast keine Gemeinsamkeiten mehr...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.07.2015, 22:33     Titel:
  Antworten mit Zitat      
Hallo,

falls du zwischen dem get und set - Befehl nicht zwischen den Koordinatensystemen hin- und herklickst, dürfte sich da gar nichts tun, denn gca bleibt ja das gleiche.

Code:
figure
ax1 = axes;
surf(membrane)

figure
ax2 = axes;
surf(membrane)


Jetzt in Figure 1 rotieren.

Code:
p = get(ax1, 'Cameraposition');
set(ax2, 'Cameraposition', p);


Figure 2 übernimmt die Rotation.

Wenn du ein Beispiel hast, in dem das nicht klappt, dann bitte das konkrete (reproduzierbare!) Beispiel.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Fabse
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 17.07.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 17.07.2015, 23:38     Titel:
  Antworten mit Zitat      
Hallo nochmal Harald, vielen Dank für die Hilfe jetzt habe ichs mit deinem CameraPosition- Code hinbekommen.

Das Problem war bei meinen Plots, dass sie eine unterschiedliche 'dataaspectratio' hatten. Dazu kam, dass der Zoomfaktor offenbar nicht mit der CameraPosition gesetzt wird.

Ich habe es jetzt so gemacht und so klappts:
Code:

ar=get(gca,'dataaspectratio');
cp=get(gca,'CameraPosition');
ca=get(gca,'CameraViewAngle');


Achsen wechseln und:
Code:

set(gca,'dataaspectratio',ar);
set(gca,'CameraPosition',cp);
set(gca,'CameraViewAngle',ca);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.07.2015, 07:43     Titel:
  Antworten mit Zitat      
Hallo,

mit linkprop könntest du sogar erreichen, dass sich beide synchron ändern.

Grüße,
Harald
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 - 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.