Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. float D3DXVec3Dot(Vector a, Vector b)
  2. {
  3. return (a.x * b.x +
  4. a.y * b.y +
  5. a.z * b.z);
  6. }
  7. D3DMATRIX D3DMatrixTranspose(D3DMATRIX in) {
  8. D3DMATRIX out;
  9.  
  10. out._11 = in._11;
  11. out._21 = in._12;
  12. out._31 = in._13;
  13. out._41 = in._14;
  14.  
  15. out._12 = in._21;
  16. out._22 = in._22;
  17. out._32 = in._23;
  18. out._42 = in._24;
  19.  
  20. out._13 = in._31;
  21. out._23 = in._32;
  22. out._33 = in._33;
  23. out._43 = in._34;
  24.  
  25. out._14 = in._41;
  26. out._24 = in._42;
  27. out._34 = in._43;
  28. out._44 = in._44;
  29.  
  30. return out;
  31. }
  32.  
  33. void PrintMatrix(D3DMATRIX m) {
  34. std::cout << "{" << m._11 << ", " << m._12 << ", " << m._13 << ", " << m._14 << "}\n";
  35. std::cout << "{" << m._21 << ", " << m._22 << ", " << m._23 << ", " << m._24 << "}\n";
  36. std::cout << "{" << m._31 << ", " << m._32 << ", " << m._33 << ", " << m._34 << "}\n";
  37. std::cout << "{" << m._41 << ", " << m._42 << ", " << m._43 << ", " << m._44 << "}\n";
  38. }
  39.  
  40. bool WorldToScreen(Vector _Enemy, Vector* _Screen, ImVec2 windowSize)
  41. {
  42. _Screen = new Vector(0, 0, 0);
  43.  
  44. std::cout << "windowSize: " << windowSize.x << "," << windowSize.y << std::endl;
  45. std::cout << "Matrix:\n";
  46. PrintMatrix(_viewMatrix);
  47. D3DMATRIX temp = D3DMatrixTranspose(_viewMatrix);
  48. std::cout << "Transposed Matrix:\n";
  49. PrintMatrix(temp);
  50. Vector translationVector = Vector(temp._41, temp._42, temp._43);
  51. Vector up = Vector(temp._21, temp._22, temp._23);
  52. Vector right = Vector(temp._11, temp._12, temp._13);
  53.  
  54. float w = D3DXVec3Dot(translationVector, _Enemy) + temp._44;
  55.  
  56. if (w < 0.098f)
  57. return false;
  58.  
  59. float y = D3DXVec3Dot(up, _Enemy) + temp._24;
  60. float x = D3DXVec3Dot(right, _Enemy) + temp._14;
  61.  
  62. _Screen->x = (windowSize.x / 2) * (1.f + x / w);
  63. _Screen->y = (windowSize.y / 2) * (1.f - y / w);
  64. _Screen->z = w;
  65.  
  66. return true;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement