我有一个我需要“镜像”的线段(x1,y1),(x2,y2),所以新线与第一条线垂直并穿过它的中间。
线段(0,0),(2,2)应该返回一个新的线段(0,2),(2,0)
任何人都可以帮助我使用函数/公式来处理这个问题吗?
答案 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。
vx,vy,vz是缩放系数。 px,py,pz是一个点的坐标。如果将点坐标的比例矩阵相乘,则将获得该点的缩放坐标。
具有vx = vy = vz = 1的缩放矩阵是标识变换。 要获得镜面效果,您可以简单地反转要在其上执行对称的轴的矩阵系数。
例如:
1 0 0|px
0 -1 0|py
0 0 1|pz
将计算给定矢量相对于y轴的对称点。