コードの続きをやりたいような YouTube でダラダラしたいような、調べ物をしたいような。 とりあえず一時間近くコードを進める。無心になれるいい時間だ。

2:25 Twitter のフォロワーサンの出たなツインビーの一面を観て寝る。いい曲だ。

7:05 起床。納豆とコロッケバーガーを食す。ゴミ袋に二つを処理しつつ出勤。

7:45 現場。二回分の可燃ゴミが溜まっているはずだが、意外に少ない。 クサレゴミもないようなので、これなら何とかなりそうだ。片ッ端からゴミ袋をチェックして表に搬出。 そうだ。仕事始め日早々に粗大ゴミもあるのだった。長い塩ビパイプ数本も表に出す。 資源ゴミはペットボトルと食品トレイを優先して処理。缶と瓶は大したことないので残りは明日で間に合う。 館内の掃除をやる時間をひねり出して駆け回る。

10:15 撤収。今度は区役所へ向かう。ここからならいったん十間橋方面に向かうのが自然な経路か。

押上駅。横着して一駅だけ電車に乗る。本所吾妻橋駅で降りる。地上に出て区役所へ向かう。 手を洗う。一階の住民課が年始休み明けからフル稼働している。お疲れちゃん。

10:40 福祉事務所。I 氏に一週間ぶりに面会。日付だけ異なる前回と同じ書面を用意してもらう。二度手間になって御無礼。

11:00 言問橋バス停。金町駅行きに乗り東向島一丁目バス停で下車。少し歩くハメになる。 いつも最寄りのバス停がわからない。

曳舟の部屋。携帯電話で歯医者を予約。明日の今頃がいい。

PC を起動。

  • ミカド放送局【ミカドちゃんブロマイド当選番号発表配信】20220103 - YouTube: コンビニのプリンターで打ち出すカードに番号が書かれていて、それで抽選する。 当選者は番号を深町氏へダイレクトメッセージで連絡するらしい。
  • Sphere–cylinder intersection - Wikipedia: 交線が自明でない場合を考える。この記事の座標系では、球の方程式と円筒の方程式から $y$ を消去することができる。 すると $x$ と $z$ の二次式になり、これは $xz$ 平面上に投影すれば放物線を表す。 超特殊な場合には交線が 8 の字を描く。これを Viviani の曲線と呼ぶ。
  • Circle of a sphere - Wikipedia: 言われて初めて気付いたが、地球の緯線と経線は性質が違うところがある。 地球を球に見立てると、後者は大円(の半円弧部分)しかない。 球と球の交線は一般的には円になる。球方程式同士から変数を消去すると、交線を通る平面の位置が得られる。

12:05 おやつ。

13:45 寝たい。

16:45 起きる。外出。

イトーヨーカドー曳舟店。体温チェック。

押上駅バス停。錦糸町駅前行きに乗車。錦糸公園前で下車。

17:15 オリナス錦糸町。二階トイレ、ベンチ。

18:00 タイトー F ステーションオリナス錦糸町店。MJ プロ卓東風戦 4 クレ。 二日連続浮きで終了。レーティング 2000 超えの打ち手は押し引きの判断が恐ろしく正確。

【SCORE】
合計SCORE:+73.1

【最終段位】
四人打ち段位:昇龍 幻球:10

【1/4の最新8試合の履歴】
1st|---**-*-
2nd|-*------
3rd|--*--*-*
4th|*-------
old         new

【順位】
1位回数:3(37.50%)
2位回数:1(12.50%)
3位回数:3(37.50%)
4位回数:1(12.50%)
平均順位:2.25

プレイ局数:39局

【打ち筋】
アガリ率:20.51%(8/39)
平均アガリ翻:3.00翻
平均アガリ巡目:13.25巡
振込み率:7.69%(3/39)

【1/4の最高役】
・跳満

気分転換にビートマニア STEP UP モード。占い師をクリア。

20:15 カスミオリナス錦糸町店。367 円。クーポン消費。あと一枚ある。

  • 歯ブラシ
  • 柿ピー

20:40 ビッグエー墨田業平店。669 円。

  • 十和田風牛バラ肉の焼肉弁当
  • シュークリーム
  • 黒コッペ
  • 絹豆腐
  • シーフードヌードル
  • コッペパンジャム&マーガリン

20:50 曳舟の部屋。入浴。

21:30 風呂から出る。PC に戻る。晩飯。

メールチェックを忘れていた。歯医者予約システムからの返信あり。成立したようだ。 洗濯の時間とかぶってしまうことを思い出した。

The Book of Shaders: Patterns を学習する。

23:45 苦手なオフセットの節終わり。 積み上げてあるレンガを交互に上下左右にシフトするアニメーションがエレガントなコードにならない。 ベクトル成分ごとに演算しようとするのは筋が悪かろう。

vec2 moveEvenRow(vec2 st, float offset){
    float f = 1. - step(1., mod(st.y, 2.));
    st.x += f * (.5 - offset);
    return fract(st);
}

// ... 類似関数があと三個

vec2 rotateTiles(vec2 st, float now){
    float i = mod(now + .5, 4.);
    float offset = fract(now);
    return mix(
        moveEvenRow(st, offset),
        mix(
            moveEvenCol(st, offset),
            mix(
                moveOddRow(st, -offset),
                moveOddCol(st, -offset),
                step(3., i)),
            step(2., i)),
        step(1., i));
}