2016-03-21 15 views
2

Ich versuche, einen Code zu schreiben, um einen optimalen Punkt entlang des Umfangs eines Kreises zu finden.Optimaler Punkt auf dem Umfang eines Kreises

Angenommen, im 3D-Raum ist ein Kreis definiert, so dass ich seinen Radius und die Ebene, auf der er liegt, kenne. Ich kenne auch den Mittelpunkt des Kreises.

Ich habe auch einen Punkt außerhalb dieses Kreises, und ich kenne seine 3D-Position. Ich möchte den Punkt auf dem Umfang des Kreises finden, der diesem äußeren Punkt am nächsten ist.

Was ist der effizienteste Weg, dies zu berechnen?

+2

Sie benötigen mehr als den Radius und das Flugzeug, Sie brauchen auch die Position des Zentrums. –

+0

Danke für den Fang, ich kenne die zentrale Lage auch. Ich habe die Frage bearbeitet, um dies zu berücksichtigen. – Vermillion

+0

Ist der Punkt außerhalb des Kreises auf derselben Ebene wie der Kreis? – Fogmeister

Antwort

2

Analytic Lösung:

Erstens: Machen Sie eine Projektion Ihrer Punkt auf der Ebene der Kreis in liegt: Wikipedia. Auf diese Weise wird das Problem 2D.

Zweitens: Zeichnen Sie eine Linie zwischen der Projektion und dem Mittelpunkt des Kreises. Wo Sie den Umfang überquert haben Sie Ihren Punkt

Mathematische Optimierung Lösung:

Wählen Sie drei optionale Punkte auf dem Umfang des Kreises und jede Entfernung zu Ihrem Punkt berechnen. Nimm den zwei Punkte mit dem kleineren Abstand.

Dann nehmen Sie einen neuen dritten Punkt, der genau zwischen diesen beiden Punkten (am Umfang) liegt und berechnen Sie den Abstand zu Ihrem Punkt.

Tun Sie dies, bis Sie einen Punkt haben, der nahe genug ist.

+0

Das ist eine großartige Lösung, danke! – Vermillion

+0

Uh, diese Optimierungslösung ist wahrscheinlich viel langsamer als die analytische Lösung. Denn sobald das Problem 2d ist, brauchst du nur den Winkel vom Mittelpunkt zum Punkt (atan (centery, centerx, spitz, pointx)), und dann lautet die Antwort: (centerx + radius * cos (angle), centery + radius * sin (winkel)) ' –

+0

Ja sicher. Ich wollte es nur hinzufügen, weil die Frage mit mathematischer Optimierung markiert wurde. – RomCoo

Verwandte Themen