我有这个 HLSL 功能:
float3 transform(float3 pos, float3 XYZ) {
float3 v = K * cross(XYZ, pos);
float f = 1.0 - K * dot(XYZ, pos);
float3 y = a + b;
return (y * f + cross(v, y)) / (f * f + dot(v, v));
该函数将一个 float3 位置转换为另一个 float3 位置。例如:
worldpos = transform(worldpos, addVector);
逆转这种转变的函数是什么?这样它就能将变换后的位置恢复到原来的位置?
我已将该功能分解为一行操作:
pos = (XYZ + pos) * (1 - K * 点(XYZ, pos)) + cross(K * cross(XYZ, pos)), (XYZ + pos)) / (pow(1.0 - K * dot( XYZ, pos)), 2.0) + 点(K * cross(XYZ, pos), K * cross(XYZ, pos)));
谢谢您的帮助!
我就是无法算出数学。