Gob*_*ins 2 math gradient 2d trigonometry vector
我在cathesian 2D系统中有两个点,它们都给出了向量的起点和终点.现在我需要新矢量和x轴之间的角度.
我知道渐变=(y2-y1)/(x2-x1),我知道这个角度= arctan(渐变).
但我不知道这是否适用于矢量所采用的每种情况(方向).我什么时候需要添加180度或类似的东西.
任何人都可以为我提供一些c/java代码或所有案例的提示.
感谢和最好的问候
你可以使用点积(http://en.wikipedia.org/wiki/Dot_product)但是将它全部简化,你最终只需要采用矢量端点的反正切来获得它与x轴之间的角度. .Atan函数通常以[-pi,pi]或[-180,180]的顺序返回,所以如果你想确保它正确包装,你需要检查你的向量的y分量是否为负数.在C中,您可以使用atan2而不是atan,并且它将使用每个组件的符号来确定角度的符号(http://www.cplusplus.com/reference/clibrary/cmath/atan2/).
例如,如果你有矢量点start = <1,2>和end = < - 5,-5>,通过从结尾减去开始将其调整回原点,给你<-6,-7> .所以你在看这一点.与x轴的角度为atan2(y,x),atan2(-7,-6),为-130.6.
double x = -6;
double y = -7;
fprintf(stderr,"angle is %.2f\n",atan2(y,x)*180/3.14159);
Run Code Online (Sandbox Code Playgroud)
角度是-130.60