我希望使用swift在圆圈上显示时间戳之间的某个时间段。 (cfr截图)
我有这段代码显示12:00到18:00之间的时间
let π:CGFloat = CGFloat(M_PI)
let center = CGPoint(x: bounds.width/2, y: bounds.height/2)
let radius: CGFloat = max(bounds.width,bounds.height)
let arcWidth: CGFloat = 5
let startAngle2: CGFloat = 3 * π / 2
let endAngle2: CGFloat = π / 2
let path2 = UIBezierPath(arcCenter: center, radius: radius/2 - arcWidth / 2, startAngle: startAngle2, endAngle: endAngle2, clockwise: true)
path2.lineWidth = arcWidth
strokeColer2.setStroke()
path2.stroke()
我现在需要知道的是一个函数或计算,它给出了开始和结束角度。如果有人有任何建议,请告诉我!
答案 0 :(得分:1)
它只是线性的,12小时=2π弧度,或1小时=π/ 6。数学惯例是逆时针方向,3点钟= 0角。因此12/0 =π/ 2,3 = 0,6 =-π/ 2,9 =-π(或+π),所以
angle = (3 - hour % 12) * π / 6
let integerHours = 17
let minutes = 12
var fractionalHours = CGFloat(integerHours) + CGFloat(minutes) / 60
fractionalHours = fmod(fractionalHours, 12)
let angle = (3 - fractionalHours) * CGFloat(M_PI) / 6