2013-07-16 2 views
1

나는 스윔 레인 다이어그램을 만드는 중이지만 다이어그램의 노드를 연결하는 선을 자동으로 배치하는 좋은 알고리즘을 제시 할 수는 없습니다. 내가 본질적으로 원하는 것은 이것이다.여러 구부러진 선이 교차하는지 감지

enter image description here

그러나, 나는 중복 또는 지금 교차 선에 대한 어떠한 보호를하지 않고 때로는 매우 지저분 가져옵니다.

이미 그려진 선들과 선이 교차하는지 감지하는 방법을 아는 사람이 있습니까? 필자가 생각해 낸 한 가지 아이디어는 배열이나 테이블에 경로를 저장하고 새 줄을 그릴 때마다 전체 테이블을 확인하는 것이지만 효율적이지는 않습니다.

저는 자바 스크립트와 자바에서 GWT를 사용하고 있습니다. 어쩌면이 언어로 제공되는 도구 중 하나를 사용하여 쉽게 해결할 수 있을까요?

+0

[this] (http://stackoverflow.com/questions/15594424/line-crosses-rectangle-how-to-find-the-cross-points/15594751#15594751)와 같은 것이 도움이 될 수 있습니다. 언어. 자바 스크립트와 자바는 어떤 방식 으로든 똑같은 것이거나 관련이 없습니다 ... – MadProgrammer

+0

저는 자바 스크립트와 자바 모두에서 프로그래밍 할 수 있습니다. javascript 인 경우 GWT의 JSNI로 래핑 된 결과가됩니다 (나중에 디버깅하기 쉽도록). 자바라면, GWT는 어쨌든 자바 스크립트로 출력 할 것입니다. 제공 한 링크는 내 문제와 관련이 없습니다. 선이 사각형과 교차하는지 확인하지 않기 때문입니다. 또한이 선들이 구부러지기 때문에 선이 기울기를 통해 교차하는지 정확하게 확인할 수 없습니다. 그러나 잠재적으로 각 선을 세그먼트로 분리 할 수는 있지만 매우 지루할 수 있습니다. 나는 최후의 수단으로 그것을 구할 것이다. – Offset

+0

선 교차점은 선 교차점입니다. 예가 직사각형과 선 교차점에 초점을 맞추고 있다는 사실은 솔루션이 선/선 교차점으로 분해 할 때 약간 부적합합니다. – MadProgrammer

답변

0

라인 교차점을 최소화하는 것이 실제 문제라면 다이어그램에서이를 달성하기위한 몇 가지 알고리즘이 있습니다. 예를 들어 this link을 확인하면 Lee algorithm 또는 A* Algorithm과 같이이 종류의 다이어그램에도 사용되는 auto routing for electric design automation에 사용되는 알고리즘이 더 많이 있습니다.

사용중인 도구가 이러한 종류의 알고리즘을 구현할 수있는 충분한 유연성을 가지고 있는지 여부는 알지 못합니다. 일반적으로 특정 다이어그램 유형에 따라 고유 한 휴리스틱을 구현해야하지만이 링크가 충분하기를 바랍니다. 좋은 아이디어를 줄 수 있습니다.

그래프에서 선 교차점을 최소화하는 것은 어려운 NP 하드 문제이므로 자세한 내용은 this link (about the crossing number)을 확인하십시오.

행운을 빈다.

관련 문제