gpt4 book ai didi

python - 应用 Up Vector 查看向量

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:16 25 4
gpt4 key购买 nike

任何人都可以帮助我应用或理解如何将向上向量应用于向量矩阵吗?这就是我目前正在研究矢量的方式。如果这是错误的,但它似乎有效(只是无法为我的对象选择向上向量),请现在告诉我:

pos1 = # a random vector
pos2 = # a random vector

vec3 = (pos2-pos1).GetNormalized()
vec2 = vec3.Cross(Vector(0,1,0)).GetNormalized()
vec1 = vec3.Cross(Vector(1,0,0)).GetNormalized()
new_mx = Matrix(pos1,vec1,vec2,vec3)

这目前效果很好,因为我能够在 3D 空间中随机移动的方向上创建一个对象点,尽管当它以负数或 180 度的角度移动时,对象会转动倒挂。我如何给它一个向上向量,即 +Y 来应用于这个新矩阵?例如,就像游来游去的鱼一样,它的鳍总是向上的。任何帮助或积分都会很棒。谢谢。

最佳答案

关键是,您想要交叉 vec2vec3 以获得最终方向:

pos1 = # start location
pos2 = # location to look at
up = # specified up vector

vec3 = (pos2 - pos1).GetNormalized() # "lookat" vector
vec2 = vec3.Cross(up).GetNormalized() # "right" vector
vec1 = vec2.Cross(vec3).GetNormalized() # different from above
new_mx = Matrix(pos1,vec1,vec2,vec3)

根据您的坐标约定,您可能需要更改上面的 vec1 符号以匹配硬连线坐标的方向。

关于python - 应用 Up Vector 查看向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20059758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com