fix Vec2: swap perp/rperp. Split rotate/rotateFrom