1

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

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

4

2 回答 2

2

这个问题是8年前的问题,虽然有点模糊,但我认为可以相当简洁地回答,如果我遇到它,那么也许其他人会遇到它并从实际的真实答案中获得一些好处而不是被接受的那个。(我为不小心投票赞成接受的“答案”而道歉。我最初反对它,但意识到这个问题实际上有点含糊,并试图扭转我的反对票。可悲的是,由于我的菜鸟代表,这似乎已经转化为实际的赞成票。它不值得反对,但也不值得赞成。)

导致了

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

10x10 笛卡尔参考系

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

笛卡尔参考系中的等腰三角形,原点有一点

我没有标记图像,但是这个三角形的 (a, b, c) 坐标显然是 a=(0,0)、b=(0,4) 和 c=(4,0)。

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

从笛卡尔网格上的原点平移的三角形对象

我们已经移动了三角形 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)∴</p>

∴a2=(1,1)

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

翻译

但这只是引导。您的问题是从一个笛卡尔参考系转换为另一个。考虑您的 10x10 参考框架位于更大的参考框架内:

一个

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

多

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

一个

现在我们需要在“全局”参考框架内翻译“本地”参考框架:

一个

所以,“局部”,我们三角形的 (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°,它可能看起来类似于:

在笛卡尔坐标系内逆时针旋转 30° 的等腰三角形

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

没有任何解释,只是因为我不认为你在问旋转,你所做的就是向后工作:

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

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

同样,这也适用于 3D 参考帧。

最后,如果您的笛卡尔局部参考系同时平移旋转(几乎可以肯定),那么您将应用这两种方法将您的点绘制到另一个(全局?)笛卡尔参考系上。

实际应用

哦,这么多!每天当我们开车或走在街上时,我们的大脑都会如此直观地这样做,以至于我不知道从哪里开始!

平移很容易,但在交叉轴时旋转会有点麻烦。使事情变得更容易的一个技巧是将对象从一个参考帧转换到另一个参考帧,以使触发更加直接。

用图片讲述故事:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

而这仅仅是开始……

我希望这会有所帮助。

于 2018-09-02T21:19:55.307 回答
1

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

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

于 2010-07-09T22:33:45.447 回答