public Double2 RotScale(Double2 u) => new Double2(X * u.X - Y * u.Y, X * u.Y + Y * u.X);
public double DistanceTo(Double2 o) => (o - this).Length;
public double DistanceSquaredTo(Double2 o) => (o - this).LengthSquared;
public double Cross(Double2 o) => X * o.Y - Y * o.X;
public double Dot(Double2 o) => X * o.X + Y * o.Y;
public bool ContainsPoint(Double2 v) => X <= v.X && Y <= v.Y && X + Width >= v.X && Y + Height >= v.Y;