added Vector2::dotProduct