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 1 von 2  1 2   
juniorA

Registriert seit: 14. Sep 2011
106 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Koordinatensystem addieren.

  Alt 21. Mär 2020, 10:07
Suche eine Funktion, mit der man Koordinatensysteme addieren kann. Das Koordinatensystem ist jeweils durch einen Punkt(x, y, z) und zwei V1(x, x, z) und V2(x , y, z). Die Vektoren stehen immer rechtwinklig zueinander.
Kann mich noch schwach daran erinnern, dass da etwas mit Matrizen ging. Stehe da aktuelle etwas auf dem Schlauch.
  Mit Zitat antworten Zitat
Andreas13

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

AW: Koordinatensystem addieren.

  Alt 21. Mär 2020, 10:53
Hallo juniorA,
im rechtwinkligen Koordinatensystem muß Du einfach die jeweiligen Koordinaten vorzeichengerecht summieren.
Also beim addieren Deiner drei Punkte P1(x1, y1, z1), V1(x2, x2, z2) und V2(x3 , y3, z3) erhältst Du den neuen Punkt N so:

N(x1+x2+x3, y1+y2+y3, z1+z2+z3)
Gruß, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher.
John C. Cornelius

Geändert von Andreas13 (21. Mär 2020 um 10:56 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.910 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Koordinatensystem addieren.

  Alt 21. Mär 2020, 11:02
Ein Vektor oder ein Punkt liegt in einem Bezugssystem. Wie willst du Koordinatensysteme addieren? Ich glaube du meinst die Definition eines 2D-Koordinatensystems, das sich durch einen Punkt und zwei Vektoren definieren lässt.


PS: Wenn du im Delphi mit Vektoren rechnen willst gibt es das schon fertig in der Unit System.Math.Vectors :

Delphi-Quellcode:
uses System.Math.Vectors;

var
  a, b, c: TVector;
begin
  a := TVector.Create(12.0, 3.5);
  b := TVector.Create(1.0, 1.0);

  c := a + b;
end.
  Mit Zitat antworten Zitat
juniorA

Registriert seit: 14. Sep 2011
106 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Koordinatensystem addieren.

  Alt 21. Mär 2020, 14:31
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.
Miniaturansicht angehängter Grafiken
koordinatensystem-addieren-.jpg  
  Mit Zitat antworten Zitat
Andreas13

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

AW: Koordinatensystem addieren.

  Alt 21. Mär 2020, 19:46
Ich fasse Deine Aufgabenstellung mal mit meinen Worten zusammen:
Das eigene Koordinatensystem des Körpers K2 soll in das Koordinatensystem des Körpers K1 umgerechnet werden, damit alle Operationen in einem einheitlichen Koordinatensystem erfolgen können.
Das nennt man Koordinaten-Transformation. Laut Deiner Zeichnung handelt es sich lediglich um eine einfache Parallelverschiebung des Koordinatensystems (Translation) ohne Drehung.

Das läßt sich erst dann realisieren, wenn der Abstand zwischen den beiden Koordinatenursprüngen U1 und U2 bekannt ist. Hierbei mußt Du auch auf das Vorzeichen der Koordinaten achten! Für die Umrechnung gilt: verschoben wird immer das Koordinatensystem, NICHT das Objekt. Die zu transformierenden x-, y- und z - Koordinaten von Körper 2 lassen sich z.B. mit folgender Routine umrechnen:

Delphi-Quellcode:
Procedure Get_Punkt_Neu(CONST x, y, z,
                        Ursprung_Neu_Delta_X,
                        Ursprung_Neu_Delta_Y,
                        Ursprung_Neu_Delta_Z: Extended;
               VAR X_trans, Y_trans, Z_trans: Extended);
// Parallelverschiebung eines kartesischen Koordinatensystems
// _trans = Translation

Begin
  // verschoben wird immer das Koordinatensystem, NICHT das Objekt!!
  X_trans:= x - Ursprung_Neu_Delta_X;
  Y_trans:= y - Ursprung_Neu_Delta_Y;
  Z_trans:= z - Ursprung_Neu_Delta_Z;
End;
Viel Erfolg!
Gruß, Andreas
PS: Das ist nichts anderes als eine Vektor-Subtraktion.
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher.
John C. Cornelius

Geändert von Andreas13 (21. Mär 2020 um 19:58 Uhr)
  Mit Zitat antworten Zitat
Alt 22. Mär 2020, 12:29     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Andreas13

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

AW: Koordinatensystem addieren.

  Alt 22. Mär 2020, 19:47
@Frühlingsrolle.
Nur ein kleiner Hinweis zu Deinen Routinen: Man darf eine Fließkommazahl wie Double, Extended nie auf Gleichheit prüfen, weil dies wider Erwartung (fast) nie zutrifft:
Delphi-Quellcode:
function TVec3.IsPerpendicular: Boolean;
...
   bRes := Scalar(FX, FY, FZ) = 0.0; // Falsch!
...
Der Grund dafür sind einerseits arithmetische Rundungsfehler in vorangegangenen Berechnungen. Darüber hinaus ist es generell nicht möglich, unendlich viele reelle Zahlen mit einer endlichen Anzahl von Bits (Double: 64 Bits; Extended: 80 Bits) darzustellen. Allein bei der binären Codierung der Dezimalzahlen entstehen daher unvermeidbare Rundungsfehler.
Man sollte daher stets einen unscharfen Fließkomma-Vergleich machen. Man kann dazu z. B. die vorhandene Math-Funktion
  Math.SameValue(Ist, Soll, Abs_Toleranz) verwenden.
Delphi-Quellcode:
CONST
  Gleich_Toleranz = 1E-15; // für Double

function TVec3.IsPerpendicular: Boolean;
...
   bRes := SameValue(Scalar(FX, FY, FZ), 0.0, Gleich_Toleranz);
...
Empfehlenswert wäre auch die durchgängige Benutzung des Typs Extended anstelle von Double. Ich persönlich benutze für meine – zugegeben recht umfangreichen Berechnungen – oft die Multipräzisions-Arithmetik-Bibliothek von Wolfgang Ehrhardt mit 100 ... 200 Stellen (320 … 640 Bits), wo ich nach erfolgten Berechnungen die Rechenergebnisse zu Extended konvertiere.
Gruß, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher.
John C. Cornelius
  Mit Zitat antworten Zitat
Alt 22. Mär 2020, 20:52     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.673 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Koordinatensystem addieren.

  Alt 22. Mär 2020, 22:27
Wieso sollte es schneller werden?

Gerechnet wird in der CPU mit 80 Bit (Intel/AMD), egal ob der Wert als 32 oder 64 Bit gespeichert wurde.



Einzig mit Streamingfunktionen kann es schneller werden.
SSE, MMX, SIMD, usw., wo parallel mehrere Werte gleichzeitig berechnet werden.

Oder gar sowas wie CUDA, wo man Berechnungen mit sehr vielen schnellen spezielen Prozessoren direkt in Grafikkarten berechnet werden können.


Aus diesem Grund werden auch Verschlüsselungsalgorithmen und Videokodierer/-dekodierer direkt in der CPU oder als Zusatzchip bereitgestellt werden, da die dann via Hardware schneller/optimaler/sicherer arbeiten können, als jede Softwarelösung.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (22. Mär 2020 um 22:34 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
913 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Koordinatensystem addieren.

  Alt 22. Mär 2020, 22:35
Koordinatensysteme addieren
Als Mathematiker stehen mir die Haare zu Berge.
Man kann Vektoren addieren. Koordinatensysteme sind eine grafische Darstellung, die kann man nicht addieren.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Alt 23. Mär 2020, 02:10     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
juniorA

Registriert seit: 14. Sep 2011
106 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Koordinatensystem addieren.

  Alt 23. Mär 2020, 08:27
Koordinatensystem Addieren. Muss gestehen der Ausdruck mag einen gestandenen Mathematiker etwas erstarren lassen. Mir ist leider nicht besseres für meine Problembeschreibung eingefallen.
Mein Problem ist jedenfalls, dass ich eine ganze Reihe von Körpern habe wo jeder immer den Vorgänger zum Bezug hat. Diese Körper liegen unterschiedlich im Raum. Jeder Körper hat sein eigenes Koordinatensystem. Was immer durch einen Ursprungspunkt und 2 Vektoren beschrieben. Da weiter die rechte Handregel gilt lässt sich so immer genau die Richtung x. y z bestimmen.
Wenn sich die Werte des Ursprungspunktes und der beiden Vektoren immer auf das Ursprungskoordinatensystem beziehen wäre alles OK, denn der letzte Körper setzt sich aus Punkten zusammen deren Koordinatenangeben sich auf das Koordinatensystem vom letzten Körper beziehen. Was ich suche ist die Lage der Punkte im Globalen Raum.
Wo ich die Sache gelöst bekommen ist, wenn ich nur ein gedrehtes Koordinatensystem habe. Wenn das System aber mehrfach gedreht und Verschoben ist, dann habe ich ein Problem.
  Mit Zitat antworten Zitat
venice2

Registriert seit: 5. Dez 2019
Ort: Köln
969 Beiträge
 
Delphi 2010 Architect
 
#10

AW: Koordinatensystem addieren.

  Alt 23. Mär 2020, 11:57
Koordinatensysteme addieren
Als Mathematiker stehen mir die Haare zu Berge.
Man kann Vektoren addieren. Koordinatensysteme sind eine grafische Darstellung, die kann man nicht addieren.
Immer diese Pfennigfuchserei.
Alle verstehen was gemeint ist warum du nicht auch?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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:05 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