public Vector2f Lerp(Vector2f target, float alpha) { Vector2f r = this.Mul(1.0f - alpha); r.Add(target.Tmp().Mul(alpha)); return(r); }
public static Vector2f GetVelocity(Vector2f velocity, Vector2f force, float mass) { Vector2f acceleration = new Vector2f(force.GetX() / mass, force.GetY() / mass); velocity.Add(acceleration); return velocity; }
public bool Intersects(Line other) { Vector2f lineSegmentStart = new Vector2f(other.GetX1(), other.GetY1()); Vector2f lineSegmentEnd = new Vector2f(other.GetX2(), other.GetY2()); Vector2f circleCenter = new Vector2f(GetCenterX(), GetCenterY()); Vector2f closest; Vector2f segv = lineSegmentEnd.Sub(lineSegmentStart); Vector2f ptv = circleCenter.Sub(lineSegmentStart); float segvLength = segv.Len(); float projvl = ptv.Dot(segv) / segvLength; if (projvl < 0) { closest = lineSegmentStart; } else if (projvl > segvLength) { closest = lineSegmentEnd; } else { Vector2f projv = segv.Mul(projvl / segvLength); closest = lineSegmentStart.Add(projv); } bool intersects = circleCenter.Sub(closest).LengthSquared() <= GetRadius() * GetRadius(); return(intersects); }
public static Vector2f GetVelocity(Vector2f velocity, List<Vector2f> forces) { foreach (Vector2f v in forces) { velocity.Add(v); } return velocity; }
public static Vector2f Sum(IList <Vector2f> summands) { Vector2f result = new Vector2f(0, 0); for (IEnumerator <Vector2f> it = summands.GetEnumerator(); it.MoveNext();) { Vector2f v = it.Current; result.Add(v); } return(result); }
public bool Intersects(Line other) { Vector2f lineSegmentStart = new Vector2f(other.GetX1(), other.GetY1()); Vector2f lineSegmentEnd = new Vector2f(other.GetX2(), other.GetY2()); Vector2f circleCenter = new Vector2f(GetCenterX(), GetCenterY()); Vector2f closest; Vector2f segv = lineSegmentEnd.Sub(lineSegmentStart); Vector2f ptv = circleCenter.Sub(lineSegmentStart); float segvLength = segv.Len(); float projvl = ptv.Dot(segv) / segvLength; if (projvl < 0) { closest = lineSegmentStart; } else if (projvl > segvLength) { closest = lineSegmentEnd; } else { Vector2f projv = segv.Mul(projvl / segvLength); closest = lineSegmentStart.Add(projv); } bool intersects = circleCenter.Sub(closest).LengthSquared() <= GetRadius() * GetRadius(); return intersects; }
public static Vector2f Sum(Vector2f a, Vector2f b) { Vector2f answer = new Vector2f(a); return(answer.Add(b)); }
public static Vector2f Sum(Vector2f a, Vector2f b) { Vector2f answer = new Vector2f(a); return answer.Add(b); }
public static Vector2f Sum(IList<Vector2f> summands) { Vector2f result = new Vector2f(0, 0); for (IEnumerator<Vector2f> it = summands.GetEnumerator(); it.MoveNext(); ) { Vector2f v = it.Current; result.Add(v); } return result; }
public static Vector2f GetVelocity(Vector2f velocity, Vector2f force) { velocity.Add(force); return velocity; }