gl01/internal/util/bunnyhop.go

16 lines
377 B
Go
Raw Normal View History

2022-01-20 21:58:50 +08:00
package util
import "edgaru089.ml/go/gl01/internal/util/itype"
func BunnyhopAccelerate(accelDir, prevVel itype.Vec3d, accelVel, maxVel float64) (resultVel itype.Vec3d) {
if accelVel < 1e-4 {
return prevVel
}
projVel := prevVel.Dot(accelDir)
if projVel+accelVel > maxVel {
accelVel = maxVel - projVel
}
return prevVel.Add(accelDir.Normalize().Multiply(accelVel))
}