如何在更改网格形状后找到网格中某点的当前位置?

时间:2013-08-12 10:05:56

标签: algorithm math

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

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

enter image description here

现在我改变网格的尺寸,以便改变网格形状
以前的网格形状会像这样改变 enter image description here

更改网格的形状后
网格尺寸为(8,8),(18,12),(12,18),(22,19)
现在点(x)的位置是什么?
任何人都可以解释找到解决方案的方法 算法找到点的当前位置..
提前谢谢..

1 个答案:

答案 0 :(得分:1)

一个基本想法:

  • 从一个角落穿过该点画一条线。记录它经过的那一点。

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

  • 对于变形后的方块,在相同的角落之间绘制线条,并在两条线条的两侧划线。

  • 线交叉的位置应该是该点所属的位置。

一些注释:

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

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

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

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

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