Kernell

Vector3 Class

Feb 9th, 2012
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.83 KB | None | 0 0
  1. -- Author:          Kernell
  2. -- Version:         1.0.0
  3.  
  4. class "Vector3"
  5. {
  6.     X = 0;
  7.     Y = 0;
  8.     Z = 0;
  9. };
  10.  
  11. function Vector3:Vector3( X, Y, Z ) -- constructor
  12.     self.X = X or self.X;
  13.     self.Y = Y or self.X;
  14.     self.Z = Z or self.X;
  15. end
  16.  
  17. -- methods
  18.  
  19. function Vector3:Dot( vector )
  20.     return self.X * vector.X + self.Y * vector.Y + self.Z * vector.Z;
  21. end
  22.  
  23. function Vector3:Length()
  24.     return math.sqrt( self.X * self.X + self.Y * self.Y + self.Z * self.Z );
  25. end
  26.  
  27. function Vector3:Distance( vector )
  28.     return getDistanceBetweenPoints3D( self.X, self.Y, self.Z, vector.X, vector.Y, vector.Z );
  29. end
  30.  
  31. function Vector3:Offset( distance, rotation )
  32.     distance = tonumber( distance ) or 0;
  33.     rotation = tonumber( rotation ) or 0;
  34.    
  35.     return Vector3( self.X + ( ( math.cos( math.rad( rotation + 90 ) ) ) * distance ), self.Y + ( ( math.sin( math.rad( rotation + 90 ) ) ) * distance ), self.Z );
  36. end
  37.  
  38. function Vector3:Add( vector )
  39.     return Vector3( self.X + vector.X, self.Y + vector.Y, self.Z + vector.Z );
  40. end
  41.  
  42. function Vector3:Sub( vector )
  43.     return Vector3( self.X - vector.X, self.Y - vector.Y, self.Z - vector.Z );
  44. end
  45.  
  46. function Vector3:Mul( vector )
  47.     return Vector3( self.X * vector.X, self.Y * vector.Y, self.Z * vector.Z );
  48. end
  49.  
  50. function Vector3:Equality( vector )
  51.     return self.X == vector.X and self.Y == vector.Y and self.Z == vector.Z;
  52. end
  53.  
  54. function Vector3:ToString()
  55.     return '(' .. self.X .. ',' .. self.Y .. ',' .. self.Z .. ')';
  56. end
  57.  
  58. function Vector3:Concat( mixed )
  59.     return tostring( self ) .. tostring( mixed );
  60. end
  61.  
  62. Vector3.DistanceTo  = Vector3.Distance;
  63.  
  64. -- Overloading Operators
  65. Vector3.__len       = Vector3.Length;
  66. Vector3.__add       = Vector3.Add;
  67. Vector3.__sub       = Vector3.Sub;
  68. Vector3.__mul       = Vector3.Mul;
  69. Vector3.__eq        = Vector3.Equality;
  70. Vector3.__tostring  = Vector3.ToString;
  71. Vector3.__concat    = Vector3.Concat;
Advertisement
Add Comment
Please, Sign In to add comment