1

我画了穿过点的线 - (x1,y1) , (x2,y2)
现在我想画另一条垂直于这条线的相同长度的线。

请指导我这个..

4

2 回答 2

4

将您的线视为从 (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))
于 2012-08-30T22:53:13.217 回答
3

嗯,这是简单的数学:

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;
于 2012-08-29T09:53:20.560 回答