Hallo Mjk,
wenn Du nur verschieben möchtest, müsste es auch eine Funktion GetCoordniates() geben oder eben jede Achse einzeln über GetXAxis() etc. holen. Dabei kannste Dir auch auch über GetOrign() den Ursprungspunkt holen, also alle 3 Koordinaten in einem Array.
Diesen Ursprung holste Dir von Deinem zu verschiebenden System. dann holste Dir die Achse des Referenzsystems, wozu Du verschieben möchtest.
Nun multiplizierst Du die Koordinaten der Achse (Referenz) um den Wert, den Du verschieben möchtest und addierst ihn auf die Ursprungskoordinaten Deines Achsensystems und schiebst diese Werte über SetOrgin() zurück.
Hier noch einmal anschaulich:
* axisSysRef.GetYAxis() = dRefX, dRefY, dRefZ
* axisSysChange.GetOrgin() = dChangeX, dChangeY, dChangeZ
* Wert zum Verschieben auf der Y-Achse = dValue
* dChanceX = dChangeX + dRefX * dValue
* dChanceY = dChangeY + dRefY * dValue
* dChanceZ = dChangeZ + dRefZ * dValue
* axisSysChange.SetOrgin({dChangeX, dChangeY, dChangeZ})
Nur aus der Hüfte geschossen, hat sicher noch Potenzial oder ist gar falsch, gefällt mir aber erst einmal.
Ich selbst habe mir ne kleine Mathematikbibliothek gebastelt für die ganzen Grundfunktionen, das macht gerade bei sowas auf Dauer Sinn. Ich glaub aber, dass es im CATIA oder Windows auch ne API gibt, die das für einen amchen lönnte, kenne sie nur noch nicht.
Edit: Tipp von mir: Kapsel das in ner eigenen Funktion mit gut definierten übergabewerten, dann kannste die FUnktion einfach für jede Achse aufrufen und schon haste Deine Translationsfunktion. Rotation wird dann noch etwas komplexer, zumal Du da in VB schnell Rundungsfehler reinbekommst. :-(
------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila
Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen
Xing
[Diese Nachricht wurde von HoBLila am 17. Jun. 2013 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP