Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Animation 如何找到对齐两条直线的变换矩阵?_Animation_Matrix_Xna_Transformation - Fatal编程技术网

Animation 如何找到对齐两条直线的变换矩阵?

Animation 如何找到对齐两条直线的变换矩阵?,animation,matrix,xna,transformation,Animation,Matrix,Xna,Transformation,给定三维空间中的两个点,A和B,我得到一条线段LS。给定两个新的点A'和B'生成线段LS',我需要找到将LS转换为LS'的转换矩阵。假定线段的长度相等 我有一个关于如何计算矩阵的理论,但我真的想从你们这些优秀的人那里得到一些反馈,看看这是一个好的理论还是有更好的方法 这是我的算法: 设L和L'是平行于LS和LS的线' 找到L与L相交的点P' 求L和L’之间的角度V 最终转换矩阵为: 平移(-p)*旋转(V)*平移(p) 好奇者的一些背景:我正在XNA中构建这个,尽管这个数学问题应该是相当一般的。

给定三维空间中的两个点,A和B,我得到一条线段LS。给定两个新的点A'和B'生成线段LS',我需要找到将LS转换为LS'的转换矩阵。假定线段的长度相等

我有一个关于如何计算矩阵的理论,但我真的想从你们这些优秀的人那里得到一些反馈,看看这是一个好的理论还是有更好的方法

这是我的算法:

  • 设L和L'是平行于LS和LS的线'
  • 找到L与L相交的点P'
  • 求L和L’之间的角度V
  • 最终转换矩阵为:

    平移(-p)*旋转(V)*平移(p)


  • 好奇者的一些背景:我正在XNA中构建这个,尽管这个数学问题应该是相当一般的。线段是连接线段的较大结构的一部分。对于每个片段,我将为每个动画帧预先计算一个变换矩阵。

    我想,用a到a来代替寻找交点就足够了。那么你可能需要两次旋转,一次使两条线在同一平面上,另一次使它们实际对齐。

    这些线总是相交吗?@tafa:不,谢谢你指出。我不能保证,事实上,仔细想想,它们在某些情况下很可能是并行的。是的,这应该是可行的,而且考虑到这一点,可能会更安全:如果LS和LS'是并行的,我的初始算法就会出问题。