clockface/clockface.go

35 lines
683 B
Go
Raw Normal View History

2022-01-20 04:26:08 +00:00
package clockface
2022-01-20 04:29:46 +00:00
import (
"math"
2022-01-20 04:31:19 +00:00
"time"
2022-01-20 04:29:46 +00:00
)
const secondHandLength = 90
const clockCentreX = 150
const clockCentreY = 150
type Point struct {
X float64
Y float64
}
func SecondHand(t time.Time) Point {
p := secondHandPoint(t)
p = Point{p.X * secondHandLength, p.Y * secondHandLength} //scale
p = Point{p.X, -p.Y} //flip
p = Point{p.X + clockCentreX, p.Y + clockCentreY} //translate
return p
}
func secondsInRadians(t time.Time) float64 {
return math.Pi / (30 / (float64(t.Second())))
}
func secondHandPoint(t time.Time) Point {
angle := secondsInRadians(t)
x := math.Sin(angle)
y := math.Cos(angle)
return Point{x, y}
}