首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Excel改变三维坐标系

用Excel改变三维坐标系
EN

Stack Overflow用户
提问于 2015-10-22 00:13:07
回答 1查看 8.2K关注 0票数 0

在一个特定的坐标系中,我的电子表格中有一个点云,云是这样的格式:Name X Y Z PT1 X1 Y1 Z1 PT2 X2 Y2 Z2 PT3 X3 Y3 Z3 PT4 X4 Y4 Z4 ... PTi Xi Yi Zi ...,我想使用列表中的四个第一个点来构造一个新的坐标框架,并在新的框架中转换我的所有点。

新的坐标框架必须定义为平面直线点(或3-2-1°变换):

  1. 平面是(PT1,PT2,PT3,PT4)的最佳拟合平面。我知道如何用excel LINEST公式构造平面方程。
  2. 在excel中,直线/矢量中点(PT1-PT2)到中点(PT3-PT4)线/向量易于构建。
  3. 点是中点(PT1-PT2)。

总之,起源(0,0,0)将在中点(PT1-PT2).新的X轴是向量中点(PT1-PT2)到中点(PT3-PT4).Y轴包含在平面上,垂直于X,Z垂直于X和Y。

现在我能找到平面和X,Y,Z轴的方程。

我的问题是如何根据这些参数构造转换矩阵,并使用excel公式实现。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-08-15 15:31:48

我试着回答,把任务分成五个部分。我将称x,y,z为以O和X,Y,Z为中心的旧轴,你们的新轴以P为中心。

试图为第一次尝试保存部分结果为空单元格。我不能给你一个唯一的公式来回答你的问题。

a)泛型转换是一种旋转翻译。你在P点找到了你的新来源地(你有坐标)。假设你的“旧原点”是O=(0,0,0,0),我可以简单地说,在这两个系统中,从旧原点到新原点的转换是向量P的d=x-P--欧几里得范数,在excel中很容易计算(我不知道是否有函数,我会使用Pythagoras定理)。有人试图构建用户定义的宏这里

现在有了平移向量(t1,t2,t3),您就可以为旧的轴设置一个新的原点,而不需要旋转它们。请注意这个符号,但它是一个简单的翻译公式(参见示例:如果x= x‘+ t1然后x’=x- t1),请考虑哪个是x‘,在您的情况下哪个是x’,尝试使用一个简单的点(1,0,0),并观察您的选择是否正确。做所有你点的翻译(即: PT1_t,PT2_t.)现在,在XYZ e xyz之间有一个中间参考系统。让我们称之为"pqr“

( c)现在,您的参考系统pqr和XYZ仅在旋转角度上不同。在建立旋转矩阵之前,你必须先决定哪个轴会旋转。最好是使用归一化向量(除以每个向量的范数),假设pqr系统和XYZ的旋转是(最多)3围绕固定轴旋转的组合。例如

  1. 你将围绕Z旋转pqr,把versor p放在XZ平面上。您将获得一个“新的”pqr‘系统。这是用3x3旋转矩阵RX完成的(我们还不知道)
  2. 您将旋转pqr‘围绕Y,使versor’与versor使用RY对齐。你现在有了pqr'‘
  3. 你将使用围绕X的旋转和矩阵RX对齐Q轴到Y和r轴到Z。pqr‘与XYZ完全对齐

总旋转是R= RX * RY * RZ,一个矩阵乘积。如何找到旋转?(按照我的轮换顺序不是强制性的!)您可以构建自己的序列,但XYZ、ZYX和ZXZ是最著名的)。

( d)每个矩阵都需要一个角度。第一个角度是在XZ平面上p与其投影之间的夹角。第二个角度是p‘(= RZ * p)和X之间的角度,第三个角度是q'’(= RY * q‘= RY * RX * q)和Y之间的角度,它必须等于r’和Z之间的角度。矩阵可以这样构造(如果A是一般角)。

代码语言:javascript
运行
复制
RX = [1   0      0
      0 cos(A) -sin(A)
      0 sin(A) cos(A)]

检查RY和RZ 在这个链接上,但是要注意:正如我们前面所说的,A是一个方向的旋转角度,所以你可能需要-A来旋转。一般来说,A是从旧轴到新轴的角度,正A是逆时针方向。

要计算角度A,使用简单的公式暴露在这里。Excel有所有的性腺测量公式(余弦,阿卡卡索.)你需要的。

( e)当您发现三个矩阵RY RZ与旧的pqr轴旋转时,您的新XYZ系统中的每个单点PTi‘都是从PTi’=R* PTi_t中得到的,您可以使用MMULT函数在此解释构建矩阵积。

对不起,这是我作为一个简单的学生唯一知道的系统。我希望它能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33271360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档