GLSL 内置函数

tan()

返回弧度角的正切值,即 sin / cos。在接近 90 度时会冲向无穷大。

函数签名

float tan(float angle)
vec2 tan(vec2 angle)
vec3 tan(vec3 angle)

参数

angle
弧度制的角度。

返回值

sin(angle) / cos(angle)。没有上下限,在 PI/2 + k * PI 附近非常大。

在线示例

修改右侧代码,左侧预览会实时更新。

工作原理

tan(a) 等于 sin(a) / cos(a)。在 0 附近它几乎是一条直线,但角度接近 90 度(1.5708)时,cos 趋近 0,结果就冲向正无穷,然后跳到负无穷再重新上升。示例画的就是这些重复的分支。

常见用法

  • 相机视野:tan(fov * 0.5) 表示相机前方一个单位处画面有多宽,用来构造射线方向。
  • 风格化扭曲:对坐标取 tan 会产生拉伸、加速的图案。

常见错误

  • 正好在 90 度处求值,相当于除以 0。让输入避开 PI/2 + k * PI,或者对结果做截断。
  • 以为它像 sin 一样在 -1 到 1 之间。tan 没有上下限,当颜色用之前要先截断。

相关函数