나는이 문제에 대한 다른 솔루션이 있다는 것을 알고,하지만 난 배우고 그 목적을 위해 내 알고리즘이 여기에충돌 감지 수학 좌표와
가 작동하는 방법을하지 않는 이유를 이해하고자하는 내 솔루션은 작동합니다
그것은 각 사각형의 네 꼭지점의 좌표를 얻는다는 그들을 변환 그래서 그들은 0을 기준으로합니다, 0이 아니라 사각형 '기원보다는, 그들 각각이 공식 사용 회전 :
rotatedX = unrotatedX * cos(radiansOfCounterClockwiseRotation) -
unrotatedY * sin(radians);
을
및
rotatedY = unrotatedX * sin(radians) + y * cos(radians);
와 좌표로부터 '그럼 X 및 좌상 감산에 의해 분리를 비교하는 축 (Y) 값 및 우측 하단 꼭지점 계산 기원
'는 그들이 사각형에 상대적 있도록 변환 두 개의 직사각형의 평행 한 모서리 쌍 각각에 대해 1) 오른쪽 위 버텍스의 좌표.
그런 다음 축에있는 회전 된 각 정점에 대한 x 값을 계산합니다. 이 공식 :
,210의 축선과 정점을 통과하는 축에 수직 인 선 사이의 교차점을 얻기에서 유래는
이들 각 축의 값 체크를 비교 여부 :
maxXValueForRect0 >= minXValueForRect1 AND minXValueForRect0 <= maxXValueForRect1;
모든 축에 해당하는 경우 충돌이 발생하면
그러나 디버깅하는 동안 직사각형의 위치와 크기에 관계없이 최소 x 값 영역이 항상 최대 값보다 작음을 발견했습니다
아무도 나에게 무엇이 잘못되었는지 말해 줄 수 있습니까?
나는 그림이 도움이된다고 생각합니다. .) –