atan
atan
一个数学节点,封装了 GLSL 的 `atan(y, x)` 函数。它接收一个点的 Y 和 X 坐标,并返回该点相对于原点的精确方位角(范围在 [-π, π] 弧度),是笛卡尔坐标到极坐标转换的核心。
核心优势
提供了将二维向量转换为无歧义、全范围(360°)角度的标准方法。它能自动处理所有象限和除零问题,极其稳健,是实现任何径向、旋转或漩涡类程序化效果的绝对基石。
常见用途
将方形的 UV 坐标转换为极坐标,用于生成雷达扫描、树木年轮等径向纹理效果。
通过将角度映射到颜色,创造 360° 的径向渐变、彩色罗盘或仪表盘背景。
实现程序化的“凝视”效果,通过计算角度来动态旋转角色瞳孔的纹理坐标。
通过将角度与半径关联起来修改,创造出扭曲的漩涡或螺旋图案。
如何调整
该节点本身不可配置。效果调整完全通过改变其输入的二维向量(x, y)来实现。例如,拉伸或压缩输入的 UV 坐标,将会使最终生成的径向图案从圆形变为椭圆形。
代码示例
1 // 将 UV 坐标中心移至 (0,0)
2 const centeredUV = uv().sub( 0.5 );
3
4 // 计算每个像素的角度,并将其从 [-PI, PI] 映射到 [0, 1]
5 const angle = atan( centeredUV.y, centeredUV.x );
6 const angleFactor = angle.div( Math.PI * 2 ).add( 0.5 );
7
8 // 使用该因子作为颜色,生成一个 360° 径向渐变
9 material.color = vec3( angleFactor );