镜像线段

时间:2011-09-09 21:27:56

标签: geometry line mirroring

我有一个我需要“镜像”的线段(x1,y1),(x2,y2),所以新线与第一条线垂直并穿过它的中间。

线段(0,0),(2,2)应该返回一个新的线段(0,2),(2,0)

任何人都可以帮助我使用函数/公式来处理这个问题吗?

2 个答案:

答案 0 :(得分:3)

中点是(mx,my)=((x1 + x2)/ 2,(y1 + y2)/ 2)。

要将端点绕中间旋转90度,首先计算向量:

(dx,dy) = (x1-mx),(y1-my)

然后将其旋转90度:

dx1 = -dy
dy1 = dx

然后新点变为:

x1 = mx+dx1
y1 = my+dy1

重复x2,y2。

如果您小心,也可以合并步骤。

答案 1 :(得分:2)

看来你正在寻找对称性。 好吧,这样做的好方法可能是使用scaling matrix

scaling_matrix

vx,vy,vz是缩放系数。 px,py,pz是一个点的坐标。如果将点坐标的比例矩阵相乘,则将获得该点的缩放坐标。

具有vx = vy = vz = 1的缩放矩阵是标识变换。 要获得镜面效果,您可以简单地反转要在其上执行对称的轴的矩阵系数。

例如:

1  0 0|px

0 -1 0|py

0  0 1|pz

将计算给定矢量相对于y轴的对称点。