画一条垂直线

时间:2012-09-15 09:45:20

标签: c# math

我有一条定义为P1,P2的线,我试图在该线上绘制一条垂直线。 y = kx + m

var p = new PointF {X = 20, Y = 20};
var p2 = new PointF {X = 50, Y = 100};

//Calculate K
var k1 = (p2.X - p.X)/(float) (p2.Y - p.Y);
//Since k1*k2 = -1 for a perpendicular line:
var k2 = (1/k1)*-1;
//the lines intersect in p2.
var m2 = p2.Y - k2*p2.X;

//choose arbitrary X value
var p3 = new PointF {X = p2.X + 20};
p3.Y = (k2*p3.X) + m2;

var newK = (p3.X - p2.X)/(float)(p3.Y-p2.Y);

如果我运行这个newK得到值-0.375,它应该是-1。

编辑:newK应该是-2,666667而不是-1。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

看起来你在计算k1时遇到错误。系数kdydx,因此您应该k1 = (p2.Y - p.Y)/(p2.X - p.X)

相关问题