2016-11-26 2 views
1

Der Betrieb im Titel erwähnt ist in vielen Computer Aided Design (CAD) Software wie AutoCAD üblich, wo es Filet genannt wird. Ich fand es jedoch sehr schwierig, diese Funktion in meinem eigenen Programm zu implementieren.ein Kreisbogen tangiert zwei Kurven mit bestimmtem Radius Erstellen

Verfahren I gedacht ist, die Bedingung zu verwenden, dass die Abstände der Lichtbogenmitte zu den Tangenten der Kurven mit dem angegebenen Radius gleich sind. Bedenken man, dass sie tatsächliche Kurven mit stückweise nichtlinearen Funktionen definiert, und die Kontaktstellen könnten überall auf der Kurve sein, ist es nicht einfach, die Lösung zu erhalten. Irgendwelche guten Ideen?

+0

Sie haben Recht, es ist nicht einfach, aber es ist wirklich ein Programmierproblem? –

+0

Sorry, ich bin mir nicht sicher, wie ich dieses Problem klassifizieren soll, aber ich möchte diese Funktion wirklich durch Programmieren realisieren. – user1446072

+0

Sie müssen zuerst eine Formel/Gleichung aufstellen, dann ist es ein Programmierproblem. Aber das Ableiten der Gleichung ist reine Mathematik. –

Antwort

0

Vorausgesetzt, dass Sie beschreiben nicht die Eigenschaften der Kurven in genug Details, ist es schwer, mit einem bestimmten/angegebenen algo kommen, aber lassen Sie sich einen beschreibenden Ansatz versuchen:

einen Kreis der gegebenen nehmen Radius und rollen Sie es auf einer Kurve, bis der Kreis den anderen berührt.

Ich nehme an, Sie können Kurven parametrieren.

Um den Kreis entlang der Kurve zu "rollen", benötigen Sie die Tangente (oder besser gesagt die Normale, die natürlich senkrecht zur Tangente ist) im Punkt "Rollbahnkurve" - ​​zum Kreistangentenpunkt. Sie haben dies normal, Sie kennen den Radius, Sie können Ihren Kreis berechnen. Sie haben den Kreis, Sie können sehen, ob/wo es die andere Kurve schneidet.

Die Idee des "Rollens" besteht darin, Ihre Lösung (Parameter des Tangentialpunkts auf einer Kurve) zwischen einem Punkt, an dem der Kreis die andere Kurve nicht schneidet, und einem anderen Punkt, an dem er sich schneidet, einzukreisen (möglich in mehr als 1 Punkt). Sobald Sie die Klammer haben, gehen Sie mit einer bisection method (binäre Suche) zwischen den zwei Positionen, bis Ihr Kreis "Tangente genug" zu der anderen Kurve wird (dh die Schnittpunkte mit der anderen Kurve sind so nahe, dass sie unter Ihre akzeptable Epsilon fallen).

Sie haben jetzt zwei Punkte (einen auf jeder Kurve) und den Kreis, der die Lösung realisiert: Halten Sie den Bogen auf diesem Kreis entsprechend, was sinnvoll ist (basierend auf der Konvergenz oder Divergenz der beiden Tangenten).

+0

Zuerst, vielen Dank für Ihre ausführliche Antwort, und Entschuldigung für die Bereitstellung von spezifischen Daten, denn das ist wirklich ein allgemeines Problem. Tatsächliche gefundene Kurven sind in der Regel Splines wie kubische Splines oder NURBS. Es scheint, dass der von Ihnen vorgeschlagene Ansatz auch zur Lösung nichtlinearer Gleichungen führt. Vielleicht ist dies wegen der Allgemeinheit dieses Problems unvermeidlich. – user1446072

+0

@ user1446072 Ja, die Gleichungen sind nicht linear in allen, aber die einfachsten Fälle und müssen numerisch gelöst werden, –

+0

Sie können die Koordinaten (x1, y1) des Mittelpunkts des Kreises tangential zu einer der Kurven als eine Funktion aufschreiben des Kurvenparameters. Sie können dann die Koordinaten (x2, y2) des Mittelpunkts des Kreises tangential zur anderen Kurve als Funktion des Kurvenparameters aufschreiben. Stellen Sie nun die zwei Punkte gleich. Sie haben zwei Gleichungen (x1 (t1) = x2 (t2), y1 (t1) = y2 (t2)) von zwei Variablen t1, t2. Sie können es mit jeder numerischen Methode lösen. –

0

Um die Bogenmitte Sie Algorithmen benötigen zwei robuste und strategische zu finden:

  1. Curve Offset
  2. Kurve Kreuzung

Welche AutoCAD hat der Bogenmitte zu finden ist, die beiden Kurven zu kompensieren des Bogenradius Abstand und schneiden sie. Abhängig von der Kurvenoffset-Richtung können Sie einfach zwischen allen möglichen Lösungen für das Problem wechseln.

An diesem Punkt ist das Trimmen der Kurven an Tangentenpunkten trivial.

Verwandte Themen