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 的矩阵是按列填充的。

相关函数

用到 cos() 的教程