1

我有一条线段 (x1, y1), (x2, y2) 我需要“镜像”,因此新线垂直于第一条线并穿过其中间。

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

谁能帮我一个函数/公式来处理这个?

4

2 回答 2

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 重复。

如果你小心的话,你也可以组合步骤。

于 2011-09-09T21:38:13.830 回答
2

看来您正在寻找对称性。好吧,这样做的一个好方法是使用缩放矩阵

缩放矩阵

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

vx=vy=vz= 1 的缩放矩阵是恒等变换。为了获得镜像效果,您可以简单地反转要执行对称的轴的矩阵系数。

例如 :

1  0 0|px

0 -1 0|py

0  0 1|pz

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

于 2011-09-09T21:44:07.173 回答