Autor Beitrag
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 14.04.03 09:47 
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~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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! ;)

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: 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~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Mo 14.04.03 23:35 
Hi,
interessantes Problem, gib mir bisschen Zeit, das schaff ich.
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: 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~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Di 15.04.03 01:26 
Hi,
ICQ. :)