From 7dbd04832291d6c1ee1a403691a44a2b3e1f10e3 Mon Sep 17 00:00:00 2001 From: silva guimaraes Date: Sat, 23 Aug 2025 19:57:09 -0300 Subject: [PATCH] cycloid --- main.go | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 main.go diff --git a/main.go b/main.go new file mode 100644 index 0000000..d5ca40b --- /dev/null +++ b/main.go @@ -0,0 +1,69 @@ +package main + +import ( + "fmt" + "math" + + rl "github.com/gen2brain/raylib-go/raylib" +) + +const HEIGHT = 600 +const WIDTH = 800 + +func main() { + fmt.Println("hello world") + rl.SetConfigFlags(rl.FlagMsaa4xHint) + rl.InitWindow(WIDTH, HEIGHT, "raylib [core] example - basic window") + defer rl.CloseWindow() + // rl.SetTargetFPS(60) + + rl.BeginDrawing() + rl.ClearBackground(rl.RayWhite) + rl.EndDrawing() + + var innerCircleRadius float32 = HEIGHT/2 + var outerCircleRadius float32 = innerCircleRadius/2 + trace := true + + for !rl.WindowShouldClose() { + rl.BeginDrawing() + if !trace { + rl.ClearBackground(rl.RayWhite) + } + + if rl.IsKeyPressed(rl.KeySpace) { + trace = !trace + } + + angle := float64(rl.GetTime() * 1) + center := rl.NewVector2(WIDTH/2, HEIGHT/2) + outerCircle := rl.NewVector2(float32(math.Cos(angle)), float32(math.Sin(angle))) + outerCircle = rl.Vector2Scale(outerCircle, innerCircleRadius - outerCircleRadius) + outerCircle = rl.Vector2Add(outerCircle, center) + + if !trace { + // outer circle + rl.DrawCircleV(outerCircle, outerCircleRadius, rl.Black) + rl.DrawCircleV(outerCircle, outerCircleRadius-1, rl.RayWhite) + rl.DrawLineV(outerCircle, center, rl.Black) + } + + var tipSize float32 = 6 + if trace { + tipSize = 2 + } + // tip + angle *= -7.3 + tip := rl.NewVector2(float32(math.Cos(angle)), float32(math.Sin(angle))) + tip = rl.Vector2Scale(tip, outerCircleRadius) + tip = rl.Vector2Add(tip, outerCircle) + rl.DrawCircleV(tip, tipSize, rl.Blue) + + if !trace { + // inner circle + rl.DrawCircleLines(WIDTH/2, HEIGHT/2, innerCircleRadius, rl.Black) + } + + rl.EndDrawing() + } +}