我有一条线段 (x1, y1), (x2, y2) 我需要“镜像”,因此新线垂直于第一条线并穿过其中间。
线段 (0,0),(2,2) 应该返回一个新的线段 (0,2),(2,0)
谁能帮我一个函数/公式来处理这个?
中点是 (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 重复。
如果你小心的话,你也可以组合步骤。
看来您正在寻找对称性。好吧,这样做的一个好方法是使用缩放矩阵。
vx, vy, vz 是缩放系数。px,py,pz 是一个点的坐标。如果将点坐标的比例矩阵相乘,您将得到该点的比例坐标。
vx=vy=vz= 1 的缩放矩阵是恒等变换。为了获得镜像效果,您可以简单地反转要执行对称的轴的矩阵系数。
例如 :
1 0 0|px
0 -1 0|py
0 0 1|pz
将计算给定向量相对于 y 轴的对称点。