+ /* collision detection with the head */
+ Vec3 normal = xform.upper3x3() * hair[i].spawn_dir;
+ Vec3 root = xform * hair[i].spawn_pt;
+ Vec3 dir = new_pos - root;
+
+ normal.normalize();
+
+ /* angle that will cause the hair to be rendered inside the head */
+ float d = dot(dir, normal);
+ if(d < 0) {
+ new_pos += -d * normal;
+ }
+
+ hair[i].pos = handle_collision(new_pos);