2012-02-14 5 views
3

저는 게임이 아니므로 회전 된 사각형으로 충돌을 감지하는 데 적합한 충돌 감지 방법을 찾을 수 없으므로 다음과 같이 시도했습니다. 회전 된 사각형이 있습니다 (나는 그 모서리의 좌표를 얻을 수 있다고 가정한다. (아마도 CGRect 나 삼각 함수의 함수 일 수도있다.) 두 개의 모서리를 연결하는 선을 따라 모든 좌표를 얻고 싶다. 너무 길지는 않을 것입니다.) 배열로 가져와야합니다. 그러면 배열의 임의의 점이 포함되어 있으면 경계 사각형이 회전하지 않는 공의 포함 사각형을 확인할 수 있습니다. 만약 그렇다면, 그들은 충돌했다.행의 좌표를 배열로 가져 오기

이러한 좌표를 배열로 가져 오는 쉬운 방법이 있습니까? 내가 시작과 끝을 알고 있다고 가정 할 때? 꽤 효율적이지는 않지만 지금은 OpenGL 색상 감지를 사용하고 있으며 너무 느리고 잘 작동하지 않으므로 새로운 방법이 필요합니다.

감사합니다.

+0

아마 선분과 원의 교차점을 쉽게 찾을 수있을 것이다. [여기 링크가 있습니다] (http://doswa.com/2009/07/13/circle-segment-intersectioncollision.html). – user1118321

+0

ur 의견을 보내 주셔서 감사합니다. 이것은 꽤 많이 있습니다.이 줄을 얻고 Objective-C의 교차점을 확인하는 방법을 모르겠습니다. –

답변

1

이미 직사각형의 가장자리를 통해 선이 있습니다. 4 코너의 X, Y 좌표를 가져 가면 4 라인을 갖게됩니다.

일반적으로 충돌을 사용하면 거의 항상 가짜를 발견 할 수 있습니다. 회전이 필요한 경우에는 회전 된 사각형을 사용하면됩니다. 실제로 필요하다면 직사각형처럼 보이게 할 수 있습니다. 그것에게 원형 충돌을주십시오.

회전 된 사각형을 사용하는 경우 다른 방법으로 두 개체에 역 회전을 적용한 다음 충돌을 검사 할 수 있습니다. 따라서 rect가 45도 회전하면 rect가 -45도 회전하여 축이 정렬되고 원의 중심도 -45도 회전합니다. 이제는 훨씬 간단하게 충돌 할 수 있습니다.

여기에서 자세한 내용을 얻을 수 있습니다 : Circle-Rectangle collision detection (intersection)

+0

답변 해 주셔서 감사합니다. ur 첫 문장에 관한. 나는 네 구석을 가지고 있지만 어떻게 그 선을 줄 수 있습니까? 이것은 나의 초기 문제입니다. –

+0

네 줄이 있는데, 각각을 확인해야합니다. - 왼쪽 상단부터 상단 오른쪽, 상단 오른쪽 하단 등 – TurqMage

+0

아니, 내 말은, 어떻게이 포인트 사이의 라인을 얻을 수 있습니까? –

관련 문제