3/12
2026/03/12
GLSL
トルシェタイル
vec2 rotateTilePattern(vec2 st) {
st *= 2.0;
// 2倍に伸ばしたst(2x2の格子)を、格子ごとにindex分けする。
float index = 0.0;
index += step(1.0, st.x);
index += step(1.0, st.y) * 2.0;
st = fract(_st); //戻す
if(index == 1.0) {// st回転}
else if(index == 2.0) {// st別回転}
else if(index == 3.0) {// st別回転}
return st;
}ランダム
y = fract(sin(x) * 1.0);sinは-1~1なので、その小数部分は0~1の正。*1.0の部分を高めることで、擬似的にランダムな値が得られる。
100000にすると、十分ランダム。
この疑似ランダムの性質
可視化すると、中央0.5付近に集まっている。
このランダムを乗算すると0に、
sqrtで平方根を取ると1に集中する。
クラスの型
type SceneLike = {
scene:
camera:
update: () => void;
resize: () => void;
destroy: () => void;
}
class 〇〇 implement SceneLikeimplementで、「最低限これは持つ」みたいな型定義ができる。それ以上持っていても良い。
Three.js
GLSL - カメラからの距離
vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);
float cameraZ = length(mvPosition.xyz);
...
gl_Position = projectionMatrix * mvPositoin;mvPositionはビュー空間(カメラを原点とした座標系)での頂点位置なので、length(mvPosition.xyz)でその頂点までの距離になる
内省
食べ物も安定してきた。勉強時間も確保できているし、一日のルーティンができてきた。
アドラー心理学によると、自分のことは自分で決めることが幸せということらしい。ごもっとも。
英語の勉強と読書はできてないな。何を目指しているんだか。
I haven't been studying English or reading. What am I aiming for.haven't, don't, never などの否定の後では、複数のことを「どちらもしていない」と言うときには or を使います。