我需要計算兩點之間垂直的向量。垂直於點的向量
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;
}
但我不知道如何讓垂直向量。
我需要計算兩點之間垂直的向量。垂直於點的向量
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;
}
但我不知道如何讓垂直向量。
翻轉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;
您也應該檢查長度爲非零。
在二維工作時,只需切換另一個矢量的x和y座標並取反,就可以獲得垂直矢量。這可以通過將2D旋轉90度並注意正弦爲1和餘弦爲0來證明,所以這些值只是切換位置。
如果向量是(1,1),並切換座標,結果向量顯然不是垂直。您還需要反轉一個座標。 –
@FrankPuffer確實如此。已經混淆了正弦和餘弦,並忘記了標誌。 –
因此,第1,2點是來自圖像的'A','B',你想要得到紅色? –
您已經計算了長度AB,而不是矢量。 – Jason
我需要兩個,但我認爲他們彼此都是消極和積極的? – bigcodeszzer