輪郭に沿って点をマークするx、y座標のセットがあるとします。その長さに沿った特定の位置で評価し、補間されたx、y座標を復元できる輪郭のスプライン表現を作成する方法はありますか?任意の等高線のスムーススプライン表示、f(長さ) - > x、y
X値とY値の間に1対1の対応があることはしばしばありません。したがって、単変量スプラインは私には良くありません。二変量スプラインは問題ありませんが、scipy.interpolate
で二変量スプラインを評価する関数のすべてに、x、yの値を返し、zを返す限り、zを返してx、yを返す必要があります(x、yは点ライン上では、各zは固有のx、yに写像する)。
ここで私が行うことができるようにしたいのですが何のスケッチです:
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)
私はあなたの 'X'と 'y'アレイは1を持つことができませんどのように理解していません。 1対応であり、まだカーブ上の点を定義しています...あなたはあなたが念頭に置いている例を説明しようと思いますか? – Jaime
私の例の座標をプロットしようとしてみてください - この場合、直線カーブ自体が戻ってくるので、X→YまたはY→Xからのユニークなマッピングはありません。 –