38 lines
		
	
	
		
			653 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			653 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package vec2
 | 
						|
 | 
						|
import "zworld/plugin/math"
 | 
						|
 | 
						|
// New returns a vec2 from its components
 | 
						|
func New(x, y float32) T {
 | 
						|
	return T{X: x, Y: y}
 | 
						|
}
 | 
						|
 | 
						|
// NewI returns a vec2 from integer components
 | 
						|
func NewI(x, y int) T {
 | 
						|
	return T{X: float32(x), Y: float32(y)}
 | 
						|
}
 | 
						|
 | 
						|
// Dot returns the dot product of two vectors.
 | 
						|
func Dot(a, b T) float32 {
 | 
						|
	return a.X*b.X + a.Y*b.Y
 | 
						|
}
 | 
						|
 | 
						|
// Distance returns the euclidian distance between two points.
 | 
						|
func Distance(a, b T) float32 {
 | 
						|
	return a.Sub(b).Length()
 | 
						|
}
 | 
						|
 | 
						|
func Min(a, b T) T {
 | 
						|
	return T{
 | 
						|
		X: math.Min(a.X, b.X),
 | 
						|
		Y: math.Min(a.Y, b.Y),
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func Max(a, b T) T {
 | 
						|
	return T{
 | 
						|
		X: math.Max(a.X, b.X),
 | 
						|
		Y: math.Max(a.Y, b.Y),
 | 
						|
	}
 | 
						|
}
 |