go-opengl-pixel/util.go

41 lines
713 B
Go
Raw Normal View History

2016-11-24 08:13:05 -06:00
package pixel
2017-01-12 04:44:54 -06:00
import "github.com/go-gl/mathgl/mgl32"
2016-12-23 13:25:47 -06:00
func clamp(x, low, high float64) float64 {
if x < low {
return low
}
if x > high {
return high
}
return x
2016-11-24 08:13:05 -06:00
}
2017-01-12 04:44:54 -06:00
func lerp(x float64, a, b Vec) Vec {
return a.Scaled(1-x) + b.Scaled(x)
}
func lerp2d(x, a, b Vec) Vec {
return V(
lerp(x.X(), a, b).X(),
lerp(x.Y(), a, b).Y(),
)
}
2017-01-12 04:44:54 -06:00
func transformToMat(t ...Transform) mgl32.Mat3 {
mat := mgl32.Ident3()
for i := range t {
mat = mat.Mul3(t[i].Mat())
}
return mat
}
func pictureBounds(p *GLPicture, v Vec) Vec {
w, h := float64(p.Texture().Width()), float64(p.Texture().Height())
a := p.Bounds().Pos
b := p.Bounds().Pos + p.Bounds().Size
u := lerp2d(v, a, b)
return V(u.X()/w, u.Y()/h)
}