determinant
determinant
返回矩阵的行列式。支持 mat2、mat3、mat4,输出 float。
核心优势
以单节点暴露线性代数关键量,可用于检测手征/镜像缩放与面积/体积缩放因子,避免手写繁琐代数。
常见用途
检测模型是否包含镜像缩放(det < 0),用于修正 TBN/法线或切线手征
估算 2D/3D 变换的尺度变化(|det| 作为面积或体积缩放因子)
在程序化几何或 UV 变换中做稳定的反转判断
如何调整
函数本身无参数。通过更换输入矩阵控制结果:传 mat2 处理 2D 仿射(det≈sx*sy);传 mat3/由 mat4 截取用于法线与手征判断;传 mat4 可检测模型矩阵是否含反射。常见做法:比较符号(<0)、取绝对值或将 det 作为混合权重。注意非正交与极端缩放带来的数值误差,必要时结合 transpose/inverse/normalize 等预处理。
代码示例
1// 基于物体世界矩阵的行列式符号切换颜色
2const det = determinant( mat3( objectWorldMatrix() ) ); // mat3 截取上左 3x3
3material.colorNode = det.lessThan( 0.0 ).cond( color(0xff4d4d), color(0x2e90ff) );