저는 몇 시간 동안 답변을 찾고 있었지만 아무 것도 나타나지 않았습니다. 이것이 중복 된 것이라면 사과하지만 StackOverflow에서 내 특정 문제에 대한 해결책을 찾지 못했습니다.이상하게 행동하는 Java의 두 점 사이의 각도 찾기
나는 점과 y 축 사이의 각도 발견 기능이 : 나는 답을 알고
getAngle(1,1); //returns 90.00000250447816
getAngle(5,5); //returns 51.34019265119512
getAngle(10,10); //returns 48.012787449847956
getAngle(100,100); //returns 45.287917631417216
getAngle(1000,1000); //returns 45.02866072599646
: 나는 그것을 호출 할 때
public static double getAngle(float x1,float y1) {
float y_x = 0;
float y_y = 1;
float p_x = x1;
float p_y = y1;
float theta = (float)Math.atan2((p_x-y_x),(p_y-y_y));
return (float)Math.toDegrees(theta)
}
그런 다음, 내가 이상한 행동을 얻을를 는 45입니다. getAngle (x, x)가 x의 한계가 무한대에 가까워짐에 따라 45에서 수렴하는 것처럼 보일 것입니다. 문제는 0.01에서 10.0 사이의 값으로 작동하는 데이 함수가 필요하다는 것입니다.
함수가이 방식으로 작동하는 이유와 내가 찾고있는 대답을 어떻게 알 수 있습니까?
P. 처음에 내점 제품 ID acos((ax*bx+ay*by)/|a||b|)
을 사용해 보았는데 비슷한 문제가 발생했습니다.
부정확 할 수 있습니다. 'float' 대신에'double'을 사용 해보고 무슨 일이 일어나는지 말해주십시오. – gparyani
그래서 기본적으로 벡터'[x1 y1] '과 수직 (또는 y 축) 사이의 각도를 얻으려고합니까? 수학이 잘못 되었다면 첫 번째 숫자는 90이되어야합니다. – FraserK
숫자가 y_y = 1 인 것 같습니다. 아마도이 값을 0으로 설정하려고했을 것입니다. –