Hallo zusammen,
ich habe folgende Gleichung: u = f*y und u, y sind Vektoren (3D). Ich möchte nun f berechnen, also:
x1 = f1*x2
y1 = f2*y2
z1 = f3*y3
Nun habe ich einfach u/y gerechnet, aber wie kann ich Divisonen durch Null abfangen? Zum Beispiel so etwas:
0=t1*0
3=t2*2
0=t3*0
Oder gibt es dafür eine fertige numpy-Funktion?
detlef
Gleichung lösen
Hallo,
naja die Werte, die herauskommen. Was meinst du? Ich weiss nicht so genau, wie man eine Schleife bauen kann, so dass überpüft wird, ob ein Punkt auf einer Geraden liegt. Ich habe 20 Punkte und dann soll mit zwei Punkten eine Geradengleichung aufgestellt werden und dann die anderen Punkte einsetzen, ob diese Punkte auf der Geraden liegen.
Wie kann ich das sinnvoll machen?
detlef
naja die Werte, die herauskommen. Was meinst du? Ich weiss nicht so genau, wie man eine Schleife bauen kann, so dass überpüft wird, ob ein Punkt auf einer Geraden liegt. Ich habe 20 Punkte und dann soll mit zwei Punkten eine Geradengleichung aufgestellt werden und dann die anderen Punkte einsetzen, ob diese Punkte auf der Geraden liegen.
Wie kann ich das sinnvoll machen?
detlef
Warum machst du es so kompliziert? Wenn du eine Gerade g hast und einen zu testenden Punkt p , dann musst du lediglich eine Projektion von p auf g machen und erhältst einen Punkt q. Dann bestimmst du den Abstand von p und q und kannst das Ergebnis gegen einen Schwellwert testen.
Vollständig ohne Sonderfälle und ohne Nachdenken.
Vollständig ohne Sonderfälle und ohne Nachdenken.
Das Leben ist wie ein Tennisball.
@01detlef: Ja welche Werte kommen denn da heraus? Gib doch mal zu einem konkreten Beispiel ein konkretes Ergebnis an, dann fällt Dir vielleicht etwas auf.
Ob ein Punkt p_3 auf einer geraden liegt, die von zwei Punkten p_1 und p_2 beschrieben wird, könnte man zum Beispiel prüfen, in dem man schaut ob die Vektoren `p_1 → p_2` und `p_1 → p_3` wenn man sie normiert gleich sind.
Ob ein Punkt p_3 auf einer geraden liegt, die von zwei Punkten p_1 und p_2 beschrieben wird, könnte man zum Beispiel prüfen, in dem man schaut ob die Vektoren `p_1 → p_2` und `p_1 → p_3` wenn man sie normiert gleich sind.
@BlackJack: dass kann aber zu recht unerwarteten Ergebnissen führen. Bei einer Gerade entlang der x-Achse wäre ein Punkte (0, 0.001) weiter von der Geraden entfernt als ein Punkt (100, 1).
Das Leben ist wie ein Tennisball.
Hallo,
also z.b. die vier Punkte:
p1(0,0,0)
p2(2,0,0)
p3(4,0,0)
p4(3,2,0)
Nun stelle ich mit p1 und p2 eine gerade auf:
g: r = p1 * lamda*(p2-p1)
Und wie kann ich nun der Reihe nach prüfen, ob die Punkte p3 und p4 usw. auf dieser Geraden liegen? Sollte man das mit einer Schleife machen, ich habe die Coordinaten in einem Array stehen.
detlef
also z.b. die vier Punkte:
p1(0,0,0)
p2(2,0,0)
p3(4,0,0)
p4(3,2,0)
Nun stelle ich mit p1 und p2 eine gerade auf:
g: r = p1 * lamda*(p2-p1)
Und wie kann ich nun der Reihe nach prüfen, ob die Punkte p3 und p4 usw. auf dieser Geraden liegen? Sollte man das mit einer Schleife machen, ich habe die Coordinaten in einem Array stehen.
detlef
Projektion auf Gerade.
Oder in kurz für eine Gerade g = s + lambda*n mit normiertem Richtungsvektor n, dem Stützvektor s und dem zu projizierendem Punkt p:
q = s + ((p - s).n)*n
wobei "." das Skalarprodukt ist.
Oder in kurz für eine Gerade g = s + lambda*n mit normiertem Richtungsvektor n, dem Stützvektor s und dem zu projizierendem Punkt p:
q = s + ((p - s).n)*n
wobei "." das Skalarprodukt ist.
Das Leben ist wie ein Tennisball.
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@01detlef: Was EyDu gesagt hat. Außerdem das hier.
In specifications, Murphy's Law supersedes Ohm's.
Hallo,
also ich habe das nun alles so eingebaut und es funktioniert. Wie kann ich nun in der Schleife sagen, dass sie abbrechen soll, sobald ein Abstand größer als 0.001 ist?
Also sobald abstand größer als 0.001 ist, soll x3=p sein und die Schleife beendet werden und der nachfolgende Code folgen...
detlef
also ich habe das nun alles so eingebaut und es funktioniert. Wie kann ich nun in der Schleife sagen, dass sie abbrechen soll, sobald ein Abstand größer als 0.001 ist?
Code: Alles auswählen
for i in range(n)
p = coordiante_xyz
abstand = np.sqrt(p-q..)
if abstand >= 0.001:
x3 = p
zahl = 3*x3
detlef