这个函数的相反操作是什么,以撤消它执行的转换?

问题描述 投票:0回答:0

我有这个 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)));

谢谢您的帮助!

我就是无法算出数学。

vector hlsl coordinate-transformation
© www.soinside.com 2019 - 2024. All rights reserved.