新しいXMVECTORとXMFLOAT3クラスを使用すると、2点間の距離を得る最も良い方法は何ですか?DirectXMathで2点間の距離を取得する最適な方法は何ですか
float distance(const XMFLOAT3& v1,const XMFLOAT3& v2)
{
XMVECTOR vector1 = XMLoadFloat3(&v1);
XMVECTOR vector2 = XMLoadFloat3(&v2);
XMVECTOR vectorSub = XMVectorSubtract(vector1,vector2);
XMVECTOR length = XMVector3Length(vectorSub);
float distance = 0.0f;
XMStoreFloat(&distance,length);
return distance;
}
が、これはX、Y、Zのためのちょうど3フロートと、通常のVector3クラスよりも高速になります:私はので、私は、次のを思い付いた機能のXMVector *ファミリーでそれをしない機能を見つけることができませんでしたそれが本質的な最適化を使用するのでsqrtを使用していますか?すなわち:
float Distance(const Vector3& point1,const Vector3& point2)
{
float distance = sqrt((point1.x - point2.x) * (point1.x - point2.x) +
(point1.y - point2.y) * (point1.y - point2.y) +
(point1.z - point2.z) * (point1.z - point2.z));
return distance;
}