我试图让我的光矢量数学公式
float3 l_ik = p_light - focus / || p_light - focus ||
要获取|| p_light - focus ||
的值,请使用cv中的normalize()
函数,然后我尝试简单计算A / || B ||因此我试图将公式视为
A / B <=> A * B^(-1)
in c++:
float3 l_ik = (p_light - focus) * ( normalize(p_light,focus)^(-1))
结果为no match for 'operator^' in 'math::operator*(...)
。这意味着这个运营商没有工具,或者什么?或者是不可能计算向量^( - 1)
答案 0 :(得分:1)
^是c ++中的'xor'运算符,而不是您的预期。 pow(some_mat, number);
似乎更合适
也normalize()用于制作单位向量,并使用src和dst Mat,而你可能想要norm(p_light - focus); // the norm of the diff
(难道你的意思是opengl,而不是opencv?)
[编辑]
昨天非常盲目,你的公式只是单位长度(p_light - 焦点)向量,所以:
Vec3f v = p_light - focus;
Vec3f l_ik = v / norm(v);