Harmonica 是一个 physics-based animation tools for 2D and 3D application, 也就是通过设置速度, 位置之类的物理单位来实现动画.
FPS 设置帧数
返回值是两帧之间的间隔时间 delta:
这里可用于初始化一个 spring:
1
| spring := NewSpring(FPS(60), 5.0, 0.2)
|
type Point
用于表示点的 X, Y, Z 坐标值:
1 2 3
| type Point struct { X, Y, Z float64 }
|
type Vector
有大小和方向:
1 2 3
| type Vector struct { X, Y, Z float64 }
|
type Projectile
空结构体, 用于标记类型:
1 2 3
| type Projectile struct { }
|
其表示一个平面中, 有 position, velocity 和 acceleration 的 projectile.
NewProjectile 创建一个 projectile
1
| func NewProjectile(deltaTime float64, initialPosition Point, initialVelocity, initialAcceleration Vector) *Projectile
|
Acceleration 获取一个 projectile 的加速度
1
| func (*Projectile) Acceleration() Vector
|
Position 获取一个 projectile 的位置
1
| func (p *Projectile) Position() Point
|
Update 更新 projectile 的位置和速度
1
| func (p *Projectile) Update() Point
|
Velocity 获取 projectile 的速度
1
| func (p *Projectile) Velocity() Vector
|
type Spring
弹簧类型:
1 2 3
| type Spring struct { }
|
NewSpring 创建一个 Spring
1
| func NewSpring(deltaTime, angularFrequency, dampingRatio float64) (s Spring)
|
Update 更新 Spring 的位置和速度
1
| func (s Spring) Update(pos, vel float64, equilibriumPos float64) (newPos, newVel float64)
|