package day22 import ( "math" "github.com/tidwall/pinhole" ) func TestPinhole() { p := pinhole.New() p.DrawCube(-0.3, -0.3, -0.3, 0.3, 0.3, 0.3) p.Rotate(math.Pi/3, math.Pi/2, 0) p.SavePNG("cube.png", 500, 500, nil) } func PrintSpace(s Space, filename string) { // pinhole is from -1 to 1. let's use from 0 to 1. // so coord should be divided by max height, and let's hope that they are not too wide rotation := []float64{math.Pi/3, math.Pi/6, 0} p := pinhole.New() p.DrawRect(-1, -1, 1, 1, 0) for _, zLevel := range s.SettledOnZ { for _, block := range zLevel { p.DrawCube(float64(block.XMin) / float64(s.MaxZ), float64(block.YMin) / float64(s.MaxZ), float64(block.Z) / float64(s.MaxZ), float64(block.XMax + 1) / float64(s.MaxZ), float64(block.YMax + 1) / float64(s.MaxZ), float64(block.Z + block.ZHeight + 1) / float64(s.MaxZ)) } } p.Rotate(rotation[0], rotation[1], rotation[2]) p.SavePNG(filename, 1920, 1080, nil) }