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

Problem mit hgtransform und makehgtform

 

jens.ru
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 19.11.13
Wohnort: Baunach
Version: R2022a
     Beitrag Verfasst am: 28.01.2020, 10:40     Titel: Problem mit hgtransform und makehgtform
  Antworten mit Zitat      
Eine hoffentlich letzte Frage zu meinem kleinen Projekt...Leider wird es vermutlich ein bisschen umständlich, das zu erklären...

Als Ausgangsmaterial habe ich eine Grafik, bestehend aus vertices und faces sowie Bewegungsdaten, genauer gesagt Rotationsdaten um eine x-,y- und z-Achse. Diese Vertices verschiebe ich durch eine selbtgeschriebene Funktion, sodass der Mittelpunkt meines Objektes im Koordinatenursprung liegt.

Prinzipiell sieht es derzeit etwa so aus:
Code:

vertices = center(vertices)
g= hgtransform(gca)
patch(vertices, faces)
while(true)
makehgtform(xrotate,yrotate,zrotate)
drawnow
end
 

(Danke an dieser Stelle noch einmal an Harald, ohne dessen Hilfe ich das so nie geschafft hätte).

Nun das eigentliche Problem:
Der User soll mittels drei Slidern das Objekt in x,y und z-Richtung verschieben können und somit den Nullpunkt verändern, um den die Vertices gedreht werden. Das bedeutet also, wenn ich beispielsweise einen Würfel habe, dessen Zentrum initial um die eigene Achse rotiert (wie etwa ein Dönerspies Wink ), soll durch die Slider so ausgelenkt werden, dass er danach (je nach Wert des Sliders) mit größerem Abstand zur Achse (wie der Mond um die Erde) rotiert. Ich hoffe, das war halbwegs Verständlich? Rolling Eyes

Vom Prinzip her scheint makehftform(translate [x,y,z] diesen Job erledigen zu können, allerdings gelingt mir die Kombination nicht so richtig. Ich habe schon verschiedene Varianten durchprobiert, jedoch leider bisher ohne Erfolg.
Eine (schematische)Abfolge von
Code:

g = hgtransform(gca)
patch(faces, vertices)
while(true)
t = makehgtform(translate[x.Value,y.Value,z.Value]),
r = makehgtform(xrotate,rotationX,yrotate,rotationY,zrotate,rotationZ)
set(g.Matrix, t*r)
drawnow
end
 

läuft zwar, allerdings wird das Objekt als Ganzes incl. Rotation an der jeweiligen Achse verschoben.

Ich habe auch schon probiert erst translate, dann drawnow, dann rotate und erneut drawnow, funktioniert nicht. Vor der makehgtform(xrotate...) habe ich versucht, meine vertices mit vertices = vertices - Verschiebung zu verschieben, dies erscheint aber gar nicht.
Ich werde nun ein bisschen weiter probieren, aber vielleicht hat jemand einen Ansatz, wie ich das lösen kann, mir fehlt gerade ein bisschen die Idee.
Private Nachricht senden Benutzer-Profile anzeigen


jens.ru
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 19.11.13
Wohnort: Baunach
Version: R2022a
     Beitrag Verfasst am: 28.01.2020, 11:30     Titel:
  Antworten mit Zitat      
Nach einiger Probier- und Spielerei habe ich nun mit

Code:

p.Vertices(:,1) = vertices(:,1)+shiftHeadX.Value;
 


scheinbar die Lösung gefunden. Smile
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.