c++ - 确定从一个平面到另一平面的旋转角度

标签 c++ vector 3d rotation geometry

让我们在 3D 空间中有 2 个 vector v1、v2。 v1和v2属于2个不同的平面P1,P2。 v1 和 v2 相交于点 p(xp​​,yp,zp) v1:p->a 和 v2:p->b 其中 a(xa,ya,za) 和 b(xb,yb,zb) 分别是 P1 和 P2 中的 2 个已知点。 P1 和 P2 之间的角度“theta”已知,可以使用三个点 p、a、b 计算

这是我的问题: 我需要知道应该对 v1 应用哪种旋转才能与 v2 一致? 换句话说: v1 由起点 p(xp​​,yp,zp) 和方向 (alpha,beta,gamma) 定义 v1:[xp,yp,zp,alpha,beta,gamma]。 v2 由相同的起点 p(xp​​,yp,zp) 和方向 (alpha1,beta1,gamma1) 定义 v2[xp,yp,zp,alpha1,beta1,gamma1] 那么应该对 alpha、beta 和 gamma 进行哪些修改才能得到 alpha1、beta1 以及 gamma1

提前致谢

劳拉

最佳答案

看起来你想找出旋转矩阵 [M],使得 {v2} =[M]{v1},其中 {v1} 和 {v2} 都是 3x1 的单位 vector ,[M] 是 3x3矩阵。您可以引用旋转矩阵的维基百科页面here 。向下滚动到“从轴和角度旋转矩阵”部分,其中显示了绕给定轴按给定角度的旋转矩阵。对于您的情况,轴将是叉积 vector v1 X v2,角度将是 v1 和 v2 之间的角度,可以通过 acos( v1 dot v2 ) 获得。

关于c++ - 确定从一个平面到另一平面的旋转角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25648886/

相关文章:

javascript - XML3D:导出场景

c++ - Boost Spirit Qi Custom Syntesized Attribute(通过语义操作设置结构属性的特定成员)

c++ - 是否可以从兼容的IDE运行/调试(N)CURSES应用程序?

c++ - 类似于大量项目的双端队列,但少量的内存使用量很小?

c++ - 获取网格中心的屏幕位置

opencv - 如何使用对极平面图像确定物体与相机的距离?

c++ - 二进制 '=' : no operator found which takes a left-hand operand of type 'const Thing'

c++ - 如何在没有 dynamic_cast 的派生类型上实现 "less"?

c++ - 尝试读取失败后 cin 读数为零

c++ - 分配给 char[8] 的 vector