寻找直肠公式
可悲的是,我的解析几何水平很低,所以我无法独自解决下面的问题。我希望找到三个旋转(Rx、Ry和Rz)的公式,这三个旋转建立了放置在给定坐标系中完全任意位置的矩形的位置。我只知道矩形的四个角(P1、P2、P3和P4),用上述坐标系表示。
如果可以使用AutoCAD检索这些旋转,该解决方案也将很有用。
如果有人在这方面帮助我,我将非常感谢他/她的支持。
非常感谢您的关注。 给定矩形的三个顶点,可以使用连接三个点的两个垂直单位向量和由这两个向量的叉积构造的第三个垂直单位向量来定义正交基。
然后,可以使用矩阵表示该基础,该矩阵的列包含三个单位向量:
对于标准WCS基础,该矩阵为:
该矩阵对将点从WCS平面变换到包含三个给定点的平面中的对应点所需的变换进行编码;(请注意,还需要平移向量来获得变换后平面中的正确高程和位置)。
通常,该矩阵是对对象从一个平面到另一个平面执行必要变换所需的全部,如本程序所示,例如[可能需要沼泽成员身份才能访问]。
然而,由于您正在寻找由矩阵在X、Y和Z轴中编码的旋转,我们可以将矩阵分解为三个旋转矩阵:
给定矩阵M,包含目标平面的基向量(相对于WCS平面表示):
我们可以通过X、Y和Z轴上的三个旋转来表示该矩阵,每个旋转分别由旋转矩阵M1、M2和M3编码:
M = M3·M2·M1(上面表示在X轴上旋转,然后在Y轴和Z轴上旋转)。
全文:
4(这里,a1、a2和a3分别是围绕X、Y和Z轴的旋转角度)。
然后,我们可以通过将M预乘每个旋转矩阵的逆来分解矩阵,因为我们处理的是正交矩阵(即A·A^T=i),逆矩阵只是矩阵转置(A^T=A^1),因此:
因此,我们可以通过计算每个旋转矩阵编码的旋转角度来确定围绕每个轴的旋转,然后将基矩阵乘以该旋转的逆矩阵。
在代码中,这可能是:
6
上述函数需要三个点来定义“目标平面”(即矩形的三个顶点),并将返回从WCS平面(Z=0,0,1)绕平面的X、Y和Z轴的旋转。 李,这真是太了不起了!非常感谢您的努力!
我真的很欣赏理论部分,我会努力理解它。我等不及周一早上测试代码了。。。
再次感谢! Mircea,如果您对替代方案感兴趣:
7
非常欢迎米尔恰,也感谢您的赞赏和感激。
我希望我已经清楚地解释了这些概念! Stefan,我是multumesc mult pentru ajutor!Voi incerca maine dimineata si aceasta solutie。
(Stefan,非常感谢你的帮助!明天早上我也会测试这个解决方案。) 这些例子对你有用吗? 李和斯特凡,我真的忘了这条线。你很温柔地帮助我,我忘了带反馈回来。所以,我必须为此向你们俩道歉!
是的,你的例子很有用。李提供的解决方案是我正在寻找的——将一组点(矩形的角点)分解为使其处于该位置所需的旋转集;斯特凡的代码是做上述旋转。
完整的故事是,事实上我需要的是将这个计算转换成另一种编程语言,用于一个需要Rx、Ry和Rz旋转集的内置函数,但同时我发现了一个已经开发的资源,所以忘记了这一点。
再次感谢! 没问题Mircea
这是一个既需要解决又需要解释的有趣问题,因此我对最终不需要解决这个问题并不感到沮丧,因为帖子和信息可能仍然会让社区中的其他人受益。感谢您对解决方案有效性的反馈。
李
页:
[1]