为什么点积 return 值的算法与 google 中的点积不同?
Why the algorithm for dot product return value different from the dot product in google?
我看了关于点积的视频 https://www.youtube.com/watch?v=xlnkTEyAx7Q 并尝试用公式 a.b = |a||b|Cosθ 总结结果,但我无法得到它。请帮忙指出错误所在。考虑两个对象 a,在位置 (ax,0,az) 和 b,在位置 (bx,0,bz),来自视频中的内置函数,vector3.Normalize(b.position-a.position) 将 return 单位 vector/direction 的值 b 朝向 a.
因为两者都位于 y=0,就好像 2 个对象位于 2D 植物 x 和 z
所以 vector3.Normalize(b.position-a.position) 应该产生
并考虑对象面向 (ax,0,az) 方向然后 a.forward 将产生
最后,vector3.Dot(a.forward,vector3.Normalize(b.position-a.position)) 应该产生
尝试比较google中的结果 a.b = |a||b|Cosθ
两者的结果完全不同。请帮助我理解这些公式并纠正我的错误
角度θ是向量a和b之间的夹角。这个很重要。 cos(θ) 是视频中显示的值。但是在你的方程式中,你正在找到向量 (b - a) 并找到它与 a。所以你的vector3.Dot(a.forward,vector3.Normalize(b.position-a.position))
不等于cos(θ)而是cos(a和b-a之间的夹角)。而这不是你想要的。
您应该 vector3.Dot(vector3.Normalize(a),vector3.Normalize(b))
因为这与
相同
(a/|a|).(b/|b|) = (a.b) / (|a| * |b|).
你的最后一个公式是正确的。
我看了关于点积的视频 https://www.youtube.com/watch?v=xlnkTEyAx7Q 并尝试用公式 a.b = |a||b|Cosθ 总结结果,但我无法得到它。请帮忙指出错误所在。考虑两个对象 a,在位置 (ax,0,az) 和 b,在位置 (bx,0,bz),来自视频中的内置函数,vector3.Normalize(b.position-a.position) 将 return 单位 vector/direction 的值 b 朝向 a.
因为两者都位于 y=0,就好像 2 个对象位于 2D 植物 x 和 z
所以 vector3.Normalize(b.position-a.position) 应该产生
并考虑对象面向 (ax,0,az) 方向然后 a.forward 将产生
最后,vector3.Dot(a.forward,vector3.Normalize(b.position-a.position)) 应该产生
尝试比较google中的结果 a.b = |a||b|Cosθ
两者的结果完全不同。请帮助我理解这些公式并纠正我的错误
角度θ是向量a和b之间的夹角。这个很重要。 cos(θ) 是视频中显示的值。但是在你的方程式中,你正在找到向量 (b - a) 并找到它与 a。所以你的vector3.Dot(a.forward,vector3.Normalize(b.position-a.position))
不等于cos(θ)而是cos(a和b-a之间的夹角)。而这不是你想要的。
您应该 vector3.Dot(vector3.Normalize(a),vector3.Normalize(b))
因为这与
(a/|a|).(b/|b|) = (a.b) / (|a| * |b|).
你的最后一个公式是正确的。