Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Author: Kernell
- -- Version: 1.0.0
- class "Vector3"
- {
- X = 0;
- Y = 0;
- Z = 0;
- };
- function Vector3:Vector3( X, Y, Z ) -- constructor
- self.X = X or self.X;
- self.Y = Y or self.X;
- self.Z = Z or self.X;
- end
- -- methods
- function Vector3:Dot( vector )
- return self.X * vector.X + self.Y * vector.Y + self.Z * vector.Z;
- end
- function Vector3:Length()
- return math.sqrt( self.X * self.X + self.Y * self.Y + self.Z * self.Z );
- end
- function Vector3:Distance( vector )
- return getDistanceBetweenPoints3D( self.X, self.Y, self.Z, vector.X, vector.Y, vector.Z );
- end
- function Vector3:Offset( distance, rotation )
- distance = tonumber( distance ) or 0;
- rotation = tonumber( rotation ) or 0;
- return Vector3( self.X + ( ( math.cos( math.rad( rotation + 90 ) ) ) * distance ), self.Y + ( ( math.sin( math.rad( rotation + 90 ) ) ) * distance ), self.Z );
- end
- function Vector3:Add( vector )
- return Vector3( self.X + vector.X, self.Y + vector.Y, self.Z + vector.Z );
- end
- function Vector3:Sub( vector )
- return Vector3( self.X - vector.X, self.Y - vector.Y, self.Z - vector.Z );
- end
- function Vector3:Mul( vector )
- return Vector3( self.X * vector.X, self.Y * vector.Y, self.Z * vector.Z );
- end
- function Vector3:Equality( vector )
- return self.X == vector.X and self.Y == vector.Y and self.Z == vector.Z;
- end
- function Vector3:ToString()
- return '(' .. self.X .. ',' .. self.Y .. ',' .. self.Z .. ')';
- end
- function Vector3:Concat( mixed )
- return tostring( self ) .. tostring( mixed );
- end
- Vector3.DistanceTo = Vector3.Distance;
- -- Overloading Operators
- Vector3.__len = Vector3.Length;
- Vector3.__add = Vector3.Add;
- Vector3.__sub = Vector3.Sub;
- Vector3.__mul = Vector3.Mul;
- Vector3.__eq = Vector3.Equality;
- Vector3.__tostring = Vector3.ToString;
- Vector3.__concat = Vector3.Concat;
Advertisement
Add Comment
Please, Sign In to add comment