Entwickler-Ecke
Sonstiges (Delphi) - Mathe Problem - V
Aya - Mo 14.04.03 09:47
Titel: Mathe Problem - V
huhu,
willkommen zu der allseits beliebten Mathe Frage :twisted:
Also, das ganze spielt sich mal wieder im 3 Dimensionalen Raum ab:
Ich habe 2 Punkte (P1, P2). Ich weiß von beiden die X, Y und Z Koordinaten.
Ziehen wir jetzt mal im Kopf eine linie zwischen den beiden linien... Was ich jetzt brauche, ist die X, Y und Z Koordinate der Linie z.B. an der stelle wo sie 0.4 lang ist.. oder wo sie 1.7 lang ist... ;)
Hat wer ne ahnung wie man das rechnet???
Au'revoir,
Aya~
Motzi - Mo 14.04.03 10:47
Titel: Vektoren, Vektoren und nochmal Vektoren..!
Wiedermal ein Fall für meine alten Freunde die Vektoren! ;)
Du berechnest zuerst den Vektor vom Punkt A zum Punkt B nach der Regel "Enpunkt minus Anfangspunkt". zB:
A=(1|2|3) und B=(4|5|6)
Dann ist der Vektor a: (4-1|5-2|6-3) also (3|3|3)
Von diesem Vektor bildest du jetzt den Einheitsvektor. Der Einheitsvektor ist der Vektor mit der Länge 1:
Einheitsvektor von a: 1/|a|*a wobei |a| den Betrag, also die Länge des Vektors darstellt. Den Betrag berechnet man ganz einfach mit Wurzel(x^2 + y^2 + z^2). Den Einheitsvektor multiplizierst du dann nochmal mit der Länge von wo du die Position haben willst (also laut deinen Beispielen mit 0,4 bzw 1,7). Und dann musst du nur noch zum Punkt A den berechneten Vektor dazuaddieren und du hast die Koordinaten des gesuchten Punktes.
Das ganze mal an einem Bsp vorgerechnet:
A=(1|2|3) und B=(6|5|4)
gesucht wird der Punkt an der Position 1,7
a=(5|3|-1)
Einheitsvektor(a) = 1/|a|*a = 1/Wurzel(5^2 + 3^2 + (-1)^2)*(5|3|-1) ~ 1/5,916*(5|3|-1) ~ (0,845|0,507|-0,169)
Der gesuchte Punkt P ist dann: A + 1,7*Einheitsvektor(a) also:
(1|2|3) + 1,7(0,845|0,507|-0,169) ~ (2,437|2,862|2,713)
Das ganze jetzt in Code umzusetzen bleibt dir überlassen! ;)
Simon Joker - Mo 14.04.03 10:49
Das sollte so gehen:
PNeu.X:=P1.X+D*(P2.X-P1.X);
PNeu.Y:=P1.Y+D*(P2.Y-P1.Y);
PNeu.Z:=P1.Z+D*(P2.Z-P1.Z);
D = Distanz zwischen P1&PNeu/ Distanz zwischen P1&P2
zu langsam.
Aya - Mo 14.04.03 23:13
huhu,
erstmal danke euch beiden :)
Ich hab das nun doch ein wenig anders gelöst, indem ich die Linie interpoliert habe:
P(t) = A * (1-t) + B * t
(t von 0 bis 1)
Klappt auch wunderbar... aber, weiß jemand wie ich da nun ne schwingung reinbekomme???
Also ich will nich das das kerzengerade von A -> B geht, sondern ne SinusKurve reinbekommen.. nur hab KA wie :(
Au'revoir,
Aya~
Alibi - Mo 14.04.03 23:35
Hi,
interessantes Problem, gib mir bisschen Zeit, das schaff ich.
Alibi - Di 15.04.03 00:03
Also, ich hab folgenden Ansatz:
Die Sinuskurve muss ja auf einer Ebene liegen.
Also hast du 2 Bedingungen.
Einmal, dass der Punkt auf der Ebene liegt und dann noch von der der Geraden einen bestimmten Abstand hat (Den, der sich irgendwie aus der Sinusfunktion ergibt, dass ist das kleinere Problem).
Nun kanns du ja die Vektorgleichung der Geraden aufstellen, die durch beide Punkte geht. Die zu zeichen ist ja auch kein Problem, hast du ja schon.
Ich kann hier leider kein Lambazeichen usw. und kein Vektorpfeil darstellen, also Lamba einfach ein L, Mü ein M und Nü ein N, über die Kleinbuchstaben stell dir ein Vektorpfeil vor. :)
Die Gerade kriegst du ja durch g:x = a + Lb.
Die Ebene stell ich durch die Gerade und einen beliebigen Punkt im Raum dar. Der Punkt liegt auf der gleichen Ebene, wie später die Sinuskurve.
e:x = p + M(a-p)+N(b)
Das wäre also die Ebene...
Nun ist da noch die Problematik, wie man das unterbringen könnte, dass der gesuchte Punkt den gewünschten Abstand von der Gerade hat UND auf der Ebene liegt, gib mir mehr Zeit. *g
Alibi - Di 15.04.03 00:19
Anderer Ansatz:
Nimm 2 Geraden mit dem gleichen Richtungsvektor und dem gleichen Faktor Lambda.
Eine Gerade hast du ja bereits, die, die durch die 2 Punkte geht.
Die andere muss zweierlei von Lamba abhängen, irgendwie so:
g2: x=sin(L)a + L(b)
Ob das funktioniert kann ich nicht sagen, ich hab irgendwie keine Lust, jetzt Stift und Papier zu nehmen und zu versuchen, dass zu zeichnen. :)
Aya - Di 15.04.03 00:53
huhu,
danke erstmal :)
Aber... ich weiß, ich bin schlecht in Mathe... ich hab leider auch absolut Keine ahnung wie man das rechnet... :(
Au'revoir,
Aya~
Alibi - Di 15.04.03 01:26
Hi,
ICQ. :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!