2010-08-10 15 views
7

Ich frage mich nur, ob C++ in C# ein Standard-Äquivalent von Vector2/3/4 (Strukturen, denke ich?) Hat?Gibt es ein Standard-C++ -Äquivalent von C# 's Vector3?

Edit: Zur Verdeutlichung eines XNA C# Vector2/3/4 "Strukturen" (Ich bin nicht ganz sicher, was sie sind) im Grunde hält 2, 3 oder 4 Float-Werte wie ein struct in C++ wie folgt definiert:

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

Ich habe im Grunde nur diesen Code in C++ verwendet, aber ich hatte auf eine Standardalternative gehofft und konnte keine finden.

+0

Wenn Sie Fragen wie diese stellen, müssen Sie erklären, was ein Vector2 ist - viele C++ - Programmierer wissen wenig über C#. –

+0

Ah, ich werde es bearbeiten - Entschuldigung, ich hatte nicht darüber nachgedacht, aber ich hätte es tun sollen. –

Antwort

0

Ein valarray<complex<T>> könnte in vielen Fällen wie ein Vector2 verwendet werden. Für Vector3/4 kenne ich kein Standardäquivalent.

+0

Danke, leider brauche ich eine 3/4 Version viel mehr als eine 2, aber vorher hatte ich noch nichts über Valarray gewusst, danke für das Wissen! –

5

Die Vector3 struct in C# stammt von XNA, nicht die Basisklassenbibliotheken.

Das Equivalent in C++ wäre XMFLOAT3 zu verwenden. Wenn Sie mit C++/CLI und Targeting von Windows und .NET können Sie verwenden Vector2 usw.

+0

Oh, hmm, ich habe nur XNA benutzt, als ich C# benutzt habe - meine Entschuldigung. Danke aber :) –

+0

@Joe: Kein Problem. Lass dich einfach wissen;) Es gibt kein "Standard" Vector3, etc. (WPF enthält jedoch Vector3D in C# /. NET: http://msdn.microsoft.com/en-us/library/system.windows.media.media3d .vector3d.aspx) –

0

Ich glaube nicht, dass es "Canned" -Objekte in C++ gibt, die äquivalent sind. Die STL vector ist nicht das Gleiche. Das ist im Wesentlichen ein dynamisches Array für die Speicherung beliebiger Werttypen, während der Vektor, auf den Sie sich beziehen, eine Klasse mit zusätzlicher Elementfunktionalität ist, die normalerweise in XNA-Grafikanwendungen verwendet wird (meiner Erfahrung nach zumindest). Sie befinden sich in der Erkenntnis, dass Vector2/3/4 Datenstrukturen sind. Sie könnten die Werte der W-, X-, Y-, Z-Komponenten sehr einfach in Ihrer eigenen Struktur speichern, aber die zusätzlichen Elementfunktionen, die mit dem Vector2/3/4-Objekt bereitgestellt werden, müssten von Ihnen hinzugefügt werden.

+0

Das ist die Methode, die ich momentan benutze, aber ich hatte die Hoffnung auf eine Standardalternative. Der Link von Lou Franco scheint sehr hilfreich zu sein! –

2

Obwohl es in Standard C++ kein Äquivalent zu Vector3 gibt, gibt es mehrere lineare Algebra-Bibliotheken, die eine haben. Einige, die sehr klein sind und schnell:

+0

Danke für die Antwort! Eigen sieht sehr attraktiv aus, ich schaue hinein! –

0

Es gibt auch mehrere C++ 3D-Grafikbibliotheken ähnlich wie XNA, wie Ogre3D, Irrlicht und andere. Könnte ein bisschen ein Overkill sein, wenn Sie nur die Vector3 Struktur benötigen.

Verwandte Themen