func main() { rand.Seed(1211) eye := ln.Vector{8, 8, 8} center := ln.Vector{0, 0, 0} up := ln.Vector{0, 0, 1} scene := ln.Scene{} for a := 0; a < 50; a++ { n := 200 xs := LowPassNoise(n, 0.3, 4) ys := LowPassNoise(n, 0.3, 4) zs := LowPassNoise(n, 0.3, 4) ss := LowPassNoise(n, 0.3, 4) position := ln.Vector{} for i := 0; i < n; i++ { sphere := ln.NewOutlineSphere(eye, up, position, 0.1) scene.Add(sphere) s := (ss[i]+1)/2*0.1 + 0.01 v := ln.Vector{xs[i], ys[i], zs[i]}.Normalize().MulScalar(s) position = position.Add(v) } } width := 380.0 * 5 height := 315.0 * 5 fovy := 50.0 paths := scene.Render(eye, center, up, width, height, fovy, 0.1, 100, 0.01) paths.WriteToPNG("out.png", width, height) paths.Print() }