2010-08-10 24 views
7

Solo me pregunto si C++ tiene un equivalente estándar de Vector2/3/4 (¿estructuras, creo?) En C#?¿Hay un equivalente estándar de C++ del Vector3 de C#?

Editar: Para mayor claridad una XNA C# Vector2/3/4 "estructuras" (no estoy del todo seguro de lo que son) básicamente sostienen 2, 3, o 4 valores de coma flotante como una estructura en C++ define como:

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

Básicamente he estado usando solo ese código en C++, pero esperaba una alternativa estándar y no pude encontrar una.

+0

Al hacer preguntas como esta, debe explicar qué es un Vector2: muchos programadores de C++ saben poco sobre C#. –

+0

Ah, lo editaré, lo siento, no había pensado en eso, pero debería haberlo hecho. –

Respuesta

0

A valarray<complex<T>> podría usarse como un Vector2 en muchos casos. Para Vector3/4 no conozco un equivalente estándar.

+0

Gracias, desafortunadamente, necesito una versión 3/4 mucho más que un 2, pero no había sabido antes sobre valarray, ¡gracias por el conocimiento! –

5

El Vector3 struct en C# es de XNA, no las bibliotecas de la clase base.

El equivalente en C++ sería usar XMFLOAT3.

+0

Oh, mmm, bueno, solo usé XNA cuando estaba usando C# - mis disculpas. Gracias, sin embargo :) –

+0

@Joe: No hay problema. Solo para que lo sepa;) No hay Vector3 "estándar", etc. (Aunque WPF incluye Vector3D en C#/.NET: http://msdn.microsoft.com/en-us/library/system.windows.media.media3d .vector3d.aspx) –

0

No creo que existan objetos "enlatados" en C++ que sean equivalentes. El STL vector no es lo mismo. Esencialmente, es una matriz dinámica para el almacenamiento de cualquier tipo de valor, mientras que el vector al que se refiere es de clase con funcionalidad de miembro añadida, que normalmente se utiliza en las aplicaciones gráficas XNA (al menos en mi experiencia). Usted está en algo con su reconocimiento del hecho de que Vector2/3/4 son estructuras de datos. Podrías almacenar fácilmente los valores de los componentes W, X, Y, Z en tu propia estructura, pero necesitarías agregar las funciones agregadas del miembro provistas con el objeto Vector2/3/4.

+0

Ese es el método que he estado usando actualmente, pero tenía la esperanza de una alternativa estándar. ¡El enlace proporcionado por Lou Franco parece ser muy útil! –

2

Aunque no hay equivalente a Vector3 en estándar C++, hay varias bibliotecas de álgebra lineal que tienen una. Algunos que son muy pequeños y rápidos:

+0

¡Gracias por la respuesta! Eigen se ve muy atractivo, ¡lo investigaré! –

0

también hay varias bibliotecas C++ 3D gráficos similares a XNA, tales como Ogre3DIrrlicht, y otros. Puede ser un poco exagerado si solo necesitas la estructura Vector3.

Cuestiones relacionadas