XNA - Почему это использует Vector2 и не Точку?

Я привык к графике WinForms, но я баловался XNA, и одна вещь, которую я заметил, состоит в том что Point объект не очень полезен, и, кажется, не используется очень. Для расположения, различного SpriteBatch Привлеките использование методов любой a Rectangle или a Vector2. И Vector2 имеет много полезных статических методов и методов экземпляра, тогда как Point не имеет в основном ничего кроме свойств X and Y.

Почему XNA использует a Vector2 представить положение вместо a Point? Я понимаю, что у них обоих есть X и Y, но семантически и логически, с помощью a Vector2 вместо a Point представить местоположение не имеет никакого смысла мне. (Например, если Вы нормализуете Vector2, внезапно Вы имеете другое расположение!)

Действительно ли это столь странно, как это кажется, или я пропускаю что-то?

10
задан Ryan Lundy 7 February 2010 в 06:11
поделиться

4 ответа

Даже если предположить, что Point использовали значения с плавающей запятой, какой смысл вы дали бы «сложению двух точек»? Теперь добавление векторов для обновления позиций - это хорошо понимаемая и широко используемая концепция, поэтому векторы лучше соответствуют описанию позиций и скоростей в виртуальном мире.

17
ответ дан 3 December 2019 в 17:20
поделиться

Основная причина ... Vector2 использует числа с плавающей запятой и поля вместо свойств. Это делает его более точным и эффективным, чем Point, который использует целые числа и свойства.

0
ответ дан 3 December 2019 в 17:20
поделиться

На определенном уровне вам просто нужен набор чисел. Выше вы можете применить некоторые абстракции и структуру к этим кортежам. Однако, будучи высокопроизводительной математической библиотекой, XNAMath оставляет эту работу на ваше усмотрение.

0
ответ дан 3 December 2019 в 17:20
поделиться

Семантически нет большой разницы между вектором и точкой; они оба представляют смещение от начала координат в некоторой декартовой системе координат. Преимущество векторов в том, что они имеют больше структуры (масштабирования, сложения и т. Д.), Чем точек.

Например, вы можете захотеть найти смещение одного объекта от другого: это просто разность векторов между их соответствующими векторами положения. Они также более универсальны в представлении других величин, таких как скорость. Например, вы можете рассчитать положение объекта с положением r и скоростью v после временного интервала t ; используя векторы, это можно вычислить просто как r + t * v .

Ваш пример нормализации может быть полезен, если вы хотите указать направление к объекту от начала координат (или какой-либо другой точки).

3
ответ дан 3 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: