硅quelqu'un peut m'expliquer utiliser拉fonction scipy.interpolate评论
AVEC恩主菜UNE意甲日点(X,Y)
等连接出击拉courbe立方
留言Merci!
这是在使用的代码:
import fmeobjects class CubicBezierCurveReplacer(object): def __init__(self): self.set_coefficients(32) def set_coefficients(self, n): self.n = n r = 1.0 / float(self.n) s = range(0, self.n) self.k0 = [(1.0 - (r * m))**3 for m in s] self.k1 = [3.0 * (r * m) * (1.0 - r * m)**2 for m in s] self.k2 = [3.0 * (1.0 - (r * m)) * (r * m)**2 for m in s] self.k3 = [(r * m)**3 for m in s] def bezier_coords(self, p): coords = [] x0, x1, x2, x3 = p[0][0], p[1][0], p[2][0], p[3][0] y0, y1, y2, y3 = p[0][1], p[1][1], p[2][1], p[3][1] for i in range(1, self.n): x = self.k0[i] * x0 + self.k1[i] * x1 + self.k2[i] * x2 + self.k3[i] * x3 y = self.k0[i] * y0 + self.k1[i] * y1 + self.k2[i] * y2 + self.k3[i] * y3 coords.append((x, y)) return coords def input(self, feature): # If the number of coordinates is less than 2, return nothing.如果feature.numCoords()<2:回归#获取输入要素作为控制点的所有坐标。点= feature.getAllCoordinates()#追加坐标而(数目的控制点 - 1)#是不能被3整除。而(LEN(点) - 1)%3 = 0:!points.append(点[-1])#创建三次贝塞尔曲线。贝塞尔= feature.cloneAttributes();bezier.setGeometryType(fmeobjects.FME_GEOM_LINE)bezier.setCoordSys(feature.getCoordSys())bezier.addCoordinate(点[0] [0],点[0] [1]),其中i在范围(3,LEN(点), 3): bezier.addCoordinates(self.bezier_coords(points[i - 3 : i + 1])) bezier.addCoordinate(points[i][0], points[i][1]) self.pyoutput(bezier) def close(self): pass
在PythonCaller的设置:
PythonCaller [PythonCaller 4版]参数:Python的脚本:...类或函数来处理特性:CubicBezierCurveReplacer高级:属性揭露:属性要隐藏:列表来隐藏:
AVEC乐泛化乐加PROCHE阙J'AItrouvé花莲AVEC NURBfit(平滑)
恩胭脂,MAIS CA NE我PAS无限便捷COMME拉courbe NE过时PAS比肩莱sommets
恩cherchant DES exemples蟒蛇瞧CE阙J'AI trouve
AVEC乐resultat阙JE voudrais obtenir(立方)
面值为例拉fonction spicy.interpolate
MAIS JE NE最高审计机关PAS LA mettre EN作品丹斯pythoncaller
MERCI!
VOUS pouvez essayer乐代码蟒蛇丹斯L'例如ICI:https://knowledge.亚搏在线safe.com/questions/2706/create-cubic-bezier-curves.html
勒泛化选项Nurbfit利用未算法B样条魁出了点seulement LES点德登场等鳍COMME控制,MAIS过时PAS河畔TOUS LES点内饰,n'importe乐degrepolynôme。