confetty/pkg/physics/physics.go
2021-08-06 22:00:08 -04:00

47 lines
732 B
Go

package physics
import "math"
type Position Vector
type Velocity Vector
type Acceleration Vector
var Gravity = Acceleration{
X: 0,
Y: 9.81,
}
type Physics struct {
pos Position
vel Velocity
acc Acceleration
fps float64
}
type Vector struct {
X float64
Y float64
}
func New(pos, vel, acc Vector, fps float64) *Physics {
return &Physics{
pos: Position(pos),
vel: Velocity(vel),
acc: Acceleration(acc),
fps: fps,
}
}
func (p *Physics) Update() {
p.pos.Y, p.vel.Y = p.pos.Y+p.vel.Y/p.fps, p.vel.Y+p.acc.Y/p.fps
p.pos.X, p.vel.X = p.pos.X+p.vel.X/p.fps, p.vel.X+p.acc.X/p.fps
}
func (p Physics) PosX() int {
return int(math.Round(p.pos.X))
}
func (p Physics) PosY() int {
return int(math.Round(p.pos.Y))
}