2010-08-10 4 views
7

Просто интересно, имеет ли C++ стандартный эквивалент Vector2/3/4 (структуры, которые я думаю?) В C#?Есть ли стандартный C++-эквивалент C# Vector3?

Edit: Для осветления XNA C# Vector2/3/4 "структуры" (я не совсем уверен, что они есть) в основном держать 2, 3 или 4 значения с плавающей точкой, как структуре в C++ определяется как:

struct Vector3 
{ 
    float x, y, z; 
}; 

Я в основном использовал только этот код на C++, но я надеялся на стандартную альтернативу и не смог его найти.

+0

Когда вы задаете такие вопросы, вам нужно объяснить, что такое Vector2 - многие программисты на C++ мало знают о C#. – 2010-08-10 15:51:28

+0

Ах, я отредактирую его - извините, я не думал об этом, но должен был. –

ответ

3

Ничего стандарт, я не знаю, но вот какой-то код, чтобы вы начали

http://www.flipcode.com/archives/Faster_Vector_Math_Using_Templates.shtml

Если вы используете C++/CLI и ориентации Windows, и .NET, вы можете использовать Vector2 и т.д.

+0

Эта ссылка на flipcode отличная, спасибо вам большое! –

0

A valarray<complex<T>> во многих случаях может использоваться как Vector2. Для Vector3/4 Я не знаю стандартного эквивалента.

+0

Спасибо, к сожалению, мне нужна версия 3/4 намного больше, чем 2, но я раньше не знал о valarray, спасибо за знания! –

5

Vector3 struct в C# - это XNA, а не библиотеки базового класса.

Уравновешенный в C++ будет использовать XMFLOAT3.

+0

О, хм, ну, я только использовал XNA, когда использовал C# - мои извинения. Спасибо, хотя :) –

+0

@Joe: проблем нет. Просто дайте вам знать;) Нет «стандартных» Vector3 и т. Д. (Хотя WPF включает Vector3D в C# /. NET: http://msdn.microsoft.com/en-us/library/system.windows.media.media3d .vector3d.aspx) –

0

Я не верю, что в C++ есть какие-то «консервированные» объекты, которые эквивалентны. STL vector - это не одно и то же. Это по существу динамический массив для хранения любых типов значений, тогда как вектор, к которому вы обращаетесь, относится к классу с добавленными функциональными возможностями, как правило, используется в графических приложениях XNA (по крайней мере, по моему опыту). Вы находитесь на чем-то с вашим признанием того факта, что Vector2/3/4 являются структурами данных. Вы можете очень легко сохранить значения компонентов W, X, Y, Z в своей собственной структуре, но добавленные функции-члены, снабженные объектом Vector2/3/4, должны быть добавлены вами.

+0

Это метод, который я использовал в настоящее время, но я надеялся на стандартную альтернативу. Ссылка, предоставленная Лу Франко, выглядит очень полезной! –

2

Хотя нет эквивалента Vector3 в стандарте C++ существует несколько библиотек линейной алгебры, которые имеют один. Некоторые, которые очень малы и быстро:

  • vmmlib - BSD-лицензии, написанные для совместимости OpenGL
  • Eigen - LGPL лицензией, но it won't make you change your license
  • GLM - MIT лицензии, написанный для имитации OpenGL Shading Language
+0

Спасибо за ответ! Эйген выглядит очень привлекательно, я посмотрю! –

0

Есть также несколько C++ 3D графических библиотек, похожих на XNA, такие как Ogre3D, Irrlicht и др. Может быть, немного перебор, если вам нужна структура Vector3.

Смежные вопросы