矢量垂直于一个点

时间:2017-02-19 21:33:02

标签: java vector 2d

我需要计算两点之间垂直的矢量。

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;

    }

但我不确定如何获得垂直向量。

2 个答案:

答案 0 :(得分: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;

您还应该检查长度是否为非零。

答案 1 :(得分:0)

在二维工作时,只需切换另一个矢量的x和y坐标,然后取消一个,就可以得到垂直矢量。这可以通过将2D旋转90度并注意到正弦为1并且余弦为0来证明,因此值只是切换位置。