Bestimmen Sie den Kreismittelpunkt basierend auf zwei Punkten (Radius bekannt) mit solve / optim

8

Ich habe ein Paar Punkte und würde gerne Kreise von bekannten r finden, die durch diese zwei Punkte bestimmt sind. Ich werde dies in einer Simulation verwenden und möglichen Platz für x und y haben Grenzen (sagen wir eine Box von -200, 200).

Es ist bekannt , dass das Quadrat des Radius

ist %Vor%

Ich möchte nun dieses nichtlineare Gleichungssystem lösen, um zwei potentielle Kreismittelpunkte zu erhalten. Ich habe versucht, das Paket BB zu verwenden. Hier ist mein schwacher Versuch, der nur einen Punkt gibt. Was ich gerne bekommen würde, sind beide mögliche Punkte. Alle Hinweise in die richtige Richtung werden bei der ersten Gelegenheit mit einem kostenlosen Bier getroffen.

%Vor%

Grafisch können Sie dies mit dem folgenden Code sehen, aber Sie werden einige zusätzliche Pakete benötigen.

%Vor%

ANHANG

Vielen Dank für Ihre wertvollen Kommentare und Ihren Code. Ich gebe die Zeiten für die Antworten durch Poster, die ihre Antworten mit Code ergänzt haben.

%Vor%     
Roman Luštrik 04.09.2012, 13:45
quelle

7 Antworten

4

Dies ist der grundlegende geometrische Weg, um es zu lösen, den alle anderen erwähnen. Ich verwende Polyroot, um die Wurzeln der resultierenden quadratischen Gleichung zu erhalten, aber Sie könnten einfach die quadratische Gleichung direkt verwenden.

%Vor%     
Dason 04.09.2012, 15:53
quelle
9

Mit dem folgenden Code erhalten Sie die Punkte in den Zentren der beiden gewünschten Kreise. Keine Zeit, um dies zu kommentieren oder die Ergebnisse in Spatial* -Objekte zu konvertieren, aber dies sollte Ihnen einen guten Start geben.

Erstens, hier ist ein ASCII-Art-Diagramm, um Punktnamen einzuführen. k und K sind die bekannten Punkte, B ist ein Punkt in der Horizontalen, gezogen durch k , und C1 und C2 sind die Zentren der Kreise, nach denen Sie suchen:

%Vor%

Jetzt der Code:

%Vor%

    
Josh O'Brien 04.09.2012 15:04
quelle
4

Folgt @ PhilHs Lösung, indem Sie einfach Trigonometrie in R verwenden:

%Vor%

Zeichnen Sie die ursprünglichen Punkte auf dem Radius

%Vor%

Finde den Mittelpunkt c von ab (was auch der Mittelpunkt von de der beiden Kreismittelpunkte ist)

%Vor%

Finde die Länge und den Winkel des Akkords ab

%Vor%

Berechnen Sie die Länge und den Winkel der Linie von c zu den Zentren der beiden Kreise

%Vor%

Berechnen und plotten Sie die Position der beiden Zentren d und e von der Senkrechten auf ab und die Länge:

%Vor%

Zeigt:

    
Alex Brown 04.09.2012 18:11
quelle
3

Keine Lösung der numerischen Gleichung erforderlich. Nur Formeln:

  1. Sie wissen, dass, da beide Punkte A und B auf dem Kreis liegen, der Abstand von jedem zu einem gegebenen Mittelpunkt der Radius r ist.
  2. Bilden Sie ein gleichschenkliges Dreieck mit der Sehne der beiden bekannten Punkte an der Basis und dem dritten Punkt im Kreismittelpunkt.
  3. Halbiere das Dreieck in der Mitte zwischen A und B und gib dir ein rechtwinkliges Dreieck.
  4. Ссылка gibt Ihnen die Höhe in Bezug auf die Basislänge und den Radius.
  5. Folgen Sie dem normalen Akkord (Siehe diese Antwort) für eine Entfernung der Höhe, die jeweils berechnet wurde Richtung von dem Punkt.
Phil H 04.09.2012 14:46
quelle
1

Hier sind die Knochen einer Antwort, wenn ich später Zeit habe, werde ich sie ausstatten. Dies sollte einfach genug sein, um zu folgen, wenn Sie mit den Wörtern zeichnen, Entschuldigung, ich habe nicht die richtige Software auf diesem Computer, um das Bild für Sie zu zeichnen.

Lassen Sie entartete Fälle beiseite, in denen die Punkte identisch sind (unendliche Lösungen) oder zu weit voneinander entfernt sind, um auf demselben Kreis des gewählten Radius zu liegen (keine Lösungen).

Beschriften Sie die Punkte X und Y und die unbekannten Mittelpunkte der 2 Kreise c1 und c2 . c1 und c2 liegen auf der Mittelsenkrechten von XY ; Rufen Sie diese Zeile c1c2 auf, in diesem Stadium ist es unerheblich, dass wir nicht alle Details der Orte von c1 und c2 kennen.

Finde die Gleichung der Linie c1c2 heraus. Er durchläuft den Halbwert von XY (nennt diesen Punkt Z ) und hat eine Steigung, die gleich dem negativen Reziprokwert von XY ist. Jetzt haben Sie die Gleichung von c1c2 (oder Sie würden, wenn es Fleisch auf diesen Knochen gab).

Konstruiere nun das Dreieck von einem Punkt zum Schnittpunkt der Linie und ihrer Mittelsenkrechten und dem Mittelpunkt eines Kreises (zB XZc1 ). Sie wissen immer noch nicht genau, wo c1 ist, aber das hat nie jemanden daran gehindert, die Geometrie zu skizzieren. Sie haben ein rechtes Dreieck mit zwei bekannten Seitenlängen ( XZ und Xc1 ), so dass Zc1 leicht zu finden ist. Wiederholen Sie den Vorgang für das andere Dreieck und die Kreismitte.

Natürlich unterscheidet sich dieser Ansatz deutlich von dem ursprünglichen Ansatz von OP und mag nicht attraktiv sein.

    
High Performance Mark 04.09.2012 14:18
quelle
1

Einige Warnungen, um loszuwerden, aber das sollte dir den Anfang machen. Da es möglicherweise ein Leistungsproblem gibt, könnte eine vollständige Lösung mit der Basisgeometrie ein besserer Ansatz sein.

%Vor%     
Roland 04.09.2012 14:22
quelle
0

Ich hoffe, Sie kennen einige grundlegende Geometrie, weil ich es leider nicht zeichnen kann.

Die senkrechte Winkelhalbierende ist die Linie, wo jeder mittlere Punkt eines Kreises, der sowohl A als auch B kreuzt, liegt.

Jetzt haben Sie die Mitte von AB und r, also können Sie ein rechtes Dreieck mit dem Punkt A, der Mitte von AB und dem unbekannten Mittelpunkt des Kreises zeichnen.

Verwenden Sie nun den Satz des Pythagoras, um den Abstand vom Mittelpunkt von AB zum Mittelpunkt des Kreises zu berechnen, und berechnen Sie die Position des Kreises von hier aus nicht schwer, indem Sie einfache Sin / Cos-Kombinationen verwenden.

    
lolopop 04.09.2012 14:31
quelle

Tags und Links