cycloid/main.go
2025-08-23 19:57:09 -03:00

69 lines
1.8 KiB
Go

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()
}
}