시스템에는 일부 소스 라인 (낮은 정밀도)을 참조 라인 (높은 정밀도)으로 이동해야하는 요구 사항이 있습니다. 다음 그림은 일반적인 사용 사례를 보여줍니다. 빨간색은 소스 라인이고 파란색은 참조 라인입니다.
이 경우 소스 라인이 부분적으로 이동하고 결과는 녹색 라인으로 표시됩니다.
소스 라인을 완전히 이동해야하는 상황이 있습니다.
결과:
현재 우리의 솔루션은 소스 라인의 헤드 / 엔드 포인트를 참조 라인에 투영하고 그 반대의 경우 소스와 참조 라인에서 투영 된 포인트를 찾는 것입니다. 이러한 투영 된 점을 사용하여 소스 및 참조 선의 필요한 부분을 추출한 다음 새 점으로 결합 할 수 있습니다.
대부분의 경우 작동하지만이 방법이 작동하지 않는 경우가 있습니다. 특히, 선 중 하나가 "C"모양이거나 헤드 포인트가 끝점에 매우 가까운 경우. 다음 두 그림은 시나리오를 보여줍니다.
내 알고리즘을 적용하면 결과가 나타납니다.
현재 알고리즘은 투영 된 점을 찾아 선을 추출하기 때문에 이해할 수 있습니다.
우리가 예상 한 것은 다음과 같습니다.
따라서이 작업을 수행하기 위해보다 강력한 알고리즘이 필요한 것은 이전 사례와 같은 특수 사례를 처리 할 수 있습니다. 나는 한 점에서 다른 점으로 모든 점을 투영하려고 시도하고 투영 된 선의 머리 / 끝점에 가장 가까운 두 개의 투영 점을 찾으려고 노력했지만 운이 없었습니다. 여전히 예기치 않은 결과를 제공하는 사례를 찾을 수 있습니다.
전에 비슷한 문제를 겪은 사람이 있습니까? 소프트웨어 나 라이브러리가 비슷한 작업을 수행 할 수 있다면 좋을 것입니다. 모든 답변을 부탁드립니다.