【问题标题】:Is there a standard C++ equivalent of C#'s Vector3?是否有与 C# 的 Vector3 等效的标准 C++?
【发布时间】:2010-08-10 15:42:53
【问题描述】:

只是想知道 C++ 是否具有与 C# 中的 Vector2/3/4(我认为是结构?)等效的标准?

编辑:为澄清起见,XNA C# Vector2/3/4“结构”(我不完全确定它们是什么)基本上包含 2、3 或 4 个浮点值,如 C++ 中定义为的结构:

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

我基本上只在 C++ 中使用该代码,但我希望有一个标准的替代方案,但找不到。

【问题讨论】:

  • 在问这样的问题时,你需要解释一下 Vector2 是什么——许多 C++ 程序员对 C# 知之甚少。
  • 啊,我会编辑它 - 抱歉,我没有想到,但我应该有。

标签: c# c++ xna


【解决方案1】:

C# 中的Vector3 struct 来自 XNA,而不是基类库。

C++ 中的等价物是使用XMFLOAT3

【讨论】:

【解决方案2】:

我不知道任何标准,但这里有一些代码可以帮助您入门

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

如果您使用 C++/CLI 并针对 Windows 和 .NET,则可以使用 Vector2 等。

【讨论】:

    【解决方案3】:

    虽然在标准 C++ 中没有与 Vector3 等效的东西,但有几个线性代数库都有一个。有些非常小而且速度很快:

    【讨论】:

    • 感谢您的回复! Eigen 看起来很有吸引力,我去研究一下!
    【解决方案4】:

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

    【讨论】:

    • 谢谢,不幸的是,我需要的 3/4 版本比 2 多得多,但我以前不知道 valarray,谢谢你的知识!
    【解决方案5】:

    我不相信 C++ 中有任何“罐装”对象是等价的。 STL vector 不是一回事。这本质上是一个用于存储任何值类型的动态数组,而您所指的向量是具有附加成员功能的类,通常在 XNA 图形应用程序中使用(至少根据我的经验)。当您认识到 Vector2/3/4 是数据结构这一事实时,您正在做一些事情。您可以很容易地将 W、X、Y、Z 组件的值存储在自己的结构中,但是 Vector2/3/4 对象提供的添加的成员函数需要您自己添加。

    【讨论】:

    • 这是我目前一直在使用的方法,但我希望有一个标准的替代方案。不过,Lou Franco 提供的链接看起来很有帮助!
    【解决方案6】:

    还有几个类似于XNA的C++ 3D图形库,如Ogre3DIrrlicht等。如果您只需要 Vector3 结构,可能有点过头了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 2017-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      相关资源
      最近更新 更多