// main creates a new scene with a camera and 3 vectors, renders the scene, // draws the result to an image and encodes the image as PNG into a file. // Optionally specify the filename. func main() { var filename = flag.String("file", "triangle.png", "Filename to store image") flag.Parse() cam := render.NewDefCam() v1 := geom.NewVec4(-1, -1, -3) v2 := geom.NewVec4(0, 1, -5) v3 := geom.NewVec4(1, -1, -3) t := cam.PerspTransf(500, 500) w1 := t.Transf(v1) w1.Norm() w2 := t.Transf(v2) w2.Norm() w3 := t.Transf(v3) w3.Norm() x1 := tmath.Round(w1[0]) y1 := tmath.Round(w1[1]) x2 := tmath.Round(w2[0]) y2 := tmath.Round(w2[1]) x3 := tmath.Round(w3[0]) y3 := tmath.Round(w3[1]) img := image.NewImage(500, 500) col := color.RGBA{255, 255, 0, 255} img.DrawDot(x1, y1, col) img.DrawDot(x2, y2, col) img.DrawDot(x3, y3, col) img.DrawLine(x1, y1, x2, y2, col) img.DrawLine(x2, y2, x3, y3, col) img.DrawLine(x3, y3, x1, y1, col) file, err := os.Create(*filename) if err != nil { panic(err) } defer file.Close() img.WritePng(file) }
// main creates a new image, draws 3 dots and 3 lines onto the image, and then // encodes the image as PNG into a file. Optionally specify the filename. func main() { var filename = flag.String("file", "triangle.png", "Filename to store image") flag.Parse() file, err := os.Create(*filename) if err != nil { panic(err) } defer file.Close() i := image.NewImage(500, 500) c := color.RGBA{255, 255, 0, 255} x1 := 250 y1 := 10 x2 := 490 y2 := 490 x3 := 10 y3 := 490 i.DrawDot(x1, y1, c) i.DrawDot(x2, y2, c) i.DrawDot(x3, y3, c) i.DrawLine(x1, y1, x2, y2, c) i.DrawLine(x2, y2, x3, y3, c) i.DrawLine(x3, y3, x1, y1, c) i.WritePng(file) }