algorithmus/programm zum berechnen von koordinaten
algorithmus/programm zum berechnen von koordinaten
hallo.
ich hab hier mal ein kniffligeres problem:
ich moechte die koordinaten von mehreren punkten auf einer 2 dimensionalen flaeche berechnen,
allerdings habe ich von den punktne nur die distanzen, die sie untereinander haben:
also ich habe:
distanz
a -> b : 4cm
b -> c : 6cm
a -> c : 5cm
(usw)
(das ist nur ein beispiel, evtl so nicht loesbar, aber ich hoffe ihr versteht was ich meine)
und moechte das nun graphisch dastellen, brauche also xy koordinaten.
wie gehe ich das an?
ich hab hier mal ein kniffligeres problem:
ich moechte die koordinaten von mehreren punkten auf einer 2 dimensionalen flaeche berechnen,
allerdings habe ich von den punktne nur die distanzen, die sie untereinander haben:
also ich habe:
distanz
a -> b : 4cm
b -> c : 6cm
a -> c : 5cm
(usw)
(das ist nur ein beispiel, evtl so nicht loesbar, aber ich hoffe ihr versteht was ich meine)
und moechte das nun graphisch dastellen, brauche also xy koordinaten.
wie gehe ich das an?
Re: algorithmus/programm zum berechnen von koordinaten
Hallo!
Es handelt sich dabei um beliebige (geschlossene) Figuren, nicht nur Dreiecke?
Mal kurz eine Idee von mir:
Stelle mit folgender Formel ein Gleichungssystem auf:
(x_a - x_b )^2 + (y_a - y_b )^2 = (Abstand Punkt a zu Punkt b)^2
Also Anzahl Punkte = Anzahl Gleichungen.
Wenn die Lage der Figur im Raum egal ist,
dann kannst du das Gleichungssystem etwa vereinfachen, indem du den ersten beiden Punkten schonmal ihre Koordinaten zuteilst, z.B.:
x_a = 0
x_b = 0
y_a = 0
y_b = Abstand Punkt a zu Punkt b
Und dann viel Spaß beim Lösen des Gleichungssystems!
Gruß,
Daniel
Hui, lustiges Problem.startx hat geschrieben:wie gehe ich das an?
Es handelt sich dabei um beliebige (geschlossene) Figuren, nicht nur Dreiecke?
Mal kurz eine Idee von mir:
Stelle mit folgender Formel ein Gleichungssystem auf:
(x_a - x_b )^2 + (y_a - y_b )^2 = (Abstand Punkt a zu Punkt b)^2
Also Anzahl Punkte = Anzahl Gleichungen.
Wenn die Lage der Figur im Raum egal ist,
dann kannst du das Gleichungssystem etwa vereinfachen, indem du den ersten beiden Punkten schonmal ihre Koordinaten zuteilst, z.B.:
x_a = 0
x_b = 0
y_a = 0
y_b = Abstand Punkt a zu Punkt b
Und dann viel Spaß beim Lösen des Gleichungssystems!
Gruß,
Daniel
-
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Wenn die Abstände zwischen den Punkten exakt sind, kannst du das ganze nach und nach konstruieren:
Punkt A kommt auf den Ursprung (0,0)
Punkt B auf die X Achse (|AB|,0)
Punkt C kannst du dann aus A und B berechnen, wobei du noch die Wahl hast ob C über oder unter der X Achse liegt.
Punkt D wird aus Punkt B und C berechnet, wobei du Punkt A nimmst um zu entscheiden welche der beiden Lösungen du nimmst usw.
Wenn die Abstände nicht exakt vorliegen musst du oben erwähntes Gleichungssystem genähert lösen (nicht linearer leastsquare fit).
Punkt A kommt auf den Ursprung (0,0)
Punkt B auf die X Achse (|AB|,0)
Punkt C kannst du dann aus A und B berechnen, wobei du noch die Wahl hast ob C über oder unter der X Achse liegt.
Punkt D wird aus Punkt B und C berechnet, wobei du Punkt A nimmst um zu entscheiden welche der beiden Lösungen du nimmst usw.
Wenn die Abstände nicht exakt vorliegen musst du oben erwähntes Gleichungssystem genähert lösen (nicht linearer leastsquare fit).
es mag an meiner mangelnden kaffeeversorgung heute liegen, aber magst du mir dass an einem beispielWenn die Abstände zwischen den Punkten exakt sind, kannst du das ganze nach und nach konstruieren:
vorfueren?
sagen wir ich will C unterhalb der achse. lautet die gleichung um auf die koordinaten zu kommen? und wie dann weiter?Punkt C kannst du dann aus A und B berechnen, wobei du noch die Wahl hast ob C über oder unter der X Achse liegt.
Du kannst aus zwei Punkten und dem jeweiligen Abstand dieser Punkte zu einem dritten Punkt die möglichen Koordinaten des dritten Punktes berechnen.startx hat geschrieben:sagen wir ich will C unterhalb der achse. lautet die gleichung um auf die koordinaten zu kommen?
Das Problem ist im Prinzip die Ermittlung der Schnittpunkte zweier Kreise:
Kreis 1:
Punkt A (x_a,y_a) ist Mittelpunkt des Kreises und Abstand von Punkt A zu Punkt C ist dessen Radius (r_1).
Kreisgleichung k1:
(x-x_a)^2 + (y-y_a)^2 = r_1^2
Kreis 2:
Punkt B (x_b,y_b) ist Mittelpunkt des Kreises und Abstand von Punkt B zu Punkt C ist dessen Radius (r_2).
Kreisgleichung k2:
(x-x_b)^2 + (y-y_b)^2 = r_2^2
Dann jeweils binomische Formel anwenden und die beiden Gleichungen voneinander subtrahieren.
Die daraus resultierende Geradengleichung kann man jetzt nach einer Variablen (hier nehme ich mal y) auflösen und in eine der beiden Kreisgleichungen einsetzen.
So findet man dann die beiden x-Koordinaten der beiden Schnittpunkte (evtl. auch nur eine, wenn sich die beiden Kreise nicht schneiden sondern lediglich berühren).
Die andere(n) Koordinate(n) (hier y-Koordinaten) findet man dann durch Einsetzen der soeben berechneten x-Koordinate(n) in die Geradengleichung.
Dann wählst du dir eine x,y-Koordinate aus oder du berechnest garnicht erst beide Lösungen sondern wählst dir gleich eine x-Koordinate aus.
Gruß,
Daniel
Sorry, ich denke heute einfach etwas zu kompliziert:
Du hast ja im Prinzip für jedes Teilproblem ein Dreieck aus Punkt A, B und C.
Du kennst die Länge der drei Seiten.
die Winkel des Dreiecks berechnen
aus Vektor (A nach B) und Winkel zwischen z.B. A und C kannst du dann einfach Vektor C und damit den Punkt C berechnen!
Da du ja aber immer zwei Möglichkeiten hast, auf welcher "Seite" des Vektors du den neuen Punkt platzierst, musst du natürlich prüfen auf welcher Seite der Punkt überhaupt liegen kann, indem du z.B. beide möglichen Punkte C berechnest und dann überprüfst ob der Abstand von Punkt C zu einem weiteren schon berechneten Punkt (aber logischerweise nicht A, B oder C) stimmt, diese Möglichkeit für C wählst du dann.
Beim ersten Punkt hast du allerdings noch die freie Wahl auf welche Seite du den Punkt legst, diese Plausibilitätsprüfung machst du also erst ab Punkt D.
Punkt A und B legst du, wie schon gesagt, am Besten schon vorher fest:
A = (0,0)
B = (0,Abstand A zu B)
Ich hoffe das hilft dir jetzt weiter!
Was willst du da eigentlich programmieren?
Gruß,
Daniel
Du hast ja im Prinzip für jedes Teilproblem ein Dreieck aus Punkt A, B und C.
Du kennst die Länge der drei Seiten.
die Winkel des Dreiecks berechnen
aus Vektor (A nach B) und Winkel zwischen z.B. A und C kannst du dann einfach Vektor C und damit den Punkt C berechnen!
Da du ja aber immer zwei Möglichkeiten hast, auf welcher "Seite" des Vektors du den neuen Punkt platzierst, musst du natürlich prüfen auf welcher Seite der Punkt überhaupt liegen kann, indem du z.B. beide möglichen Punkte C berechnest und dann überprüfst ob der Abstand von Punkt C zu einem weiteren schon berechneten Punkt (aber logischerweise nicht A, B oder C) stimmt, diese Möglichkeit für C wählst du dann.
Beim ersten Punkt hast du allerdings noch die freie Wahl auf welche Seite du den Punkt legst, diese Plausibilitätsprüfung machst du also erst ab Punkt D.
Punkt A und B legst du, wie schon gesagt, am Besten schon vorher fest:
A = (0,0)
B = (0,Abstand A zu B)
Ich hoffe das hilft dir jetzt weiter!
Was willst du da eigentlich programmieren?
Gruß,
Daniel