我画了穿过点的线 - (x1,y1) , (x2,y2)
现在我想画另一条垂直于这条线的相同长度的线。
请指导我这个..
将您的线视为从 (x1,y1) 到 (x2,y2) 的向量。然后我们根据下式得到这个向量的 x 和 y 分量
vX = x2-x1
vY = y2-y1
与 this 大小相等但在平面中垂直于它的向量具有 x 和 y 分量
vXP = -(y2-y1)
vYP = x2-x1
您可以通过取这两个向量的标量积来验证这两个向量是否垂直,这将是零。现在你有了等长的向量并且垂直于你的第一个向量,你只需要确定你的线的起点。我们称之为(a,b)。然后使用您的起点,您的线的终点由下式给出
(a - (y2-y1), b + (x2-x1))
或者如果您希望它指向相反的方向(仍然垂直),它将是
(a + (y2-y1), b - (x2-x1))
嗯,这是简单的数学:
int dx = x2 - x1;
int dy = y2 - y1;
int ox,oy; // Origin of new line
//...
drawLine( ox, oy, ox+dy, oy-dx) // This line will be perpendicular to original one
您所要做的就是选择原产地。例如,如果您希望线条在其中心切割,让:
ox = x1 + (dx - dy) / 2;
oy = y1 + (dx + dy) / 2;