Verfasst am: 10.05.2010, 12:48
Titel: Bestimmung des Schnittpunktes von 3 Kugeln im Raum
Hallo an alle.
Bin Matlab Neuling und benötige eure Hilfe für folgendes Problem:
Ich habe die Koordinaten von drei Kugelmittelpunkten und den Radius der Kugeln, der bei allen drei Kugeln gleich ist. Nun möchte ich eine Formel aufstellen, mit der ich in der lage bin , aus dem Radius und den Koordinaten der Kugelmittelpunkte die X,Y,Z Koordinaten der 2 Schnittpunkte zu bestimmen. Diese Formel sollte aber möglichst allgemein bleiben. Ich weiß nicht so richtig wie ich mit Matlab da dran gehen soll (Symbolic Toolbox???). Hab das schonmal händisch versucht, hab aber ziemlich schnell festgestellt, dass das ellenlange Ausdrücke gibt, die nicht mehr zu händeln sind. Ich wäre für jeden Vorschlag eurerseits sehr dankbar.
Folgende vorgehensweise habe ich mir überlegt:
1. 2 Kugeln schneiden sich und bilden einen Kreis.
2. Kreis und 3. Kugel schneiden sich und bilden 2 Punkte.
Ich weiß nicht so richtig, wie ich Kugelgleichungen aufstelle und diese Gleichsetzte um eine Kreisgleichung zu bekommen usw.
Es hängt also an vielen Stellen.
Vielen Dank schonmal für alle, die sich Zeit für mich nehmen.
die Symbolic Math Toolbox wäre zwar grundsätzlich das richtige Tool. Wenn du aber da Formeln herausbekommst, wären sie bei diesem Problem so lange, dass man doch nichts damit anfangen könnte.
Numerisch lösen kann man das Problem z.B. mit fsolve oder lsqnonlin.
Verfasst am: 11.05.2010, 06:38
Titel: Bestimmung des Schnittpunktes von 3 Kugeln im Raum
Hallo Harald.
Vielen Dank schonmal für deine Antwort. Hast du eventuell mal ein Beispiel parat, wie ich mit fsolve oder lsqnonlin den Schnittkreis bzw. die Schnittpunkte von zwei, bzw. drei Kugeln bestimme. Es habert eigentlich schon an der Eingabe. In welcher Form hinterlege ich die Kugelgleichung, wie gehe ich jetzt am besten vor?
Verfasst am: 11.05.2010, 07:45
Titel: Bestimmung des Schnittpunktes von 3 Kugeln im Raum
Hallo nochmal an alle Hilfsbereiten.
Ich habe eine gute Beschreibung gefunden, wie ich diese Punkte berechnen kann. Allerdings weiß ich nicht, wie ich dies in einem m-File umsetzen kann. Vielleicht kann mir ja jemand helfen. Ich hänge den Link mal an:
Hier mal eine Lösung mit Hilfe von solve. Man könnte die Kreismittelpunkte und Radien auch als symbolische Variablen übergeben. Dann dauert es nur ziemlich lange und die Gleichungen sind wahrscheinlich sehr unübersichtlich.
Funktioniert einwandfrei und ist ein Bruchteil von meinem Code.
Hatte mir mittlerer Weile folgendes überlegt:
Code:
function[A,B] = Koordinaten(x1,y1,h1,x2,y2,h2,x3,y3,h3,l1,l2,l3)
N1 = [0;0;0];
N2 = [0;0;0];
G1 = [00];
G2 = [00];
G = [00; 00];
b = [0;0];
syms x y z t
Hatte mich halt an der Beschreibung vom MatheBoard langgehangelt. Ist sehr kompliziert (wahrscheinlich auch kompliziert nachzuvollziehen) und noch fehleranfällig. Müssten noch einige Abfragen rein.
Vielen Dank an alle, die sich Zeit für mich genommen haben.
wenn das Komma als Dezimaltrennzeichen das Problem wäre, wäre es wohl schon früher zu Problemen gekommen.
Das Problem wird eher sein, dass es einfach "unmöglich" ist, dieses Problem symbolisch zu lösen. Und wenn es wirklich eine 50 Seiten lange symbolische Lösung gibt, was um alles in der Welt soll man damit anfangen?
% Test-Daten um sicherzustellen, dass es einen Schnittpunkt gibt
M = rand(3,3);
x = rand(3,1);
r(1) = sqrt(sum((M(:,1)-x).^2));
r(2) = sqrt(sum((M(:,2)-x).^2));
r(3) = sqrt(sum((M(:,3)-x).^2));
[x0, fval] = findeSchnitt(M, r);
% Achtung: es gibt meist 2 Schnittpunkte. Es kann sein, dass der andere % gefunden wird.
Bleibt noch die Frage, wie man den zweiten Schnittpunkt findet.
a) ausreichend verschiedener Startpunkt
b) sich überlegen, ob man mit Geometrie (Spiegelung oder so) den anderen Schnittpunkt direkt ausrechnen kann.
Oder ein ausreichend guter Startwert [im Beispiel pauschal (0,0,0)], dann sollte der interessante Schnittpunkt schon gefunden werden.
Mein Problem ist hiermit gelöst. Hab die Version von Harald benutzt und die läuft ohne Probleme auch bei Kommazahlen durch. Das Problem mit den Zwei Schnittpunkten betrifft mich nicht, da ein Schnittpunkt immer in der positiven Z-Ebene und einer immer in der negativen Z-Ebene liegt. Mich interessiert aber nur der in der positiven Z-Ebene und bei Wahl eines guten Startwertes wird dieser auch immer gefunden.
Vielen Dank nochmal an Harald und Thomas84 und alle die mir geholfen haben.
Mfg
Rumble
Mechatroniker-Sepp
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.08.2015, 15:06
Titel: Bestimmen der Radien bei gegebenen Schnittpunkt von 3 Kugeln
Hallo, ich habe das Thema sehr interessiert verfolgt!
Nun hätte ich noch eine Frage als totaler MatLab- Neuling,
Wie kann ich bei gegebenen Schnittpunkt (Es soll genau einen Schnittpunkt geben der 3 Kugeln) die Radien der Kugeln ermitteln???
Die Kugelmittelpunkte sind fest gegeben.
Koordinaten der Mittelpunkte sind folgende:
K1 (0/0/3)
K2 (0/3/3)
K3 (3/1,5/3)
Der Schnittpunkt soll variabel sein, sprich der Schnittpunkt wird sich bewegen.
Nun sollen die Radien der Kugeln in Abhängigkeit des Schnittpunktes ermittelt werden.
Der Schnittpunkt soll innerhallb des Würfels mit den Längen 3x3x3 liegen.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.