AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2D- in 3D-Koordinate umrechnen

Ein Thema von milos · begonnen am 2. Mai 2016 · letzter Beitrag vom 18. Mai 2016
Antwort Antwort
Benutzerbild von jfheins
jfheins

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

AW: 2D- in 3D-Koordinate umrechnen

  Alt 16. Mai 2016, 15:52
Ah ja da ist ja der Fehler

Ich habe zwar oben von "mit Nullen auffüllen" geschrieben, aber das war nicht ganz richtig - wie mir gerade aufgefallen ist. Das Element unten rechts müsste dennoch 1 sein. (Stell dir eine Einheitsmatrix vor, in die man die kleinere Matrix hineinkopiert)
Zitat:
Wie sehe ich was eine Blockmatrix und was eine ganz normale Klammer ist?
Durch Erfahrung ^^ Also wenn da zwei Sachen übereinander oder nebeneinander in der Klammer stehen, ohne Symbol dazwischen, dann ist das eine Matrix.

Zitat:
determinant(inversion(M)) * (xy - a)
Das passt so nicht. (Fun Fact: Die Determinante der Inversen ist gleich dem inversen der Determinante. Du könntest das zu 1/determinant(M) vereinfachen.)
Du braucht die Determinante nicht, wenn du direkt die Inverse berechnest. (Du brauchst sie eventuell zur Berechnung der Inversen)

Ich habe mal deine Punkte von oben durchgerechnet mit Zwischenergebnissen. Vielleicht wird dann klarer, wie die Formeln in Code aussehen.
Grundlegendes zuer MATLAB-Syntax: Semikolon ( macht eine neue Zeile, vertcat verkettet vertikal, horzcat horizontal.
[1; 0; 0] ist also ein Spaltenvektor und gleichbedeutend mit vertcat(1, 0, 0)
Code:
A = [20; 100; 0]
B = [20; 100; 20]
C = [0; 100; 20]

a = [0; 100]
b = [50; 0]
c = [100; 200]

x = 50;
y = 90;

%% Ab hier sind Eingaben mit >> am Angang, der Rest ist das Ergebnis der vorigen Eingabe

>> xy = vertcat(x, y) % Untereinander schreiben
xy =
    50
    90
>> Basis2D = horzcat(b-a, c-a) % Nebeneinander schreiben
Basis2D =
    50   100
  -100   100
>> inv(Basis2D) % Inverse
ans =
    0.0066667   -0.0066667
    0.0066667    0.0033333
>> uv = inv(Basis2D) * ( xy - a )
uv =
          0.4
          0.3
>> Basis3D = horzcat(B-A, C-A)
Basis3D =
     0   -20
     0     0
    20    20
>> X = A + Basis3D * uv
X =
    14
   100
    14
Falls du mit 3x3 Matrizen rechnen musst, geht der letzte Teil so:
Code:
>> xy = vertcat(x, y) % Untereinander schreiben
xy =
    50
    90
>> Basis2D = horzcat(b-a, c-a) % Nebeneinander schreiben
Basis2D =
    50   100
  -100   100
>> Basis2D(3, 3) = 1 % Erweitern
Basis2D =
    50   100     0
  -100   100     0
     0     0     1
>> inv(Basis2D) % Inverse
ans =
    0.0066667   -0.0066667            0
    0.0066667    0.0033333            0
            0            0            1
>> uv = inv(Basis2D) * vertcat( xy - a, 0 )
uv =
          0.4
          0.3
            0
>> Basis3D = horzcat(B-A, C-A, [0; 0; 0])
Basis3D =
     0   -20     0
     0     0     0
    20    20     0
>> X = A + Basis3D * uv
X =
    14
   100
    14

Geändert von jfheins (16. Mai 2016 um 15:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
510 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: 2D- in 3D-Koordinate umrechnen

  Alt 18. Mai 2016, 01:52
Unglaublich!
Vielen vielen vielen dank hab's endlich geschafft!
Woooow, das war wohl das ekligste im Mathematik Bereich was ich bisher gemacht habe jedoch bin ich froh das du mir so gut unter die Arme gegriffen hast, hab es nun endlich verstanden das ich Vektoren und Skalare eigentlich als Matrizen betrachten und das man das so einfach untereinander oder nebeneinander schreiben kann.

Ich hoffe deine Beiträge hier werden auch in Zukunft anderen helfen, so wie du das alles 10 mal verinfacht für mich erklären musstest wird bestimmt jeder Depp das verstehen

Zitat:
determinant(inversion(M)) * (xy - a)
Das passt so nicht. (Fun Fact: Die Determinante der Inversen ist gleich dem inversen der Determinante. Du könntest das zu 1/determinant(M) vereinfachen.)
Du braucht die Determinante nicht, wenn du direkt die Inverse berechnest. (Du brauchst sie eventuell zur Berechnung der Inversen)
Okay, wenn du das hier ernst meinst gibts wieder ein paar die es nicht verstehen werden
Aber das meinst du doch nicht oder? xD

Freundliche Grüsse und danke nochmal, bist ein Schatz
Milos

Geändert von milos (18. Mai 2016 um 01:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

AW: 2D- in 3D-Koordinate umrechnen

  Alt 18. Mai 2016, 18:53
Unglaublich!
Vielen vielen vielen dank hab's endlich geschafft!
Woooow, das war wohl das ekligste im Mathematik Bereich was ich bisher gemacht habe jedoch bin ich froh das du mir so gut unter die Arme gegriffen hast, hab es nun endlich verstanden das ich Vektoren und Skalare eigentlich als Matrizen betrachten und das man das so einfach untereinander oder nebeneinander schreiben kann.
Freut mich, dass es jetzt klappt


Zitat:
Okay, wenn du das hier ernst meinst gibts wieder ein paar die es nicht verstehen werden
Aber das meinst du doch nicht oder? xD
Ich weiß nicht genau, was ich da nicht ernst meinen soll
Der Spruch "Die Determinante der Inversen ist gleich dem inversen der Determinante." klingt vielleicht erst mal verwirrend. Aber damit ist nur gemeint:
Code:
M =
    50   100
  -100   100
>> det(M)
ans =
       15000
>> det(inv(M))
ans =
   6.6667e-05
>> 1/ans
ans =
       15000
Die Determinante ist ja ein Skalar, und das inverse eines Skalars nennt man auch Kehrwert. EInsteigerfrundlicher könnte man also sagen:
Zitat:
Die Determinante der inversen Matrix von M ist gleich dem Kehrwert der Determinante von M.
Da spielt dann auch direkt hinein: Eine Matrix ist genau dann invertierbar, wenn det(M) <> 0.
Wenn die Determinante gleich 0 ist, müsstest du beim invertieren der Matrix irgendwann durch 0 teilen. Eine solche Matrix ist nicht invertierbar. Das passiert beispielsweise, wenn man eine komplette Zeile mit Nullen füllt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:05 Uhr.
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-2025 by Thomas Breitkreuz