我绘制的线穿过点 - (x1,y1),(x2,y2)
现在我想画一条垂直于这条线的另一条线,长度相同。
请指导我......
答案 0 :(得分:3)
将您的线视为从(x1,y1)到(x2,y2)的向量。然后我们根据
得到该向量的x和y分量 vX = x2-x1
vY = y2-y1
与此相同但在平面上与其垂直的矢量具有x和y分量
vXP = -(y2-y1)
vYP = x2-x1
你可以通过取两个向量的标量乘积来验证这两个向量是否垂直。现在你的矢量长度相等且垂直于你的第一个矢量,你只需要确定你的线的起点。我们称之为(a,b)。然后使用您的起点,您的线的终点由
给出 (a - (y2-y1), b + (x2-x1))
或者如果你想让它指向反方向(仍然垂直),它将是
(a + (y2-y1), b - (x2-x1))
答案 1 :(得分:2)
嗯,这是简单的数学:
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;