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.
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% 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:
Jetzt der Code:
%Vor%
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)
Finde die Länge und den Winkel des Akkords ab
Berechnen Sie die Länge und den Winkel der Linie von c
zu den Zentren der beiden Kreise
Berechnen und plotten Sie die Position der beiden Zentren d
und e
von der Senkrechten auf ab
und die Länge:
Zeigt:
Keine Lösung der numerischen Gleichung erforderlich. Nur Formeln:
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.
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.
Tags und Links optimization r geometry