module main import gx import gl import gg import time import glfw import math const ( Size = 700 Scale = 50.0 ) struct Context { gg *gg.GG } fn main() { glfw.init() ctx:= &Context{ gg: gg.new_context(gg.Cfg { width: Size height: Size use_ortho: true create_window: true window_title: 'Graph builder' window_user_ptr: ctx always_on_top: true }) } go update() // update the scene in the background in case the window isn't focused for { gg.clear(gx.White) ctx.draw() ctx.gg.render() } } [live] fn (ctx &Context) draw() { ctx.gg.draw_line(0, Size / 2, Size, Size / 2) // x axis ctx.gg.draw_line(Size / 2, 0, Size / 2, Size) // y axis center := f64(Size / 2) for x := -10.0; x <= 10.0; x += 0.002 { y := x * x + 1 //y := (x + 3) * (x + 3) - 1 //y := math.sqrt(30.0 - x * x) ctx.gg.draw_rect(center + x * Scale, center - y * Scale, 1, 1, gx.Black) //ctx.gg.draw_rect(center + x * Scale, center + y * Scale, 1, 1, gx.Black) } } fn update() { for { gg.post_empty_event() time.sleep_ms(300) } }