Gerade im Raum

Neue Frage »

Gast Auf diesen Beitrag antworten »
Gerade im Raum
Tschuldigung für diese wahrscheinlich sehr einfache Frage, meine Mathe-Kenntnisse sind schon etwas in die Jahre gekommen...

Frage: ich habe zwei Punkte im Raum und möchte daraus die Geradengleichung bestimmen.

Wie ging das noch?

Für y=mx+b kann ich's noch aber wie geht das bei z=mx+ny+b?
Mazze Auf diesen Beitrag antworten »

Seien q und p die zwei punkte im Raum



Die Darstellung ist nicht eindeutig, du könntest auch die Gerade so definieren



p oder q bilden Ortsvektoren und q-p oder p-q bilden Richtungsvektoren der Geraden
Gast Auf diesen Beitrag antworten »

Lieber Mazze,

vielen Dank für deine schenlle Antwort!

Leider bin ich schon etwas älter (fast 50) und hab's nicht mehr so drauf wie früher...

Also meine Fragestellung:
Ich habe ein 3-dimensionales Koordinatensystem mit je endlichen Koordinaten (0 bis 512).
In diesem System kenne ich zwei Punkte p1(x1,y,,z1) und p2(x2,y2,z2).
Ich brauche eine Gleichung, um zwischen p1 und p2 liegende Punkte zu berechnen.

Vielleich kannst du mir oldie etwas konkreter helfen?

Danke im Voraus!


Was ist das übrigens für ein tolles Forum!!! Hätte es sowas schon vor 30 Jahren gegeben... Seufz.
grybl Auf diesen Beitrag antworten »

Im Raum kann man eine Gerade leider nicht in der Form z = a*x + b*y +c darstellen.

Mazze hat dir schon beschrieben, wie du eine Gleichung aufstellen kannst.

Ersetze einfach p1 durch x1, p2 durch y1, p3 durch z3 und q1 durch x2 usw.

Wofür brauchst du die Gleichung? Für eine Zeichnung etwa, weil du als Koordinaten den Bereich 0 bis 512 angibst? verwirrt
Gast Auf diesen Beitrag antworten »

Hallo grybl,

ja - die Formel von mazze sieht so einfach aus - aber ich habe da Probleme, das zu verstehen und umzusetzen.

Also nocmal etwas anders formuliert: ich habe einen Super-Quader, der aus 512*512*512 Quadern (lass sie mich Einheitsquader nennen) besteht.

Ich wähle genau 2 Einheitsquader aus dem Super-Quader aus und möchte alle Einheitsquader bestimmen, die linear zwischen den beiden gewählten Quadern liegen.

Ist das verständlich?
grybl Auf diesen Beitrag antworten »

Leider verstehe ich das nicht so ganz? verwirrt

Aber sicher kann dir jemand anderer hier helfen. smile
 
 
Mazze Auf diesen Beitrag antworten »

Ich rechne mal ein beispiel dazu

Ich gebe mir zwei Punkte



und



Ich berechne jetzt die Geradengleichung wie oben beschrieben



=



So, ich will jetzt die Punkte zwischen (1,0,0) und (3,0,0) berechnen. Dann darf alpha höchstens 1 und muss mindestens 0 sein.
Also für 0 <= alpha <= 1 bekomm ich alle Punkte zwischen (1,0,0) und (3,0,0)

Ich setze mal Beispielhaft alpha = 0,5



=



Nun ja, der Punkt (2,0,0) leigt tatsächlich zwischen (1,0,0) und (3,0,0). Analog geht das mit jeder Gerade im Raum.

Vieleicht solltest Du dich mal mit den Grundlagen der Vektorrechnung vetraut machen, da wird dann alles sehr viel verständlicher denk ich.
Gast Auf diesen Beitrag antworten »

Hallo nochmal!

Also mit Vektoren sieht das ja alles ganz einfach aus.
Und wie mache ich das in Visual Basic?

Ich habe ein integer array q(x,y,z) mit x,y,z zwischen 0 und 512
und meine zwei Punkte p1 und p2, von denen alle drei Koordinaten (x,y und z) bekannt sind. Die Punkte dazwischen will ich in s(x,y,z) speichern.

....

Vielleicht ist das ja auch nicht die richtige Fragestellung für dieses Forum... (vielleicht zu anwendungsbezogen...)...

Niichts für ungut...
grybl Auf diesen Beitrag antworten »

Jetzt, da du angibst, dass du es für ein Programm in VBasic brauchst, wird es leichter, auf deine Frage einzugehen.
Habe etwas Geduld. Augenzwinkern
Mazze Auf diesen Beitrag antworten »

Die Punkte bekommst Du in dem du genau das umsetzt. Das problem ist eher das die punkte zwischen 2 Punkten überzählbar unendlich sind.
Gibt es noch weitere spezifikationen die Punkte betreffend? Man kann zum Beispiel eine zählschleife von 0 bis 100 laufen lassen, den zählindex mit 100 dividieren und das dann in die Geradengleichung einsetzen. Aber wie gesagt man bekäme nur 100 der unendlich vielen Punkte.

edit


Also das Unendlichkeitsproblem solltest du in den Griff kriegen da Speicher nicht unendlich zu verfügung steht und du entweder den stack oder den heap killst. Wie genau verhalten sich die Punkte in deinem "endlichen" Koordinatensystem?

Willst Du nur spezielle Punkte oder alle Punkte zwischen den zwei Ausgangspunkten?


Achja, man kann einen vektor

auch so schrieben

(x,y,z) , die Rechenregeln bleiben gleich. es ist halt ne Sache des Entwicklers das mathematische Modell umzusetzen Augenzwinkern . Die Rechenregeln bleiben ja trotzdem erhalten, und damit die Lösung.

edit 2


Wenn ich vektoren in einem array speichere bleibt auch das verhalten gleich.

Ich habe die zwei punkte

a(1,2,3),b(4,5,6)

Man kann natürlich nicht die geradengleichung 1:1 umsetzen aber man kann sich ihr verhalten zu nutze machen (folgende zählschleife in java)

double[][]= new double[101][3];
for(int i= 0,i <= 100,i++){
double j= i/100;
punkte[i][0]= a[0] + i*(a[0] - b[0]);
punkte[i][1]= a[1] + i*(a[1] - b[1]);
punkte[i][2]= a[2] + i*(a[2] - b[2]);
}

Das array punkte beinhaltet dann 101 Punkte zwischen a und b
Und wie man leicht sieht entspricht die Struktur der Arrayzuweisungen genau der mathematischen geradengleichung
Gast Auf diesen Beitrag antworten »

Lieber mazze,

danke für die Antwort!

Vielleicht wäre es besser gewesen, mein Problem mit 'Strecke im Raum' zu benennen.
Ich will eigentlich nur alle Einheitsquader (s.o.) meines Superquaders berechnen, die zwischen meinen beiden Punkten liegen.

Konkret habe ich 3 Inhaltsstoffe x,y und z. Die sollen in den Verhältnissen x,y,z=0,0,0 bis 511,511,511 gemischt werden können.
Als Vorgabe wähle ich zwei beliebige Punkte (z.B. 0,511,0 und (0,511,511) und möchte die Mischungsverhältnisse aller 'Punkte' dazwischen anzeigen. In diesem Beispiel ist es trivial, weil man nur z von 0 bis 511 hochzählen muß (ich habe im Beispiel genau eine Kante meines Würfels ausgewählt).

Auch das Beispiel (0,0,0) - (0,0,511) meint eine Kante,
während (0,0,0) - (0,511,511) eine Flächendiagonale bedeutet,
und (0,0,0) - (511,511,511) eine Raumdiagonale. Hoffe, das ist so richtig.

Was ich halt bräuchte wäre eine allgemeine Formel für bliebige p1 und p2. In Visual Basic oder einfacher Arithmetik...

Ich hoffe, dies trägt zur Verwirrung bei....
Gast Auf diesen Beitrag antworten »

Nochmal hallo mazze,

habe deinen edit verpasst.

Dein java-fragment sieht sehr einkleuchtend aus. Werde es damit mal probieren.

Danke!
Gast Auf diesen Beitrag antworten »

Noch eine Frage an grybl:

(Bevor ich deine angekündigte Anrwort lese, auf die ich sehnlichst brenne)...

Wieso kann ich im Raum eine Gerade nicht mit einer so einfachen Formel (z=mx+ny+b) in Analogie zu y=mx+b darstellen?

Wenn ich zwei Punkte p1(x1,y1,z1) und p2(x2,y2,z2) habe, dann gibt es m.E. doch nur genau eine Gerade, die im Raum durch diese beiden Punkte läuft - oder?

Wenn im zweidimensionalen System y=mx+b gilt, wird diese Regel durch Zunehmen der dritten Dimension (z) ja nicht außer Kraft gesetzt, sondern es ist nur einfach z=0

Selbst wenn meine primitive Gleichung (z=mx+ny+b) eine Fläche darstellt, wo ist das Problem - ich habe doch nur 2 Punkte.

Naja - vielleicht ist meine Mathe-Schulbildung doch schon etwas zu alt...
Ben Sisko Auf diesen Beitrag antworten »

Also so wie ich das sehe, ist jetzt noch das Problem, dass man bei beliebigen Punkten nicht weiß, wie viele der endlich vielen Punkte des Quaders auf der Verbindungsstrecke zwischen den beiden gegebenen liegen. Ansonsten ist das Problem ja gelöst, oder?

Könnte man das etwa durch die Entfernung der beiden Punkte berechnen (euklidisch)? Aber ist diese Zuordnung eindeutig? Sprich: Können bei gleicher Entfernung zweier Punkte verschieden viele Punkte auf der Verbindungsstrecke liegen, je nach Lage der Winkel?

Ich hab zwar keine Antworten gegeben, sondern nur neue Fragen gestellt, aber vielleicht war das ja für irgendjemanden der entscheidende Denkanstoss Augenzwinkern

Gruß vom Ben
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »