跳到主要内容
← Math

Math

Matrix

两个解没区别,这里注意一开始uv就被平移到了-0.5-0.5的空间里。下面的0.5,0.5 则是这个坐标系的右上角45的位置,旋转反而是最简单的一步

实时渲染 · 2D 片段 GLSL

第 16 课:Matrix

我的解:两个解没区别,这里注意一开始uv就被平移到了-0.5-0.5的空间里。下面的0.5,0.5 则是这个坐标系的右上角45的位置,旋转反而是最简单的一步

我的解

uniform vec2 iResolution;
uniform float iTime;

void main() {
  vec2 uv = gl_FragCoord.xy / iResolution;
  uv = uv * 2.0 - 1.0;
  uv.x *= iResolution.x / iResolution.y;

  float angle = iTime * 2.0;

  float X_x = +cos(angle);
  float X_y = +sin(angle);
  vec2 Xcol = vec2(X_x,X_y);

  float Y_x = -sin(angle);
  float Y_y = +cos(angle);[[#7 max]]
  vec2 Ycol = vec2(Y_x,Y_y);

  mat2 RotationMatrix = mat2(Xcol,Ycol);
  vec2 P = vec2(0.5, 0.5)*RotationMatrix;

  float t = 1.0 - smoothstep(0.24, 0.25, distance(P, uv));
  gl_FragColor = vec4(t, 0.0, 0.0, 1.0);
}

复盘笔记

  • 两个解没区别,这里注意一开始uv就被平移到了-0.5-0.5的空间里。下面的0.5,0.5 则是这个坐标系的右上角45的位置,旋转反而是最简单的一步
  • <2025/05/27>
  • ==记录时间: 5月28日 2025, 03:09 下午==