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没有上下限,当颜色用之前要先截断。