bsplinecurve b1 3 5 0 4 1 1 2 1 3 1 4 4 0 0 0 1 1 0.5 0 1 2 1 0 1 2 2 0 1 3 1.5 0 1 4 1.5 0 1 5 2 0 1 cvalue b1 2.0 x y z dx dy dz set delta 0.01 point p1 x y z set dyvalue [dval dy] set dzvalue [dval dz] repeat 100 { cmovetangent b1 2.0 x y z dx $dyvalue $dzvalue 1 set dyvalue [expr $dyvalue + $delta ] set dzvalue [expr $dzvalue + $delta ] repaint } renamevar b1 result set length 7.238501337474319