沿曲线螺旋

曲线上的螺旋 small.gif

下载臀部:文件:spiral_along_curve.hip

聪明人HowieM的提示导致了这个令人愉快的干净设置。该曲线具有来自重采样的@curveu,以及用于生成法线、切线、双切线(存储为@N、@t、@bt)的多边形。

每个点都沿着@N 移动,但首先我们围绕切线@t 旋转@N。通过随时间和@curveu 控制旋转量,我们可以生成螺旋线。

因为除了练习之外,我最近一直在做很多四元数的事情,所以我使用 qrotate 函数完成了这项工作。添加了混合香料的一些随机偏移的能力。

  1. float speed, angle, rand;
  2. vector dir;
  3. vector4 q;
  4. dir = @N;
  5. speed = @Time * ch('speed');
  6. angle = speed+@curveu*ch('spirals');
  7. q = quaternion(v@t*angle);
  8. dir = qrotate(q, dir);
  9. rand = 1+rand(@ptnum)*ch('rand_offset');
  10. @P += dir*ch('offset')*rand;