我需要计算两点之间垂直的矢量。
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)
翻转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来证明,因此值只是切换位置。