2017-02-19 1 views
0

두 점 사이의 수직 벡터를 계산해야합니다.점에 수직 인 벡터

enter image description here 나는이 같은 원래 벡터 얻을 수 있습니다 :

dir.x = point2.x - point1.x; 
    dir.y = point2.y - point1.y; 
    float hyp = (float) Math.sqrt(dir.x*dir.x + dir.y*dir.y); 

    if(hyp != 0){ 
     dir.x /= hyp; 
     dir.y /= hyp; 

    } 

을하지만 수직 벡터를 얻는 방법을 모르겠어요.

+0

점 1,2는 이미지의 'A','B'이며 빨간색 중 하나를 얻고 싶습니까? –

+0

길이가 AB가 아닌 벡터를 계산했습니다. – Jason

+0

둘 다 필요하지만 음수이고 서로 긍정적이라고 가정합니다. – bigcodeszzer

답변

1

플립 x 및 y는, 그들 중 하나가 부정 확인 후 정상화 길이로 나누어 : 길이가 영이 아닌 경우

double x1 = y; 
double y1 = -x; 
double length1 = Math.sqrt(x1*x1 + y1*y1); 
double x1 /= length; 
double y1 /= length; 

또는

double x2 = -y; 
double y2 = x; 
double length2 = Math.sqrt(x2*x2 + y2*y2); 
double x2 /= length; 
double y2 /= length; 

는 또한 확인해야한다.

0

2 차원에서 작업 할 때 다른 벡터의 x 및 y 좌표를 전환하고 하나를 음수로 설정하여 수직 벡터를 얻을 수 있습니다. 이것은 2D 회전을 90도 회전하여 사인 값이 1이고 코사인 값이 0이므로 값이 바뀌는 것을 알면 알 수 있습니다.

+1

벡터가 (1,1)이고 좌표를 전환하면 결과 벡터는 분명히 수직이 아닙니다. 또한 하나의 좌표를 반전시켜야합니다. –

+0

@FrankPuffer 네, 정확하게 요. 사인과 코사인을 이미 망쳤으며 사인을 잊어 버렸습니다. –

관련 문제