AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Koordinatensystem addieren.

Ein Thema von juniorA · begonnen am 21. Mär 2020 · letzter Beitrag vom 29. Mär 2020
Antwort Antwort
Seite 2 von 2     12
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
526 Beiträge
 
Delphi XE5 Professional
 
#11

AW: Koordinatensystem addieren.

  Alt 23. Mär 2020, 12:39
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.
Angehängte Dateien
Dateityp: zip Koordinaten-Transformation -1.zip (562,2 KB, 7x aufgerufen)
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher.
John C. Cornelius

Geändert von Andreas13 (23. Mär 2020 um 12:42 Uhr)
  Mit Zitat antworten Zitat
ZYLAGON

Registriert seit: 11. Nov 2015
48 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Koordinatensystem addieren.

  Alt 24. Mär 2020, 17:34
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#13

AW: Koordinatensystem addieren.

  Alt 29. Mär 2020, 17:40
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf