2012-08-29 4 views

답변

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 

당신이 할 수있는 일은 원점을 선택하는 것입니다. 당신은 선이 그 중심에 인하 것을 원하는 경우 예를 들어 보자 : (X2, Y2) (X1, Y1) (으)로부터 벡터와 같은 라인의

ox = x1 + (dx - dy)/2; 
oy = y1 + (dx + dy)/2; 
3

생각합니다. 그런 다음 우리는

vX = x2-x1 
vY = y2-y1 

면에서이뿐만 수직 동일한 크기의 벡터가에 따라 x와이 벡터의 Y 구성 요소를 얻을 x와 y 구성 요소

vXP = -(y2-y1) 
vYP = x2-x1 

당신이 확인할 수 있습니다 2 개의 벡터는 0이 될 2 개의 벡터의 스칼라 곱을 취하여 수직입니다. 이제 길이가 같고 첫 번째 벡터에 수직 인 벡터가 생겼으므로 선의 시작점을 결정하기 만하면됩니다. 우리는 그것을 (a, b)라고 부를 것입니다. 그런 다음 시작 지점을 사용하여 선의 끝점은

(a - (y2-y1), b + (x2-x1)) 

에 의해 주어진다 또는 당신이 (수직 여전히) 반대 방향으로 가리 키도록하려는 경우가있을 것입니다

(a + (y2-y1), b - (x2-x1)) 
관련 문제