Heim >Backend-Entwicklung >Python-Tutorial >Wie können Daten mit einer kubischen Bézier-Kurve mit mehreren Segmenten angenähert werden, die durch Abstand und Krümmung eingeschränkt ist?
Approximieren von Daten mit einer mehrsegmentigen kubischen Bezier-Kurve mit Abstands- und Krümmungsbeschränkungen
Problemstellung:
Das Ziel besteht darin, gegebene geografische Datenpunkte mit einer mehrsegmentigen kubischen Bezier-Kurve unter zwei Einschränkungen anzunähern:
Lösung:
Es wird eine zweistufige Lösung vorgeschlagen:
Erstellen Sie eine B-Spline-Näherung:
B-Spline in Bezier-Kurve konvertieren:
Codebeispiel:
Hier ist ein Python-Snippet, das den Ansatz demonstriert:
<code class="python">import matplotlib.pyplot as plt import numpy as np from scipy import interpolate # Assume the data points are stored in lists x and y. # Create B-spline approximation tck, u = interpolate.splprep([x, y], s=3) # Adjust s parameter for smoothness # Generate new parameter values for plotting unew = np.arange(0, 1.01, 0.01) # Evaluate B-spline at new parameter values out = interpolate.splev(unew, tck) # Convert B-spline to Bezier curve bezier_points = b_spline_to_bezier_series(tck) # Plot the data points, B-spline, and Bezier curve plt.figure() plt.plot(x, y, out[0], out[1], *bezier_points) # Replace * with individual Bezier curves plt.show()</code>
Hinweis:
Die Lösung priorisiert Glätte vor Genauigkeit. Für engere Näherungen kann es erforderlich sein, eine gewisse Glätte in Kauf zu nehmen, um sicherzustellen, dass die Abstandsbeschränkung eingehalten wird.
Das obige ist der detaillierte Inhalt vonWie können Daten mit einer kubischen Bézier-Kurve mit mehreren Segmenten angenähert werden, die durch Abstand und Krümmung eingeschränkt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!