DirectXMath icon indicating copy to clipboard operation
DirectXMath copied to clipboard

Proposal to add a vector projection function

Open ackh opened this issue 2 years ago • 2 comments

Sometimes I need to project a vector on another vector, as described here. It seems that DirectXMath does not offer a function to do this out of the box which is why I came up with the following implementation:

inline XMVECTOR ProjectVectorToVector(XMVECTOR v1, XMVECTOR v2)
{
  return XMVectorMultiply(XMVectorDivide(XMVector3Dot(v1, v2), XMVector3Dot(v2, v2)), v2);
}

Admittedly, such a function isn't hard to implement but to me, it seems like such a common geometric operation that I think it makes sense to add this to DirectXMath itself.

ackh avatar Jul 11 '23 07:07 ackh

The DirectxMath library itself is focused on operations that map to functions implemented by SIMD instructions directly or are particular challenging to implement for SIMD. There's also a bit of a longer time frame before new versions of DirectXMath become widespread through Windows SDK release, etc. so I tend to be slow to add new functions to it.

That said, this kind of 'helper code' fits well into SimpleMath. so I think it would make sense to add it there like Unity3D supports in their math library.

walbourn avatar Jul 11 '23 22:07 walbourn

Being conservative in what gets added to DirectXMath certainly makes sense. That being said, the background for this request is that I ported an OpenGL application that uses the GLM library to DirectX 11. GLM offers a function to project a vector on another vector which I expected to be in DirectXMath's geometric vector functions as something like XMVectorProjection.

ackh avatar Jul 12 '23 07:07 ackh