123456789101112131415161718192021222324252627 |
- """Spline three points in space"""
- from vedo import *
- pts = [[0,0,0],
- [0.5,0.6,0.8],
- [1,1,1]]
- gpts = Points(pts, r=10).c('green',0.5)
- # Create a spline where the final points are more dense (easing)
- line = Spline(pts, easing="OutCubic", res=100)
- vpts = line.clone().point_size(3).shift(0,0.1,0) # a dotted copy
- # Calculate positions as a fraction of the length of the line,
- # being x=0 the first point and x=1 the last point.
- # This corresponds to an imaginary point that travels along the line
- # at constant speed:
- equi_pts = Points([line.eval(x) for x in np.arange(0,1, 0.1)]).c('blue')
- redpt = Point(r=25).c('red')
- plt = show(vpts, gpts, line, redpt, equi_pts, axes=1, interactive=0)
- # Animation
- pts = line.points
- for i in range(line.npoints):
- redpt.pos(pts[i]) # assign the new position
- plt.render()
- plt.interactive().close()
|