| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package main
- import (
- "fmt"
- "time"
- )
- type SpaceObj struct {
- x int64 // Pos x
- y int64 // Pos y
- z int64 // Pos z
- vx float64 // Velocity x (mm)
- vy float64 // Velocity y (mm)
- vz float64 // Velocity z (mm)
- m int64 // mass (kg)
- }
- type Force struct {
- x int64
- y int64
- z int64
- }
- func calcAcceleration(m int64, f int64) float64 {
- return float64(f) / float64(m)
- }
- func main() {
- user := SpaceObj{0, 0, 0, 0, 0, 0, 52}
- vectors := []Force{{1, 0, -1}, {0, 1, 0}, {-1, 0, 0}, {-1, -1, -1}, {1, 0, 0}, {1, 0, 0}, {0, 1, -1}, {0, 1, 0}, {1, 0, 0}, {0, 0, -1}, {0, 0, 0}}
- for i, f := range vectors {
- fmt.Printf("Frame: %d; Vector: %d %d %d\n", i, f.x, f.y, f.z)
- user.vx = user.vx + calcAcceleration(user.m, f.x)
- user.vy = user.vy + calcAcceleration(user.m, f.y)
- user.vz = user.vy + calcAcceleration(user.m, f.z)
- fmt.Printf(" velocity: %f %f %f (m/s)\n", user.vx, user.vy, user.vz)
- user.x = user.x + int64(user.vx*1000)
- user.y = user.y + int64(user.vy*1000)
- user.z = user.z + int64(user.vz*1000)
- fmt.Printf(" Pos: %d x %d x %d\n", user.x, user.y, user.z)
- time.Sleep((1 * time.Second))
- }
- }
|