목표는 다각형 모양의 페인트 브러시와 같이 화면에서 마우스를 드래그하여 브러쉬와 경로의 Minkowski sum을 생성하여 간단한 벡터 이미지 편집을하는 것입니다. 새 다각형은 이전에 기존의 다른 색상의 다각형에서 빼고 동일한 색상의 기존 다각형과 병합합니다.폴리곤을 브러쉬로 드래그하여 벡터 이미지 편집
각 마우스 움직임을 마우스의 이전 위치에서 현재 위치까지의 선분으로 가져 와서 해당 선분의 Minkowski 합계를 계산 한 다음 Weiler–Atherton clipping algorithm을 사용하여 해당 Minkowski 합계를 포함하도록 기존 다각형을 업데이트하십시오 .
Weiler-Atherton이 모든 마우스 움직임에 대해 실행하면 UI 지연이 발생할 가능성이 높으므로 최신 단계의 마우스 움직임을 따라 잡을 수있는 다른 스레드에 배치하거나 그 대안으로 지연을 계획합니다 도면이 완성 될 때까지 모든 Weiler-Atherton 계산을 저장 한 다음 저장시 대량 작업으로 수행하십시오. 이렇게하면 매우 많은 수의 겹치는 다각형이 누적되어 UI를 렌더링하는 데 걸리는 시간이 지연 될 수 있습니다.
질문 : 위의 계획은 Inkscape 및 기타 심각한 벡터 그래픽 편집 소프트웨어가이 작업을 수행하는 방식입니까? 그것은 알고리즘의 복잡성과 계산 복잡성 모두에서 미친 계획처럼 보입니다. 전문가는 무엇을 할 것인가?
다른 옵션 : 간단한 래스터 작업을 사용하여 페인팅을 수행 한 다음 래스터를 최종 단계로 벡터 이미지로 변환합니다. 래스터에서 벡터로 변환하는 것은 Weiler-Atherton보다 덜 까다 롭지 만 최종 출력물의 품질은 떨어질 수 있지만 더 나은 옵션 일 수 있습니까?
모든 마우스 움직임에 대해 이러한 알고리즘을 실행하면 성능 문제가 발생할 가능성은 거의 없습니다. 컴퓨터 게임 엔진은 프레임 당 계산 지오메트리를 크게 증가시킵니다. – jkff