static public VectorF2 GetTowards(this VectorF2 item, VectorF2 target, float amount) { return(item.GetTowards( target, item.GetDirection(target) * amount )); }
static public bool GetMoveTowards(this VectorF2 item, VectorF2 target, float amount, out VectorF2 output) { return(item.GetMoveTowards( target, item.GetDirection(target) * amount, out output )); }
static public VectorF2 GetProjectedPointOntoLineSegment(this VectorF2 item, VectorF2 target, VectorF2 point) { VectorF2 direction = item.GetDirection(target); float point_projection = direction.GetDot(point - item); float item_projection = 0.0f; float target_projection = direction.GetDot(target - item); return(direction * point_projection.BindBetween(item_projection, target_projection) + item); }
static public IEnumerable <VectorF2> Range(VectorF2 start, VectorF2 end, float step, bool include_end) { float distance; VectorF2 direction = start.GetDirection(end, out distance); int divisions = (int)(distance / step).GetAbs(); if (include_end) { divisions++; } return(Ray(start, direction * (distance / divisions), divisions)); }
static public VectorF2 GetProjectedPointOntoLine(this VectorF2 item, VectorF2 target, VectorF2 point) { VectorF2 direction = item.GetDirection(target); return(direction * direction.GetDot(point - item) + item); }