:takahashi_fankit:時計もとうとうタイムゾーンにまで対応するとは……
・なめらかに動く(若干重いです)
・文字盤が一応できました
・タイムゾーンに対応
なんかclockscale
の値だけを変えると文字盤がずれます
原因がわかる方修正版を投稿してください
// タカハシ時計(なめらか)
// Original: @yu4mogi@voskey.icalo.net
// https://voskey.icalo.net/notes/9da7az18ql
// Edited by @Higameshi@voskey.icalo.net
//ここで時計のサイズを調節してください
let clockscale = 0.8
//なんかサイズを変更すると文字盤がずれるので調節してください(たすけて)
let mojibansetting = -2.35
//ここで現在のタイムゾーンなどを設定してください(fpsは大きくすると重くなります)
let timezone = 9.0
let fps = 30
// 現在時刻を取得して数値にして返す
@getCurrentnow(){
return ( Date:now() % (1000*60*60*12)) + (timezone % 24) * (1000*60*60)
}
// 各針の角度を計算
var now = 0
var angle_h = 0
var angle_m = 0
var angle_s = 0
var hand_h = ``
var hand_m = ``
var hand_s = ``
@getTakahashi(){
now = getCurrentnow()
angle_h = ((360/(1000*60*60*12)) * now - 90)
angle_m = ((360/(1000*60*60)) * now - 90)
angle_s = ((360/(1000*60)) * now - 90)
hand_h = `$[position.y=0 $[rotate.deg={angle_h} :blank::blank::blank::takahashi_fankit:]]`
hand_m = `$[position.y=2 $[rotate.deg={angle_m} :blank::blank::blank:$[position.x=1 $[scale.x=1.41,y=0.70 :takahashi_fankit:]]]]`
hand_s = `$[position.y=4 $[rotate.deg={angle_s} :blank::blank::blank:$[position.x=2.5 $[scale.x=2,y=0.125 :takahashi_fankit:]]]]`
return `{hand_s}{Str:lf}{hand_m}{Str:lf}{hand_h}`
}
//文字盤を表示
@quo(x) {
((x[0] - x[0] % x[1]) / x[1])
}
let clockcenter = -5.3
let clockradius = 20
var mojiban = ``
for (let i, 12) {
mojiban = `{mojiban}$[position.x={clockradius*Math:cos((i-3)*(2*Math:PI)/12)},y={clockradius*Math:sin((i-3)*(2*Math:PI)/12)} $[position.x={(i%2)*(-1)*5+2.5},y={clockcenter+quo([i 2])*mojibansetting} $[rotate.deg={-90 + i * (360/12)} :takahashi_fankit:]]]`
if (i%2 !=0) {
mojiban = `{mojiban}{Str:lf}`
}
}
// 描画
let margin_before = `{Str:lf}{Str:lf}{Str:lf}{Str:lf}`
let margin_after = ``
@takahands() {
return {text: `{margin_before}{Str:lf}{getTakahashi()}{Str:lf}{margin_after}` size: clockscale}
}
@main(){
Ui:render([
Ui:C:mfm(takahands() "hands")
Ui:C:mfm({text: `{mojiban}{Str:lf}{Str:lf}` size: clockscale*0.5})
])
}
main()
@draw(){
Async:interval((1000 / fps), @(){Ui:get("hands").update(takahands())}, true) // 1/fps秒ごとに呼び出し
}
draw()
このアカウントは、notestockで公開設定になっていません。