Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Koordinatensystem addieren. (https://www.delphipraxis.net/203766-koordinatensystem-addieren.html)

Andreas13 23. Mär 2020 13:39

AW: Koordinatensystem addieren.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo juniorA,
wie ich es bereits unter #5 dargestellt habe, mußt Du ein Koordinatensystem als absolutes Koordinatensystem festlegen und alle anderen Punkte durch Vektor-Addition bzw. Vektor-Subtraktion in die absoluten Koordinaten umrechnen. Wenn Du wissen willst, wie das geht, benutze meine Procedure Get_Punkt_Neu(..), wenn Du es lediglich erledigen willst, ohne groß zu wissen wieso und warum, dann kannst Du die Unit von Frühlingsrolle unter #6 benutzen.
Ich habe für Dich die beilegende Excel-Tabelle erstellt, damit Du Dich dabei nicht „verläufst“. Dort kannst Du alles schrittweise nachvollziehen, damit Du Deine Berechnung in Delphi umsetzen und kontrollieren kannst.
Gruß, Andreas
PS:
Du könntest den Titel Deines Topics z.B. in Koordinaten-Transformation in 3D umbenennen, damit wir alle beruhigt werden.

ZYLAGON 24. Mär 2020 18:34

AW: Koordinatensystem addieren.
 
Vielleicht kommst Du beim Umrechnen von Lokal- in Globalkoordinaten mit der Funktion "LocalToAbsoluteVector" weiter.
Die Punkte in Deiner Skizze könnten ja kleine 3D-Sphären sein.
Dann kann man auf "LocalToAbsoluteVector" zugreifen.


Nur ein kleines Beispiel, was mit der Aufgabenstellung zwar nichts zu tun hat, aber den Einsatz von "LocalToAbsoluteVector" zeigt (da hatte ich mal eine 3D-Figur abgebremst):
Delphi-Quellcode:
      //Pfeiltaste oben nicht gedrückt
      if GetAsyncKeystate(VK_UP)=0 then
        begin
          Zielpunkt.Position.Z:=Zielpunkt.Position.Z * 0.95;
          if Zielpunkt.Position.Z<0.01 then Zielpunkt.Position.Z:=0.01;
          fZielpunktVektor:=Zielpunkt.LocalToAbsoluteVector(Zielpunkt.Position.Vector);
          Figur.Position.Vector:= fZielpunktVektor;
        end;

VG ZYL

jfheins 29. Mär 2020 18:40

AW: Koordinatensystem addieren.
 
Zitat:

Zitat von juniorA (Beitrag 1460270)
Danke für die Hilfe aber leider noch nicht am Ziel.
Ich habe mal das Problem versucht in einer Skizze dargestellt.
Ich habe einen Körper der ein eigenes Koordinatensystem besitzt. Das Koordinatensystem des Körpers wird durch den Punkt U1 und 2 Vektoren V11 und V12 beschrieben. Die Werte von U1, V11, V12 sind bekannt und beziehen sich auf den Ursprung des Gesamtsystems. In diesen Körper befindet sich einen Öffnung. Die Öffnung wird durch ein eigenen Koordinatensystem beschrieben. Dieses setzt sich aus den Punkt U2 und 2 Vektoren V21, V22 zusammen. Die Werte von U2, V21 und V22 sind ebenfalls bekannt und beziehen sich auf das Koordinatensystem vom Körper. Was ich suche ist Summe der beiden Koordinatensystem mit U3, V31 und V32.
Benötige tue ich dieses resultierendes Koordinatensystem um im Anschluss, die Lage von P1 P1 bis Pn, bezogen auf das Gesamtsystem errechnen kann. Von P1 bis Pn ist mit XYZ bekannt aber leider nur bezogen auf das Koordinatensystem der Öffnung.

Auf die Gefahr hin, dass das Problem schon gelöst ist: Wenn du einen Punkt P hast in einem Koordinatensystem K2, das durch die Vektoren X2, Y2, Z2 aufgespannt ist (letztere in einem beliebigen Koordinatensystem ausgedrückt), dann heißt das letztlich nichts anderes, als dass dein Punkt P (denken wir uns (3, 4, 5) ) genau diese vielfachen der Einheitsvektoren hat. Die Richtig von dem inneren in das äußere KoSys ist die einfache ;-)

Also Beispiel:
P = (3, 4, 5) im System "U2"
Vektor V21 = (1, 1, 0)
Vektor V22 = (-1, 1, 0)
Vektor V23 = (0, 0, 1.4)
Ursprung U2 = (10, 10, 10)

Das System ist also gedreht und skaliert.
Dann gilt:
P_orig = (10, 10, 10) + 3*(1, 1, 0) + 4*(-1, 1, 0) + 5*(0, 0, 1.4)
Also im "großen" KoSys sind die Koordinaten gleich dem Produkt aus den inneren Koordinaten mit der Matrix der Vektoren plus dem Ursprung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz