2012-11-19 3 views
3

선분과 호 사이의 거리를 어떻게 확인합니까?호와 선분 충돌 감지

호가 채워지지 않으므로 원의 바깥 쪽 가장자리가 중요합니다.

충돌 감지를하고 싶습니다. 기본적으로 두 개의 원형 객체가 있습니다. 하나는 선 위로 이동하고 다른 하나는 호를 따라 이동합니다. 오브젝트의 충돌 반경이 있습니다.

일정한 속도로 움직이는 시간별 분석 (반복적 솔루션 있음)이 가능한 폐쇄적 인 솔루션이 없다고 생각하기 때문에 정확한 충돌 감지가 아닙니다.

난 그냥 의사 코드가 필요합니다. 호를 두께가없는 두 개의 호와 끝에있는 두 개의 원으로 변환하고 기존 알고리즘을 사용하여이 작업을 수행 할 수 있지만 시간에 민감합니다. 이를 프리미티브로 분해하고 개별적으로 검사하면 일부 사항을 다시 확인/다시 계산할 수 있으므로 불필요한 계산을 피하고 싶습니다.

답변

2

아크가 내가 생각하는 바램이 되길 바랍니다. (영어는 제 언어가 아닙니다). 여기 내가 어떻게 그랬어. 마지막 기능은 문제를 해결하는 기능이며 이전 기능은 유틸리티입니다. 그것은 잘 작동합니다. 아이디어는 원과 선 사이의 교차점을 계산하고 원호 또는 선분에 있지 않은 원점을 거부하는 것입니다.

참고 : 호는 중심 (xc, yc), 반경 및 두 각도로 정의됩니다. 두 개의 각도가 두 개의 호 (반 시계 방향과 시계 방향)를 정의 할 때, 나는 원호가 시계 반대 방향으로 첫 번째 각도에서 두 번째 각도로 간다고 가정했다. 두 각도는 [0.2.PI [이므로 호가 (xc + R, yc)를 통과하는 경우 첫 번째 각도는 두 번째 각도보다 커야합니다.

코드는 C++입니다. 의사 코드로 다시 변환 할 시간이 없었습니다. 나는 그것이 도움이되기를 바랍니다.

아크가 내가 생각하는 바램이 되길 바랍니다. (영어는 제 언어가 아닙니다). 여기 내가 어떻게 그랬어. 마지막 기능은 문제를 해결하는 기능이며 이전 기능은 유틸리티입니다. 그것은 잘 작동합니다. 아이디어는 원과 선 사이의 교차점을 계산하고 원호 또는 선분에 있지 않은 원점을 거부하는 것입니다.

참고 : 호는 중심 (xc, yc), 반경 및 두 각도로 정의됩니다. 두 개의 각도가 두 개의 호 (반 시계 방향과 시계 방향)를 정의 할 때, 나는 원호가 시계 반대 방향으로 첫 번째 각도에서 두 번째 각도로 간다고 가정했다. 두 각도는 [0.2.PI [이므로 호가 (xc + R, yc)를 통과하는 경우 첫 번째 각도는 두 번째 각도보다 커야합니다.

코드는 C++입니다. 의사 코드로 다시 변환 할 시간이 없었습니다. 나는 그것이 도움이되기를 바랍니다.

URL : http://www.fichiers.univ-metz.fr/depot/minich/SegmentArcIntersection.txt

가능한 이주!