剪切变换不会改变x方向的顺序

时间:2011-04-11 01:28:02

标签: algorithm computational-geometry

给定一组具有不等x坐标的点,我想计算值v>因此,剪切变换(x,y) - > 0。 (x + v * y,y)不改变x方向的顺序。

2 个答案:

答案 0 :(得分:3)

这并不困难。通过x轴对点进行排序。由于剪切变换的连续性,您可以找到两个连续点(按x顺序)不改变顺序的最大值。设(x,y)和(x',y')是排序中的两个连续点。当v> 0时,x坐标变为x - >; x + vy和x' - > x'+ vy'。现在作为x'> x,您希望找到最大值v,使得x'+ vy'> = x + vy。通过线性,它足以解决

x' + vy' = x + vy

x' - x = vy - vy' = v(y - y')

从而

v = (x' - x)/(y - y')

如果结果为负,那么v的任何值都会变化(点数越来越远);如果结果为正,则该对(x,y),(x',y')可以容忍的最大值。现在计算所有连续对的最大值并取其最小值。

请注意,如果y = y',则v变为未定义。在这种情况下,点位于y轴上的同一点,剪切变换不会改变它们的距离。

答案 1 :(得分:0)

将每个点(x,y)转换为光线{(x + yv,v)| v≥0的xv半平面中的v≥0}使用分段交叉算法找到v最小的那个。