50 lines
		
	
	
		
			1014 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1014 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local Vector2D = {}
 | |
| function Vector2D.New(x, y)
 | |
|     return {X = x or 0, Y = y or 0}
 | |
| end
 | |
| 
 | |
| function Vector2D.Add(a, b)
 | |
|     return Vector2D.New(a.X + b.X, a.Y + b.Y)
 | |
| end
 | |
| 
 | |
| function Vector2D.Sub(a, b)
 | |
|     return Vector2D.New(a.X - b.X, a.Y - b.Y)
 | |
| end
 | |
| 
 | |
| function Vector2D.Mul(v, s)
 | |
|     return Vector2D.New(v.X * s, v.Y * s)
 | |
| end
 | |
| 
 | |
| function Vector2D.Div(v, s)
 | |
|     return Vector2D.New(v.X / s, v.Y / s)
 | |
| end
 | |
| 
 | |
| function Vector2D.Magnitude(v)
 | |
|     return math.sqrt(v.X * v.X + v.Y * v.Y)
 | |
| end
 | |
| 
 | |
| function Vector2D.Normalize(v)
 | |
|     local mag = Vector2D.Magnitude(v)
 | |
|     return mag > 0 and Vector2D.Div(v, mag) or Vector2D.New()
 | |
| end
 | |
| 
 | |
| function Vector2D.Dot(a, b)
 | |
|     return a.X * b.X + a.Y * b.Y
 | |
| end
 | |
| 
 | |
| -- 2D 叉积(返回标量)
 | |
| function Vector2D.Cross(a, b)
 | |
|     return a.X * b.Y - a.Y * b.X
 | |
| end
 | |
| 
 | |
| function Vector2D.ToUnrealEngine3D(vector, z)
 | |
|     local FVector = import("Vector")
 | |
|     local new_vector = FVector()
 | |
|     new_vector.Z = z
 | |
|     new_vector.X = vector.X
 | |
|     new_vector.Y = vector.Y
 | |
|     return new_vector
 | |
| end
 | |
| 
 | |
| 
 | |
| return Vector2D |