【问题标题】:Rotate transformation matrix to match reflection vector旋转变换矩阵以匹配反射向量
【发布时间】: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


【解决方案1】:

一点额外的研究澄清了一些事情:变换矩阵的前 3 列表示 3 个正交向量(x1, x2, x3),第 4 列表示光标在给定时间间隔的空间坐标。最后一行不包含任何数据,它只是为了保持矩阵正方形。旋转向量只需删除T 的最后一行,从我列出的函数R 中获取3x3 旋转矩阵并旋转每个向量:R.dot(x1), R.dot(x2), R.dot(x3) 然后我只需将这些值组合回一个 4x4 矩阵.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多