Supponiamo di disporre di un insieme di coordinate x, y che contrassegnano i punti lungo il contorno. C'è un modo in cui posso costruire una rappresentazione spline del contorno che posso valutare in una posizione particolare lungo la sua lunghezza e recuperare le coordinate x, y interpolate?Rappresentazione spline uniforme di un contorno arbitrario, f (lunghezza) -> x, y
Spesso non è presente una corrispondenza 1: 1 tra i valori X e Y, quindi le spline univariate non mi sono utili. Le spline bivariate andrebbero bene, ma per quanto posso dire tutte le funzioni per la valutazione delle spline bivariate in scipy.interpolate
prendono i valori x, y e restituiscono z, mentre ho bisogno di dare z e restituire x, y (poiché x, y sono punti su una linea, ogni z si associa ad un unico x, y).
Ecco un abbozzo di quello che mi piacerebbe essere in grado di fare:
import numpy as np
from matplotlib.pyplot import plot
# x,y coordinates of contour points, not monotonically increasing
x = np.array([ 2., 1., 1., 2., 2., 4., 4., 3.])
y = np.array([ 1., 2., 3., 4., 2., 3., 2., 1.])
# f: X --> Y might not be a 1:1 correspondence
plot(x,y,'-o')
# get the cumulative distance along the contour
dist = [0]
for ii in xrange(x.size-1):
dist.append(np.sqrt((x[ii+1]-x[ii])**2 + (y[ii+1]-y[ii])**2))
d = np.array(dist)
# build a spline representation of the contour
spl = ContourSpline(x,y,d)
# resample it at smaller distance intervals
interp_d = np.linspace(d[0],d[-1],1000)
interp_x,interp_y = spl(interp_d)
Non capisco come il vostro '' x' e gli array y' non può avere un 1: 1 corrispondenza e ancora definire i punti su una curva ... Potresti provare a spiegare quello che hai in mente con un esempio? – Jaime
prova a tracciare le mie coordinate di esempio - in questo caso la linea curva su se stessa, quindi non ci può essere una mappatura univoca da X -> Y o da Y -> X –