2

我想在更改网格形状后在网格中找到一个点的位置

例如:
在下图中,我有一个尺寸为 (10,10)、(20,10)、(10,20)、(20,20) 的网格。
网格内有点 (x),该 点位置为 (17,13)

在此处输入图像描述

现在我改变了网格的尺寸,所以网格形状改变了
以前的网格形状像这样改变
在此处输入图像描述

改变网格形状后,
网格尺寸为 (8,8),(18,12),(12,18),(22,19)
现在点 (x) 的位置是什么?
谁能解释找到解决方案或算法以找到当前点位置的方法..
提前致谢..

4

1 回答 1

1

一个基本的想法:

  • 从一个角通过该点画一条线。记录它通过的一侧的点。

  • 对相邻的角落做同样的事情。

  • 对于变换后的正方形,在相同的角之间以及它们的线穿过边的位置画线。

  • 线交叉的地方应该是点所属的地方。

几点注意事项:

根据其定义,一条线无限延伸。

您需要使用相邻的角落(如前所述)。如果您使用相对的角,并且该点位于角之间的线上,您将无法将其缩小到该线之外。实际上,如果该点可以在一侧,使用相邻的角会产生同样的问题。在这种情况下,您需要 3 个角。

这是有效的,因为 2 条线只能 + 必须有 1 个交叉点,除非它们是平行的(这只能在上述情况下发生 - 包含相同点的 2 条线必须相等或不平行)。如果我们添加另一个角,由于是正方形,它不能与其他两条线平行。

如果 3 个角可以在同一条线上结束,则会弹出另一个特殊情况。在这种情况下,您需要使用所有 4 个角。但如果所有 4 个角最终都在同一条线上,这将不起作用,但在这种情况下,生成的形状将只是一条线段。

您也可以使用距离,只要记住使用比率而不是实际距离,因为形状变形。

于 2013-08-12T12:43:00.403 回答