Advertisement
expired6978

NiTypes

Jun 28th, 2014
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.54 KB | None | 0 0
  1. #include "NiTypes.h"
  2.  
  3. NiPoint3::NiPoint3()
  4. {
  5.     x = 0.0f;
  6.     y = 0.0f;
  7.     z = 0.0f;
  8. }
  9.  
  10. NiPoint3 NiPoint3::operator- () const
  11. {
  12.     return NiPoint3(-x, -y, -z);
  13. }
  14.  
  15. NiPoint3 NiPoint3::operator+ (const NiPoint3& pt) const
  16. {
  17.     return NiPoint3(x + pt.x, y + pt.y, z + pt.z);
  18. }
  19.  
  20. NiPoint3 NiPoint3::operator- (const NiPoint3& pt) const
  21. {
  22.     return NiPoint3(x - pt.x, y - pt.y, z - pt.z);
  23. }
  24.  
  25. NiPoint3& NiPoint3::operator+= (const NiPoint3& pt)
  26. {
  27.     x += pt.x;
  28.     y += pt.y;
  29.     z += pt.z;
  30.     return *this;
  31. }
  32. NiPoint3& NiPoint3::operator-= (const NiPoint3& pt)
  33. {
  34.     x -= pt.x;
  35.     y -= pt.y;
  36.     z -= pt.z;
  37.     return *this;
  38. }
  39.  
  40. // Scalar operations
  41. NiPoint3 NiPoint3::operator* (float scalar) const
  42. {
  43.     return NiPoint3(scalar * x, scalar * y, scalar * z);
  44. }
  45. NiPoint3 NiPoint3::operator/ (float scalar) const
  46. {
  47.     float invScalar = 1.0f / scalar;
  48.     return NiPoint3(invScalar * x, invScalar * y, invScalar * z);
  49. }
  50.  
  51. NiPoint3& NiPoint3::operator*= (float scalar)
  52. {
  53.     x *= scalar;
  54.     y *= scalar;
  55.     z *= scalar;
  56.     return *this;
  57. }
  58. NiPoint3& NiPoint3::operator/= (float scalar)
  59. {
  60.     float invScalar = 1.0f / scalar;
  61.     x *= invScalar;
  62.     y *= invScalar;
  63.     z *= invScalar;
  64.     return *this;
  65. }
  66.  
  67. void NiMatrix33::Identity()
  68. {
  69.     data[0][0] = 1.0f;
  70.     data[0][1] = 0.0f;
  71.     data[0][2] = 0.0f;
  72.     data[1][0] = 0.0f;
  73.     data[1][1] = 1.0f;
  74.     data[1][2] = 0.0f;
  75.     data[2][0] = 0.0f;
  76.     data[2][1] = 0.0f;
  77.     data[2][2] = 1.0f;
  78. }
  79.  
  80. NiMatrix33 NiMatrix33::operator* (const NiMatrix33& rhs) const
  81. {
  82.     NiMatrix33 tmp;
  83.     tmp.data[0][0] =
  84.         data[0][0]*rhs.data[0][0]+
  85.         data[0][1]*rhs.data[1][0]+
  86.         data[0][2]*rhs.data[2][0];
  87.     tmp.data[1][0] =
  88.         data[1][0]*rhs.data[0][0]+
  89.         data[1][1]*rhs.data[1][0]+
  90.         data[1][2]*rhs.data[2][0];
  91.     tmp.data[2][0] =
  92.         data[2][0]*rhs.data[0][0]+
  93.         data[2][1]*rhs.data[1][0]+
  94.         data[2][2]*rhs.data[2][0];
  95.     tmp.data[0][1] =
  96.         data[0][0]*rhs.data[0][1]+
  97.         data[0][1]*rhs.data[1][1]+
  98.         data[0][2]*rhs.data[2][1];
  99.     tmp.data[1][1] =
  100.         data[1][0]*rhs.data[0][1]+
  101.         data[1][1]*rhs.data[1][1]+
  102.         data[1][2]*rhs.data[2][1];
  103.     tmp.data[2][1] =
  104.         data[2][0]*rhs.data[0][1]+
  105.         data[2][1]*rhs.data[1][1]+
  106.         data[2][2]*rhs.data[2][1];
  107.     tmp.data[0][2] =
  108.         data[0][0]*rhs.data[0][2]+
  109.         data[0][1]*rhs.data[1][2]+
  110.         data[0][2]*rhs.data[2][2];
  111.     tmp.data[1][2] =
  112.         data[1][0]*rhs.data[0][2]+
  113.         data[1][1]*rhs.data[1][2]+
  114.         data[1][2]*rhs.data[2][2];
  115.     tmp.data[2][2] =
  116.         data[2][0]*rhs.data[0][2]+
  117.         data[2][1]*rhs.data[1][2]+
  118.         data[2][2]*rhs.data[2][2];
  119.     return tmp;
  120. }
  121.  
  122. NiMatrix33 NiMatrix33::operator* (float scalar) const
  123. {
  124.     NiMatrix33 result;
  125.     result.data[0][0] = data[0][0] * scalar;
  126.     result.data[0][1] = data[0][1] * scalar;
  127.     result.data[0][2] = data[0][2] * scalar;
  128.     result.data[1][0] = data[1][0] * scalar;
  129.     result.data[1][1] = data[1][1] * scalar;
  130.     result.data[1][2] = data[1][2] * scalar;
  131.     result.data[2][0] = data[2][0] * scalar;
  132.     result.data[2][1] = data[2][1] * scalar;
  133.     result.data[2][2] = data[2][2] * scalar;
  134.     return result;
  135. }
  136.  
  137. NiPoint3 NiMatrix33::operator* (const NiPoint3& pt) const
  138. {
  139.     return NiPoint3
  140.         (
  141.         data[0][0]*pt.x+data[0][1]*pt.y+data[0][2]*pt.z,
  142.         data[1][0]*pt.x+data[1][1]*pt.y+data[1][2]*pt.z,
  143.         data[2][0]*pt.x+data[2][1]*pt.y+data[2][2]*pt.z
  144.         );
  145. }
  146.  
  147. NiTransform::NiTransform()
  148. {
  149.     rot.Identity();
  150.     scale = 1.0f;
  151. }
  152.  
  153. NiTransform NiTransform::operator*(const NiTransform &rhs) const
  154. {
  155.     NiTransform tmp;
  156.     tmp.scale = scale * rhs.scale;
  157.     tmp.rot = rot * rhs.rot;
  158.     tmp.pos = pos + (rot * rhs.pos) * scale;
  159.     return tmp;
  160. }
  161.  
  162. NiPoint3 NiTransform::operator*(const NiPoint3 & pt) const
  163. {
  164.     return (((rot * pt) * scale) + pos);
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement