C++中是否有与C#的Vector3相当的标准类?

8

想知道C++是否有类似于C#中的Vector2/3/4标准等效结构体?

编辑说明:对于XNA C# Vector2/3/4 "structures"(我不太确定它们是什么),它们基本上像在C++中定义的结构体一样,保存2、3或4个浮点值:

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

我一直使用C++中的那段代码,但是我希望能够找到一个标准的替代方案,但是我没有找到。


当询问这样的问题时,您需要解释Vector2是什么 - 许多C ++程序员对C#知之甚少。 - anon
啊,我会编辑它 - 抱歉我没有考虑到这一点,但我应该考虑到的。 - Joe.F
6个回答

6

哦,嗯,好吧,我只在使用C#时使用过XNA - 抱歉。不过还是谢谢 :) - Joe.F
@Joe:没问题。 只是让你知道一下 ;) 没有“标准”的Vector3等(尽管WPF在C#/.NET中包含了Vector3D:http://msdn.microsoft.com/en-us/library/system.windows.media.media3d.vector3d.aspx)。 - Reed Copsey
https://learn.microsoft.com/en-us/dotnet/api/system.numerics.vector3?view=netframework-4.8 - VollRahm

3

2
尽管在标准C++中没有Vector3的等效物,但有一些线性代数库可以使用。以下是一些非常小而快速的库:

谢谢回复!Eigen看起来非常有吸引力,我会去了解一下! - Joe.F

0

valarray<complex<T>> 可以在许多情况下像 Vector2 一样使用。对于 Vector3/4,我不知道有什么标准等效物。


谢谢,不幸的是我更需要3/4版本而不是2,但我之前不知道valarray,感谢您的知识! - Joe.F

0

我不相信在C++中有任何等效的“预制”对象。STL vector并不是同样的东西。那基本上是一个用于存储任何值类型的动态数组,而你所提到的向量是一个带有附加成员功能的类,通常在XNA图形应用程序中使用(至少在我的经验中是这样)。你对Vector2/3/4是数据结构的认识是正确的。你可以很容易地将W、X、Y、Z分量的值存储在自己的结构中,但是Vector2/3/4对象提供的附加成员函数需要由你添加。


这是我目前一直在使用的方法,但我希望有一个标准的替代方案。 Lou Franco 提供的链接看起来非常有帮助! - Joe.F

0

还有一些类似于XNA的C++ 3D图形库,例如Ogre3DIrrlicht等。但如果你只需要Vector3结构,可能会有点过度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接