【发布时间】:2013-09-29 16:30:36
【问题描述】:
我已经查看了一些关于 stackoverflow 的与弹跳相关的问题,但似乎没有一个能让我摆脱困境。我有一个由与 3d 空间中的一条线相交的转换矩阵定义的海龟光标。我想要的是在交点处旋转光标,即变换矩阵,使其新方向与反射向量匹配。我的函数可以从入射矢量V 和反射线的法线N 中获得反射矢量R。我在评估之前对每一个进行标准化:
N,V=unit_vector(N),unit_vector(V)
R = -2*(np.dot(V,N))*N - V
R=unit_vector(R)
我的转换矩阵,T 在一个 numpy 数组中:
array([[ -0.84923515, -0.6 , 0. , 3.65341878],
[ 0.52801483, -0.84923515, 0. , 25.12882224],
[ 0. , 0. , 1. , 0. ],
[ 0. , 0. , 0. , 1. ]])
如何将 T 转换为 R 以获得正确的方向向量?我已经找到并使用了here 中的 R2_vect 函数来获取从一个向量到另一个向量的旋转矩阵,但是当我将它们发送到 vtk 进行渲染时,只有少数得到的反射看起来是正确的。我在这里问这个问题是因为我似乎已经达到了我从已经摇摇欲坠的线性代数中所能记住的极限。感谢您提供任何信息。
【问题讨论】:
-
“我有一个由变换矩阵定义的向量,它与 3d 空间中的另一个向量相交”——这没有意义。请解释清楚转换矩阵的作用。
-
我不确定,矩阵是 4x4,3d 空间中的向量可能有 3 个维度。我也不明白 OP 是什么意思
-
@flebool 在图形编程转换中有时会写成 4 个组件,并在 x、y、z 坐标上添加一个额外的“1”,这样翻译就可以包含在内而无需单独添加。
-
@andrew-cooke 问题已更新。该矩阵只是一个定义海龟光标的变换矩阵。光标的前进方向取自变换矩阵第二列中的值,并乘以距离,得到新光标的结果位置。从那里可以再次旋转和移动它。
标签: python vector numpy matrix turtle-graphics