12345678910111213141516171819202122232425262728 |
- """Forward kinematics: hover the mouse to drag the chain"""
- from vedo import Plotter, versor, Plane, Line
- n = 15 # number of points
- l = 3 # length of one segment
- def func(evt):
- if not evt.object:
- return
- coords = line.points
- coords[0] = evt.picked3d
- for i in range(1, n):
- v = versor(coords[i] - coords[i-1])
- coords[i] = coords[i-1] + v * l
- line.points = coords # update positions
- nodes.points = coords
- plt.render()
- surf = Plane(s=[60, 60])
- line = Line([l*n/2, 0], [-l*n/2, 0], res=n, lw=12)
- line.render_lines_as_tubes()
- nodes= line.clone().c('red3').point_size(15)
- plt = Plotter()
- plt.add_callback("on mouse move please call", func)
- plt.show(surf, line, nodes, __doc__, zoom=1.3)
- plt.close()
|