Algorithmus zum Ermitteln des Mittelpunkts einer Bezier-Kurve


8

Ich muss die Mitte einer Bezier-Kurve finden, um sie zu drehen. Ich habe eine Liste aller Punkte (Kontrollpunkte, Anfang und Ende, alle Punkte auf der Kurve selbst). Wie würde ich vorgehen, um das Zentrum zu finden?


4
Kurven sind mathematische Einheiten, für die sie keine Zentren als solche haben. Möglicherweise suchen Sie jedoch nach einem Bouding-Box-Zentrum, einem minimalen Bounding-Box-Zentrum, einem Schwerpunkt des geschlossenen Bereichs unter der Kurve, wenn Endpunkte verbunden sind, einem Schwerpunkt geschlossener Polybezer, einem Kurvenmittelpunkt, einem Kontrollpunktdurchschnitt usw.
joojaa

1
@joojaa Es gibt definitiv 2 natürliche Zentren, an die ich denken kann, eines ist der t=0.5Punkt. und zwei ist der geometrische Mittelpunkt bezüglich der kartesischen Reiseentfernung entlang der Linie.
v.oddou

1
@ v.oddou ja in der Tat gibt es noch viel mehr, deshalb muss die Frage geklärt werden. Alle Vektoranwendungen, die ich verwendet habe (Illustrator, Xara, Corel, Skizze usw.) Verwenden Sie die lokale Begrenzungsrahmenmitte, um Objekte zu drehen, sodass die anderen verwendeten Zentrumsdefinitionen nur selten angezeigt werden.
Joojaa

Antworten:


14

Bézier-Kurven sind mathematische Einheiten und haben keinen klar definierten Mittelpunkt. Man kann tatsächlich viele verschiedene Dinge als Zentrum der Bézier-Kurve definieren. Ich habe versucht, einige der möglichen Zentren in Bild 1 darzustellen. Mehr als das gibt es.

Geben Sie hier die Bildbeschreibung ein

Bild 1 : Einige der möglichen Zentren einer Bézier-Kurve mit einer Spannweite

In der Praxis verwenden fast alle zum Zeichnen ausgerichteten Grafikanwendungen die Mitte des lokalen Begrenzungsrahmens (BB) als Mittelpunkt. Animationssoftware verfügt normalerweise über ein zusätzliches Pivot-Konzept, sodass sie den Ask-User-Ansatz verwenden. Wenn keine Eingabe erfolgt, kehren sie häufig zum BB-Zentrum oder einfach zum lokalen Koordinatenzentrum zurück. Dies liegt wahrscheinlich daran, dass der BB ohnehin berechnet werden muss und es ziemlich einfach ist, sein Zentrum zu ermitteln (siehe A Primer on Bézier Curves ).

Die Schwerpunktmetriken sind auch etwas natürlich, insbesondere in einem Animationskontext, obwohl sie schwieriger zu berechnen sind. Am einfachsten ist es, die Daten zu diskretisieren und die Berechnung für die diskrete Eingabe durchzuführen. Dies besagt, dass einige geschlossene Lösungen für den Kurvenschwerpunkt möglich sind, aber es ist keine sehr schöne Gleichung, um sie zu formulieren und zu vereinfachen.

Dann haben wir die Punkte auf der Kurve: den Mittelpunkt nach Bogenlänge und den Punkt, an dem der Parameter 0,5 beträgt. In meinen Augen ist der Parameter oft problematisch, obwohl er leicht zu berechnen ist, und er verliert an Bedeutung, wenn Sie mehrere Béziers nacheinander für ein Polybézier verketten. Der Längenmittelpunkt ist natürlich nur natürlich, solange die Kurve nicht geschlossen ist.tt

Wir definieren auch andere mögliche Zentren, die Mitte könnte im Kurvenschwerpunkt des Rumpfes, im Durchschnitt der Kontrollpunkte oder im Kontrollkäfig-BB-Zentrum liegen. Obwohl diese in der Praxis nicht sehr gut zu funktionieren scheinen.

Bitte beachten Sie : Obwohl die Kurve in Bild 1 das BB-Zentrum ziemlich nahe an einigen natürlichen Zentren zeigt, ist dies bei komplexeren Kurven und insbesondere bei Polybéziers nicht immer der Fall.


3
Ich würde das nicht als Kommentar bezeichnen. Ich würde es eine ausgezeichnete Antwort nennen, die den aktuellen Wissensstand des Fragestellers anspricht, vollständig erklärt, warum die Frage breiter als erwartet ist, und den Weg für neue Fragen öffnet.
Trichoplax

@trichoplax könnte jedoch von den weniger höflichen als "Zentrum definieren" zusammengefasst werden.
Ratschenfreak

@ratchetfreak Ich bevorzuge Antworten, die versuchen, die Wissenslücke des Fragestellers zu identifizieren, anstatt zu erwarten, dass er das Thema, nach dem er fragt, vollständig versteht.
Trichoplax

Ich suche nach einer Möglichkeit, den DISTANCE MIDPOINT für meine Quad- und Cubic-Bezier-Kurven zu erhalten. Ich habe den t-Wert 0,5 verwendet und wie Sie sagten, habe ich gerade festgestellt, dass es problematisch ist. Was ich jetzt mit der Bezier-Berechnung versuche, ist, Bälle mit gleichmäßiger Geschwindigkeit zu bewegen. Aber die Verwendung des t-Werts macht es so schwierig. Ich denke, ich muss abhängig von der Bogenlänge die richtigen t-Werte finden. Irgendeine Ressource oder ein kleiner Hinweis für mich, bitte?
Jenix

2
Leider gibt es für Bezier keine einfache allgemeine Lösung in geschlossener Form, aber eine gute Ressource, die dies und mehr numerisch abdeckt, ist zu finden. Hier hart, ich habe heute bei der Arbeit gelesen, dass eine noch bessere Ressource darauf verlinken sollte, aber ich habe den Link nicht auf meinem Telefon. Aber vielleicht ist das genug @Jenix
joojaa

1

Center=14(P.0+P.1+P.2+P.3)
P.0P.1P.2P.3
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.