GLSL 内置函数
cos()
返回弧度角的余弦值:和 sin 是同一条波,只是提前了四分之一圈。
函数签名
float cos(float angle)
vec2 cos(vec2 angle)
vec3 cos(vec3 angle)
vec4 cos(vec4 angle)参数
- angle
- 弧度制的角度。
返回值
-1.0 到 1.0 之间的值。
在线示例
修改右侧代码,左侧预览会实时更新。
工作原理
cos 和 sin 形状相同,只是从最高点开始:cos(0.0) 是 1.0,而 sin(0.0) 是 0.0。
两者合起来能描述一个圆。对任意角度,点 vec2(cos(angle), sin(angle)) 到原点的距离都正好是 1。角度增大时,这个点就沿着圆周移动。示例中的蓝点就是把 u_time 当作角度。
让 x 和 y 以不同的速度变化,圆就会变成一种循环的曲线,叫利萨茹曲线,示例中的橙点画的就是它。
常见用法
- 圆周运动:
center + radius * vec2(cos(t), sin(t))。 - 旋转坐标:二维旋转矩阵是
mat2(cos(a), -sin(a), sin(a), cos(a))。 - 调色板:
0.5 + 0.5 * cos(6.2831 * (t + vec3(0.0, 0.33, 0.67)))在色相之间平滑循环。
常见错误
- 圆周运动里把
cos和sin写反。仍然是圆,但起点不同,方向也可能相反。 - 旋转矩阵符号写错,导致转反方向。注意 GLSL 的矩阵是按列填充的。