From 41895ea7b83927922eebf51a2046d02f624bab99 Mon Sep 17 00:00:00 2001 From: emile Date: Sat, 13 Oct 2018 22:36:56 +0200 Subject: Moved the functions used for 3D drawing to another file (draw3D.go) --- draw/draw3D.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 draw/draw3D.go (limited to 'draw') diff --git a/draw/draw3D.go b/draw/draw3D.go new file mode 100644 index 0000000..62d0f05 --- /dev/null +++ b/draw/draw3D.go @@ -0,0 +1,58 @@ +package draw + +import ( + "../llog" + "../structs" + "github.com/fogleman/ln/ln" +) + +func drawStar3D(scene ln.Scene, star structs.Star) ln.Scene { + starSize := 0.1 + oneCorner := ln.Vector{star.C.X - starSize, star.C.Y - starSize, star.C.Z - starSize} + otherCorner := ln.Vector{star.C.X + starSize, star.C.Y + starSize, star.C.Z + starSize} + + scene.Add(ln.NewCube(oneCorner, otherCorner)) + + return scene +} + +func drawStars3D(scene ln.Scene, slice []structs.Star) ln.Scene { + for _, star := range slice { + scene = drawStar3D(scene, star) + } + + return scene +} + +func Slice3D(slice []structs.Star, path string) { + // create a scene and add a single cube + scene := ln.Scene{} + + llog.Good("Drawing the Stars") + scene = drawStars3D(scene, slice) + llog.Good("Done Drawing the Stars") + + // scene.Add(ln.NewCube(ln.Vector{-1, -1, -1}, ln.Vector{1, 1, 1})) + + // define camera parameters + eye := ln.Vector{4, 3, 2} // camera position + center := ln.Vector{0, 0, 0} // camera looks at + up := ln.Vector{0, 0, 1} // up direction + + // define rendering parameters + width := 1024.0 // rendered width + height := 1024.0 // rendered height + fovy := 50.0 // vertical field of view, degrees + znear := 0.1 // near z plane + zfar := 10.0 // far z plane + step := 0.01 // how finely to chop the paths for visibility testing + + llog.Good("Configuring path") + // compute 2D paths that depict the 3D scene + paths := scene.Render(eye, center, up, width, height, fovy, znear, zfar, step) + llog.Good("Done") + + // render the paths in an image + llog.Good("Writing to png") + paths.WriteToPNG(path, width, height) +} -- cgit 1.4.1