2D 형상 데이터 용 변환기를 쓰고 있습니다. 변환해야하는 요소 중 하나는 호입니다. 소스 시스템에서 원호는 두 개의 축으로 정렬 된 사각형으로 설명됩니다. 첫 번째 사각형은 호가 일부인 원의 테두리 상자입니다. 두 번째 사각형은 호 자체의 테두리 상자입니다. 제약 조건은 호의 경계 상자가 원의 경계 상자의 두 가장자리를 교차해야한다는 것입니다. 각 직사각형의 왼쪽 상단과 오른쪽 하단 포인트의 좌표를 알고 있습니다.원과 축 정렬 된 직사각형 사이의 교차
대상 시스템은 다음과 같이 호를 설명합니다. 직사각형은 호가 일부인 원 주위의 경계 상자입니다. 지금까지는 위와 같습니다. 그런 다음 호의 시작점과 끝점을 지정하는 두 점이 있습니다. 두 지점 모두 정확히 원의 "가장자리"에 있어야합니다.
질문 : 아크의 시작점과 끝점을 쉽게 계산할 수있는 방법이 있습니까? 나는 이미 this question을 보았다. 그러나 그것은 정말로 복잡해 보인다.
내가 원 호의 BoundingBox의 가장자리의 교차점을 계산해야합니다 것 : 아마도
내 생각을 지금까지 ...이 작업을 수행 할 수있는 쉬운 방법이있다. 위의 제한 사항으로 인해 두 가지 경우가 가능합니다. 한 모서리 만이 원과 교차하거나 두 모서리가 원과 교차합니다. 또한 다른 모든 모서리는 항상 원 밖에 있습니다.
업데이트 : 시작과 끝 지점이 두 부분으로 원을 자릅니다. 두 부분 중 아크로 그리는 부분은 시작 및 끝 지점의 순서에 따라 결정됩니다. 호는 항상 시작 지점에서 끝 지점까지 시계 반대 방향으로 그려집니다.
"하나의 가장자리 만 원과 교차합니다"라는 경우는 어느 것입니까? –
또한 원의 경계 상자는 사각형입니다. 그렇지 않습니까? (아마도 나는 중요한 것을 놓치고 있습니다!) –
@belisarius : 당신 말이 맞습니다. 원의 경계 상자는 사각형입니다. 그러나 두 번째 경계 상자는 대부분의 경우 사각형이 될 수 있습니다. "하나의 가장자리 만 원과 교차하는 경우"는 가장자리가 원과 두 번 교차 할 때입니다. 호 끝점은 모두 동일한 x 또는 y 좌표를 갖습니다. – McNumber