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.