3

I found there are two differenct implementations of a vector class in .NET framework: Microsoft.DirectX.Vector3 and Microsoft.XNA.Framework.Vector3.

Looking at member methods, they provide almost the same functionality so I am confusing.. Which of those classes are generally recommended?

My program does not need to visualize 3D objects but only need to compute CPU-intensive jobs with 3D points.

4

2 に答える 2

1

.NET Framework 4.6 以降では、 System.Numerics.VectorsSIMD 対応型が導入されています。

  • Vector2Vector3および Vector4
  • Vector<T>型 T の任意の長さ
  • Quaternion
  • Plane
  • Matrix4x4Matrix3x2

( System.Numerics.Vectors.dll内)

DirectX または XNA を使用している場合は、それらが提供するクラスに固執する必要があります。

.NET 4.6 以降を使用できる新しいプロジェクトの場合、これが適切な方法です。

于 2016-01-18T01:27:59.053 に答える
0

UPDATE 06/2016 この回答はもともと.NET 4.6が利用可能になる前に書かれたもので、その時点では System.Numerics.Vectors.dll は存在しませんでした。それ以来、 System.Numerics.Vectors.dll は、 BCL で定義された型を使用する強力なインセンティブを提供します

使用するフレームワークに応じて、対応する構造を使用する必要があります。それ以外は非常に似ており、どちらも値型です。

2 つの異なる名前空間/アセンブリに同じ型のオブジェクトの 2 つの実装がある理由は、一方が他方を参照すると、それ以外の場合は不要なアセンブリ間の依存関係が作成されるためです。

DirectX も XNA も使用しない場合は、どちらかを選択できます。ただし、その場合は、@JBeurer が彼の回答で述べたように、System.Numerics.Vectors.dll で定義された新しい構造を使用する必要があります。

于 2013-02-25T02:37:50.077 に答える