2012-09-15 2 views
0

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); 

I이 -1이 될 때에 newK의 값 -0.375을 실행하면 얻는다.

EDIT : newK는 -2,666667이어야하며 -1이 아니어야합니다.

무엇이 누락 되었습니까?

답변

2

k1을 계산하는 중에 오류가 발생했습니다. 계수 kdx보다 dy이므로 k1 = (p2.Y - p.Y)/(p2.X - p.X)이어야합니다.

+0

당신이 맞습니다. :). 고맙습니다. – RobinHu

관련 문제