Хотя может быть дополнительное время выполнения при приведении по сравнению с созданием точки, такой как Point (myVector2.X, myVector2.Y), последствия, скорее всего, слишком малы, чтобы вы когда-либо заметили (как правило, следует избегать преждевременной оптимизации)
Выберите то, что выглядит самым чистым и простым в обслуживании. Если бы это был я, я бы, вероятно, просто создал новую точку в вызове метода...
Вы также можете написать метод расширения.
public static Point Origin(this Vector2 v)
{
//original proposal
//return new Point( (int)v.X, (int)v.Y );
//better! does correctly round the values
return new Point( Convert.ToInt32(v.X), convert.ToInt32(v.Y));
}
Тогда вы могли бы сделать что-то вроде этого rect.Contains(vec.Origin)
Тем не менее, кое-что следует помнить: этот метод на самом деле не проверяет, содержится ли вектор в прямоугольнике, он проверяет только начало координат. Помните, что вектор — это направление и величина.
person
Justin Self
schedule
21.01.2012