1/16

日記

2026/01/16

線形代数

一次独立

2次元では別々の方向に向いていること(平行ではない)、3次元では2つのなす平面上に3つめのベクトルがないこと。

一般化すると、
いずれも0でないベクトルa1 ~ anについて、線形都合した結果 = 0 が成り立つのがその実数倍の数が全部0だけの場合。

それ以外を一次従属という。

線形結合

ベクトルをそれぞれ適当な実数倍して足し合わせる。
3個のベクトルとか。それぞれの値のことじゃないよ。

表現の一意性

あるベクトルが一次独立なベクトルa1~anの線形結合で表される時、その式は一通りである。

Three.js

射影

水面を線のように波紋を広げたかった。

ベクトルA,ベクトルBがある時、BからAに垂直に線を引いた時のAの割合を求める。射影の式を使う。

RenderTarget

new WebGLRenderTarget(width, height, option)

オプションについて、

  • format
    デフォルト:THREE.RGBAFormat
    1ピクセルがR,G,B,Aの4成分で出来てる。
  • type

    デフォルト:THREE.UnsignedByteType
    その各成分をどんな表現で保存するか
    0 ~ 255の整数(8bit=1byte) RGBA各成分=1バイト

    1ピクセル=RGBAの4バイト = 32bit

Float32Arrayは1要素32bit = 4バイト

Uint8Arrayは1要素8bit = 1バイト

GPU→CPU

フラグメントシェーダーで計算してもgl_FragColor()とかいても0~1なので範囲外は潰れる。

よってGPUで計算したfloat(32bit浮動小数点)を RGBA (8bit)に手動でエンコードする GLSL コード、encode_float関数が必要

GPUで計算したfloatを[テクスチャに正確に保存するため]。

ただ、今はwebGL2がどのブラウザでも対応されているので、よい。

buffer

const buffer = new ArrayBuffer()
Float32Array(buffer)
Uint8Array(buffer)

とかそういうふうに使うので、

float32Array(Uint8Array(buffer).buffer);
でも使える。


WebGL2がブラウザ対応されている現在では、上の記述は色々不要だと判明。

昔の人はそうしていたんだということで、、、

quaternion

  • quaternion.setFromUintVectors(vFrom, vTo)
    vFromをvToに一致させる回転を作る。
  • quaternion.alerp(toQuaternion, 0.1)
    今のquaternionから、toQuaternionへ少しずつ滑らかに近づける

デザイン

  • 白+グレーデザインは無機質でワイヤーフレームっぽくなる。
    赤にほんの少し近づけてベージュにするとgood
  • アイコン 薄くないか?

英語

take a hiatus

reign

I'm gonna freaking smash it.

There’s no denying it now

keeping you in check

see A for what A really is

See what you’ve been missing

You guys mean so much to me

bring people together

  • penetrate armor(装甲を貫く)
  • penetrate the market(市場に入り込む)
  • penetrate his thoughts(考えを理解する)

watch out

感想

就寝前白湯やってみよう

→白湯うまいか?まずいけど

Is plain hot water tasty? It was Terrible.