通过向量乘以矩阵并返回向量

时间:2015-01-30 19:17:43

标签: c++

好的,我希望有人可以帮助我。我试图在技术上将一个Vector3乘以一个Matrix4 ......

我的FMatrix

struct FMatrix
{
struct FPlane                                      XPlane;                                                  
struct FPlane                                      YPlane;                                                  
struct FPlane                                      ZPlane;                                                  
struct FPlane                                      WPlane;                                                  
};

所以每个FPlane都有X,Y,Z,W

制作FMatrix.XPlane.X FMatrix.XPlane.Y等

这是我到目前为止的代码,我知道我的Vector3在技术上需要转换为Vector4,使用1或0作为我的W。

FVector2D get2dPoint(FVector worldloc) 
{
  FMatrix mat = mHUD->ViewProjectionMatrix;
  FVector res;
  float x = worldloc.X;
  float y = worldloc.Y;
  float z = worldloc.Z;

  res.X = (mat.XPlane.X*x) + (mat.YPlane.X*y) + (mat.ZPlane.X*z) + (mat.WPlane.X * 1);
  res.Y = (mat.XPlane.Y*x) + (mat.YPlane.Y*y) + (mat.ZPlane.Y*z) + (mat.WPlane.Y * 1);
  res.Z = (mat.XPlane.Z*x) + (mat.YPlane.Z*y) + (mat.ZPlane.Z*z) + (mat.WPlane.Z * 1);

  float winX = round(((res.X + 1.0f) / 2.0f) * mHUD->uiResolution.X);
  float winY = round(((1.0f - res.Y) / 2.0f) * mHUD->uiResolution.Y);    
  return{ winX, winY };
}

我相信你们大多数人都能看到我正在努力创造一个屏幕功能世界。我正在使用升级库,我看到了关于ublas和matrix的东西,但我确实迷失了,但如果这有助于你帮助我,我很酷。因此,使用普通c ++或使用boost函数的示例对我来说都很好。

0 个答案:

没有答案