3

我发现 .NET 框架中有两个不同的矢量类实现:Microsoft.DirectX.Vector3 和 Microsoft.XNA.Framework.Vector3。

查看成员方法,它们提供几乎相同的功能,所以我很困惑.. 通常推荐哪些类?

我的程序不需要可视化 3D 对象,而只需要计算具有 3D 点的 CPU 密集型作业。

4

2 回答 2

1

.NET Framework 4.6 System.Numerics.Vectors开始引入了支持 SIMD 的类型:

  • Vector2,Vector3Vector4
  • Vector<T>T型任意长度
  • Quaternion
  • Plane
  • Matrix4x4Matrix3x2

(在System.Numerics.Vectors.dll中)

如果您使用的是 DirectX 或 XNA,您应该坚持使用它们提供的类。

对于可以使用 .NET 4.6 或更高版本的新项目,这是可行的方法。

于 2016-01-18T01:27:59.053 回答
0

更新 06/2016 此答案最初是在 .NET 4.6 可用之前编写的,因此当时 System.Numerics.Vectors.dll 不存在。从那时起,System.Numerics.Vectors.dll 为使用 BCL 中定义的类型提供了强大的动力

根据您将使用的框架,您将需要使用相应的结构。否则它们非常相似并且都是值类型。

在两个不同的命名空间/程序集中存在相同类型对象的两种实现的原因是,如果一个引用另一个,则会在程序集之间创建一个依赖关系,否则这是不必要的。

如果您不打算使用 DirectX 或 XNA,那么您可以选择其中任何一个。但在这种情况下,您可能应该使用 System.Numerics.Vectors.dll 中定义的新结构,正如@JBeurer 在他的回答中提到的那样。

于 2013-02-25T02:37:50.077 回答