如何从一个笛卡尔系统转换为另一个笛卡尔系统

时间:2010-07-09 22:23:59

标签: geometry transformation cartesian

2D问题:我测量笛卡尔系统中三角形3个末端的位置。现在我将系统(三角形)移动到另一个笛卡尔系统并测量两端的位置。 如何根据此数据确定第3端的位置?

谢谢! (对不好的英语作为第二个角度抱歉)

2 个答案:

答案 0 :(得分:1)

这是一个非常模糊的问题,但如果我正确地阅读它,那么你需要的信息甚至更少。如果您将第一个坐标系转换为第二个坐标系,则将其应用于三个点中的每一个,以找到3个等效点中的每一个。

否则,如果你没有转型,我认为这是不可能的。毕竟,坐标系的无限多个可能的变换可以导致两个点的相同的两个位置,而第三个点的位置不同。

答案 1 :(得分:1)

这个问题来自8年前,但是尽管它有点模糊,我认为可以很简洁地回答,如果我遇到了,那么也许有人会遇到它,并从中受益。实际的实际答案,而不是被接受的答案。 (我为不小心提高接受的“答案”而表示歉意。我本来是降低投票的,但是意识到问题实际上有点含糊,并试图扭转我的降低投票的态度。可悲的是,由于我的菜鸟代表,这似乎已经转化为实际的赞扬。它不值得赞扬,但也不值得赞扬。)

引爆

因此,假设您有一个简单的笛卡尔网格或参考框架

A 10x10 cartesian reference frame

在该10x10参考框架内,您有一个三角形对象:

A isosceles triangle in a cartesian reference frame with one point at origin

我无法标记图像,但是此三角形的(a,b,c)坐标显然是a =(0,0),b =(0,4)和c =(4,0 )。

现在假设我们在笛卡尔参考框架(网格)内移动该三角形:

Triangle object translated from origin on a cartesian grid

因此,我们移动了三角形x = x + 1和y = y + 1,因此,假定“ b”和“ c”的新坐标为b =(1,5)和c =( 5,1),什么是“ a”?

很明显,“ a”为(1,1),但是通过数学运算,我们可以看到

Δb= b2-b1

Δb=(x2,y2)-(x1,y1)

Δb=(1,5)-(0,4)

Δb=(1-0,5-4)

∴Δb=(1,1)或(+ 1,+ 1)

如果我们对两个“ c”坐标进行相同的操作,我们将得出相同的答案,Δc也等于(1,1),因此它是平移(线性运动)而不是旋转,这意味着Δa也是(1,1)!所以:

a2 = a1 +Δa

a2 =(0,0)+(+ 1,+ 1)

a2 =(0 + 1,0 + 1)∴

∴a2=(1,1)

如果您查看图像,可以清楚地看到“ a”的新位置在(1,1)。

翻译

但这只是引导。您的问题是从一个笛卡尔参考系转换到另一个。考虑您的10x10参考帧在更大的参考帧内:

A "local" cartesian reference frame within a "global" cartesian reference frame

我们可以将您的10x10网格称为“本地”参考框架,并且它可能存在于“全局”参考框架中。在此全局参考框架中实际上可能还有许多其他“本地”参考框架:

Multiple "local" cartesian reference frames within a "global" cartesian reference frame

但是为了简单起见,我们当然要考虑另一个内的一个笛卡尔参考系:

A "local" cartesian reference frame within a "global" cartesian reference frame

现在,我们需要在“全局”参考框架内转换该“本地”参考框架:

A "local" cartesian reference frame translated within a "global" cartesian reference frame

因此,“局部地”,我们三角形的(a,b,c)坐标仍为{(0,0),(0,4),(4,0)},但我们本地参考框架的原点与全局参考框架的原点不对齐!我们的本地参照系已经偏移(+ 3.5,+ 1.5)!

现在我们的三角形的位置是什么?!

您基本上以相同的方式进行处理。我们的“局部”参考系的相对位置是(+ 3.5,+ 1.5),我们将Δf称为帧中的差异,因此相对于全局原点的三角形将为ag = al +Δf,bg = bl +Δf ,而cg = cl +Δf,其中(ag,bg,cg)是全局参考框架内的坐标,而(al,bl,cl)是局部参考框架内的坐标。

三维笛卡尔系统

完全相同,只包含第三个“ z”坐标,该坐标与三角形的位置相对应。

旋转

我从您最初的问题中得出的一个假设是,您实际上是在询问翻译,而不是在8年前问这个问题时对轮换感兴趣。 >

但是,很快,您需要使用trig来在参考框架内旋转2d对象,因此您需要首先确定旋转对象的位置,我们将其称为旋转轴。然后,确定旋转轴的位置后,重新计算三角形中三个点中的每个点的(x,y):

x = r·cosθ

y = r·sinθ

其中θ是我们旋转物体的角度,“ r”是该点到旋转轴的距离,“·”仅表示乘法。

因此,如果我们将三角形围绕点“ a”逆时针旋转30°,则其外观可能与此类似:

An isosceles triangle rotated 30° counter clockwise within a cartesian reference frame

但是,这又不是你的问题。您的问题是“给定两个点的位置,确定第三个点的位置”。

没有任何解释,只是因为我不认为您正在询问轮换,所以您要做的就是倒退:

如果x = r·cosθ,则θ= arccos(x / r)

现在,您有了旋转角度,现在可以将其应用于缺失点的原始位置以找到其(x,y),并且与我们的原始平移示例一样,它也可以从一个笛卡尔参考系移动到另一个笛卡尔参考系。这意味着,即使您的“局部”参考框架在全局参考框架内旋转,即使您在本地框架内似乎没有任何变化,也可以在全局框架内绘制对象点的位置。

同样,它也适用于3D参考框架。

最后,如果您的直角坐标系本地参考系同时被 旋转,那么您将同时使用这两种方法将点绘制到其他(全局?)直角坐标系。

实际应用

哦,好多!每天当我们开车或在街上行走时,我们的大脑都如此直观地做到这一点,我不知道从哪里开始!

平移很容易,但是在交叉轴时旋转会有点毛。使事情变得容易的一种技巧是将对象从一个参考系转换为另一个参考系,以使触发更加简单明了。

在图片中讲故事:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

那只是开始...

我希望有帮助。