Załóżmy, że mam zestaw współrzędnych x, y, które zaznaczają punkty wzdłuż konturu. Czy istnieje sposób, w jaki mogę zbudować reprezentację konturu krzywej, którą mogę ocenić w określonej pozycji wzdłuż jej długości i odzyskać interpolowane współrzędne X, Y?Gładka reprezentacja splajnu dowolnego konturu, f (długość) -> x, y
Często nie jest tak, że istnieje zgodność 1: 1 między wartościami X i Y, więc jednowymiarowe splajny nie są dla mnie dobre. Warianty dwuwymiarowe byłyby w porządku, ale o ile mogę powiedzieć, wszystkie funkcje do oceny binarnych splajnów w scipy.interpolate
pobierają x, y wartości i zwracają z, podczas gdy ja muszę podać z i zwracać x, y (ponieważ x, y to punkty na linii każdy z mapuje na unikalny x, y).
Oto szkic tego, co chciałbym być w stanie to zrobić:
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)
Nie rozumiem, w jaki sposób '' y' x' i tablice nie mogą mieć w stosunku 1: 1 korespondencja i wciąż definiuj punkty na krzywej ... Czy mógłbyś spróbować wyjaśnić, co masz na myśli na przykładzie? – Jaime
spróbuj naszkicować moje przykładowe współrzędne - w tym przypadku linia zakrzywia się na siebie, więc nie może być unikalnego odwzorowania z X -> Y lub z Y -> X –