2/28

日記

2026/02/28

行列

  • 一次変換(Linear transformation):入力と出力がベクトルである関数
  • ベクトルは基底ベクトルの線形結合として表せる
  • v=(x,y)を変換する 基底ベクトルiとjがあるとして、iが(2,2) jが(-2,1)に移動したとすると
    v=x[2] + y[-2] となる 
    [2] [ 1]
  • 一次変換は[a b] となっていると iが(a,c)で jが(b,d)といえる。
    [c d]
  • [a b][x] = x[a] + y[b] = [ax + by]
    [c d][y] [c] [d] [cx + dy]
  • 90度回転はi=(1, 0) j=(0,1) のときi=(0,1), j=(-1,0)になる
    行列は[0, -1]
    [1, 0]
    掛け算の見た目は[回転行列]vとなる
  • 回転と平行移動の式の見た目
    [移動]([回転行列]v) となる
  • このように関数を読むときは右から左に読む

Three.js

aurora復習

vartexでvRd = modelPosition.xyz - cameraPosition;
fragmentでnormalizeしてレイの方向を求めてる。レイマーチングの一種。

三角波ノイズ

オーロラで最も難しい箇所なので、深追いしない。ノイズ関数の半端な値も、たまたまそうすればよく見えたというだけなので。

float tri(float x){ return clamp(abs(fract(x)-.5), 0.01, 0.49); }

fract(x)  // 0~1ののこぎり波
fract(x) - .5  // -0.5 ~ 0.5
abs(fract(x) - .5)  // V字型(三角波)
clampで0.0を避けて割り算でバグらないように

花火リファクタ

mix(2.5, 0.0, progress)
mixでもリマップみたいなことができるのか