- Vector local(sn.position.x-position.x, sn.position.y-position.y, sn.position.z-position.z);
- float c = cos(rotation);
- float s = sin(rotation);
- local = Vector(c*local.x+s*local.y, c*local.y-s*local.x, local.z);
-
- TrackPoint tp = type.get_nearest_point(local);
- Vector d(local.x-tp.pos.x, local.y-tp.pos.y, local.z-tp.pos.z);
- if(d.x*d.x+d.y*d.y+d.z*d.z<=limit*limit)
+ Vector local = rotated_vector(sn.position-position, -rotation);
+
+ OrientedPoint np = type.get_nearest_point(local);
+ Vector span = local-np.position;
+ if(dot(span, span)<=limit*limit)