Données approximatives avec une courbe de Bézier cubique multi-segments avec contraintes de distance et de courbure
Énoncé du problème :
L'objectif est d'approcher des points de données géographiques donnés avec une courbe de Bézier cubique multi-segments sous deux contraintes :
Solution :
Une solution en deux étapes est proposée :
Créer une approximation B-Spline :
Convertir une B-Spline en courbe de Bézier :
Exemple de code :
Voici un extrait Python démontrant l'approche :
<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>
Remarque :
La solution donne la priorité à la fluidité plutôt qu'à la précision. Pour des approximations plus serrées, il peut être nécessaire de faire un compromis sur la douceur pour garantir que la contrainte de distance est respectée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!