| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. | | |  | KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
|
Autor
|
Thema: Transformationsmatrix in kartesische Koordinaten umwandeln (4457 mal gelesen)
|
MaierKurt Mitglied
 Beiträge: 2 Registriert: 24.02.2010
|
erstellt am: 24. Feb. 2010 11:19 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ich bin mir zwar bewusst, dass über dieses Thema schon viel geschrieben wurde, jedoch komme ich jetzt einfach nicht mehr weiter. Zu meinem Problem: Ich möchte verschiedene Parts und Products (die in Catia Konstruiert wurden) in einem Planungstool einlesen. Genau hier ist mein Problem. Von Catia-Seite bekomme ich nur eine Transformationsmatrix, jedoch kann das Planungstool nur mit den Angaben X, Y, Z, Rx, Ry, und Rz umgehen. X, Y und Z bekomme ich auch schon abgelesen aber bei der Rotation habe ich noch Probleme. Was ich schon habe: Rx=-arctan2(c33;-c32) Ry=c13 Rz=arctan2(c11;-c12) Bei einem Versuch hat das schon funktioniert, jedoch habe ich gelesen, dass ich bei Werten über 90° und unter -90° Probleme bekomme. Bei Rx und Rz habe ich diese hoffentlich durch das benutzen von arctan2 schon umgangen, jedoch weiß ich nicht wie ich mit Ry umgehen soll. Aktuell habe ich die Berechnungen einfach von Hand in Excel eingegeben, jedoch möchte ich das ganze über VB6 realisieren. Über Tipps von euch wäre ich sehr Dankbar. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
 
 Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 24. Feb. 2010 19:32 <-- editieren / zitieren --> Unities abgeben:          Nur für MaierKurt
Hallo MaierKurt, ich habe aus einen anderen Grund geforscht und bin dabei auf folgende Bibliothek gestoßen: Transformations in Phython Was du von diesen brauchst ist: Zitat: A triple of Euler angles can be applied/interpreted in 24 ways, which can be specified using a 4 character string or encoded 4-tuple: *Axes 4-string*: e.g. 'sxyz' or 'ryxy' - first character : rotations are applied to 's'tatic or 'r'otating frame - remaining characters : successive rotation axis 'x', 'y', or 'z'
Ich weiß, es ist Phython, mit etwas rumspielen bin ich aber auf die Lösung meines Problems gekommen (ich wolle auf eine beliebige Ebene spiegeln und habe dessen Transformationsmatrix benutzt). Ich selber habe auch keine Phyton Erfahrung, habe es aber kurz installiert und die Befehle einzeln eingegeben und die Operationen geprüft. So konnte ich dann formal mein Matrix zusammenstellen. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaierKurt Mitglied
 Beiträge: 2 Registriert: 24.02.2010
|
erstellt am: 25. Feb. 2010 09:42 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zoltan Danke für deine Hilfe. Probieren hilft mir nicht weiter, da ich noch nicht weiß welche Matrizen ich in Zukunft bekommen werde. Ich habe 2 Matritzen als Beispiel, bei denen meine Formeln soweit Funktionieren. Meine Angst ist jetzt aber, dass es später Fälle geben kann in denen der Winkel größer wird und dann ein Fehler auftritt. Beispiel: Das lese ich ein: <Transform id="37_id175">0.985644 0.0914152 -0.141947 0 -0.0965254 0.994892 -0.0295277 0 0.138523 0.0428054 0.989434 0 1.477 -0.741 0.443005 1</Transform> Und das soll rauskommen(stimmt auch bisher): X:1477 Y:-741 Z:443,005 Rx:-1,70937183 Ry:7,936783265 Rz:5,593215124 X, Y, und Z werden von den letzten 4 Zahlen in <Transform> beschrieben, und die Rotationen(die ich schon von Rad in Winkel umgewandelt habe) müssen aus den Kombinationen der anderen Zahlen berechnet werden. Für mich wäre jetzt wichtig: -Gibt es eine Sichere Methode die Winkel zu bestimmen? -Lässt sich die Berechnung durch VB6 ausführen? -Wie verarbeitet Catia die Matrizen? -Gibt es in Catia verschiedene Arten von Transformationsmatrizen oder ist die oben gezeigte immer Standart? Für jeden Tipp von euch wäre ich sehr dankbar.
Hat da evtl. schonmal jemand etwas Programmiert? Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
 
 Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 25. Feb. 2010 11:20 <-- editieren / zitieren --> Unities abgeben:          Nur für MaierKurt
CATIA benutzt IMHO  immer das gleiche Matrizenformat. In Delmia wird hingegen mit Euler-Winkeln (YPR) gerechnet. Berechnen lässt sich das natürlich auch per VB. In dem Code-Beispiel von Zoltan ist eigentlich alles drin was du brauchst. Schau dir mal dort die Funktion 'def euler_from_matrix(matrix, axes='sxyz')' an, dass sollte dir helfen. Grüsse Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
 
 Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 25. Feb. 2010 16:51 <-- editieren / zitieren --> Unities abgeben:          Nur für MaierKurt
Hallo MaierKurt, du musst nicht herumspielen, wenn du die Definition des anderen Programmes hast, also: -static (habe bisher nicht gesehen) or rotating frame (RobCAD macht es so, dass zuerst gedreht wird, dann wird die gedrehte Achsensytem weitergedreht) -in welche Reihenfolge die Achsen gedreht werden (bei RobCAD ist es x, neue y, neue z) wie der Kode sagt, gibt es davon 24 mögliche Kombinationen, du wirst aber genau einen benötigen. Wenn du die Informationen hast, dann müsste der Code im Link schon ziemlich eindeutig sein. -Gibt es eine Sichere Methode die Winkel zu bestimmen? -> Ja, die Methode in der Kode im Link scheint für mich plausibel -Lässt sich die Berechnung durch VB6 ausführen? -> Selbstverständlich. Vielleicht findest du auch für VB Beispiel ("rotation matrix to euler angles" als Suchwort) -Wie verarbeitet Catia die Matrizen? / -Gibt es in Catia verschiedene Arten von Transformationsmatrizen oder ist die oben gezeigte immer Standart? Suche mal in V5Automation.chm nach "position", da wirst du fündig. Transformationsmatrix ist immer eindeutig (es sind eigentlich die x, y, und z Achsen im aktuellen Achsensystem beschrieben, bzw. die Verschiebung). Lass dich nicht verwirren, CATIA gibt von sich aus nur 12 Zahlen zurück. In der Programmierung (und Mathematik) wird aber oft ein 4x4 Matrix verwendet, um einfacher damit rechnen zu können. Dann ist die letzte Zeile=0, 0, 0, 1. Code habe ich nur für die Rechnung in die andere Richtung (von RobCAD ins CATIA) in VB. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |