C++ OpenCV光矢量计算
我想得到我的光向量,数学公式是C++ OpenCV光矢量计算,c++,opencv,C++,Opencv,我想得到我的光向量,数学公式是 float3 l_ik = p_light - focus / || p_light - focus || 为了获得|p|u light-focus | |的值,使用了cv中的normalize()函数,然后我尝试简单地计算A/| | B | |;因此我尝试将公式视为 A / B <=> A * B^(-1) in c++: float3 l_ik = (p_light - focus) * ( normalize(p_light,focus
float3 l_ik = p_light - focus / || p_light - focus ||
为了获得|p|u light-focus | |
的值,使用了cv中的normalize()
函数,然后我尝试简单地计算A/| | B | |;因此我尝试将公式视为
A / B <=> A * B^(-1)
in c++:
float3 l_ik = (p_light - focus) * ( normalize(p_light,focus)^(-1))
A/B A*B^(-1)
在c++中:
浮动3 l_ik=(p_灯光-焦点)*(规格化(p_灯光,焦点)^(-1))
这导致“math::operator*(…)中的“operator^”与不匹配。这意味着该操作员没有机具,或者什么?或者不可能计算向量^(-1)
对于任何帮助, ^是C++中的“xor”运算符,而不是你所期望的。代码>功率(一些材料、编号)代码>似乎更合适
此外,normalize()用于生成单位向量,并采用src和dst Mat,而您可能需要norm(p_light-focus);//差异的标准
(你指的是opengl而不是opencv吗?)
[编辑]
昨天我很盲目,你的公式就是单位长度(p_光聚焦)向量,所以:
Vec3f v = p_light - focus;
Vec3f l_ik = v / norm(v);
当然,代码> >但是没有<代码> POW(FLUAT3,INT)是的,我的意思是OpenCV:)OpenCV中没有FLAAT3。但是它可能与Vec3flater一起工作,我意识到框架中的normalize()
函数是vectorv/length(vectorv)
似乎更容易。但也能按你的方式工作。谢谢