在画布android上绘制垂直线给定线

时间:2012-08-29 09:46:34

标签: android math canvas

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

请指导我......

2 个答案:

答案 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;