Ich habe diese Frage zu mathoverflow gepostet, aber ich möchte auch Ihre Meinung dazu wissen. Ich möchte eine Kurve zeichnen, die immer in einem bestimmten Abstand von der Normalen zur Oberfläche einer gegebenen Kurve liegt. Ich kenne die Formel der gegebenen Kurve (ein stückweise kubischer Spline). Das Problem scheint zu sein, wenn der Abweichungsabstand größer als der Radius der Kurve ist - die Punkte werden verwürfelt. Ist jemand auf ein solches Problem gestoßen? Gibt es eine schöne Lösung?
Danke für irgendwelche Ideen,
Iulian
SPÄTER: Das Problem wird unten von Herrn Wizard genau beschrieben.
BEARBEITEN: HINWEIS: Bei dieser Antwort geht es nicht darum, Eckenumbruch zu vermeiden (was eine Eigenschaft von strikt äquidistanten Kurven ist).
Nach Wikipedia ,
Die Kurve mit festem Versatz zu einer gegebenen Bézier-Kurve, die oft als Versatzkurve (wie der Versatz zwischen den Schienen einer Bahnstrecke) "parallel" zur ursprünglichen Kurve bezeichnet wird, kann nicht exakt durch eine Bézier-Kurve gebildet werden ( außer in einigen trivialen Fällen). Es gibt jedoch heuristische Methoden, die für praktische Zwecke meist eine adäquate Näherung liefern.
Es gibt also heuristische Methoden, die Sie verwenden müssen, um eine Approximation zu erhalten. Es gibt eine wissenschaftliche Arbeit mit dem Titel Vergleichen von Offset-Kurven-Approximationsmethoden einschließlich eines Vergleichs von 9 Algorithmen.
Wenn Sie die Recherche überspringen und nur eine Lösung finden möchten, werfen Sie einen Blick auf diese Blogbeitrag beschreibt eine Implementierung von De Casteljaus Algorithmus . EDIT: Ich muss zugeben, dass ich mir nicht sicher bin, wie sich diese Implementierung mit scharfen Kurven verhält.
Ich denke, Sie werden mit Ihrer Definition Probleme haben: "... zeichnen Sie eine Kurve, die immer in einem bestimmten Abstand von der Normalen zur Oberfläche einer gegebenen Kurve liegt."
Wenn Sie eine Reihe von Linien innerhalb einer konkaven Kurve zeichnen, wird sich die Linie an einem bestimmten Punkt zurückfalten und schließlich eine geometrische Inversion erzeugen.
Angewandt auf eine Ellipse, zum Beispiel:
Tags und Links algorithm language-agnostic computational-geometry spline