第 33 课:向量标准化
我的解:normalize 等价 v/length(v)
我的解
uniform vec2 iResolution;
const float PI = 3.14;
void main() {
vec2 uv = gl_FragCoord.xy / iResolution.xy;
vec2 o1 = vec2(0.25,0.5);
vec2 o2 = vec2(0.75,0.5);
vec2 dxdy1 = uv - vec2(0.25,0.5);
vec2 dxdy2 = uv - vec2(0.75,0.5);
vec2 N1 = dxdy1/length(dxdy1);
vec2 N2 = dxdy2/length(dxdy2);
float zone = step(0.5, uv.x);
float angle = zone == 0.0 ? N1.x:N2.y;
gl_FragColor = vec4(angle*vec3(1.0), 1.0);
}
复盘笔记
- normalize 等价 v/length(v)
- vector normalize,v = (x, y), 其中根据数学定义,x=是cos(theta), y是sin(theta)。
- 当然想暴力破解:可以写成
- float N3 = cos(atan(dxdy1.y, dxdy1.x));