2011-07-26 2 views
4

사용자가 마우스로 클로 소 이드를 그리는 데 사용할 수있는 응용 프로그램을 만들려고합니다. 즉 나선형의 시작점과 끝점을 설정 한 다음 마우스로이 점을 드래그하여 모양을 설정할 수도있는 응용 프로그램을 작성하려고합니다. 시작과 끝 곡률을 수정하여 클로 소 이드. 아마도 곡률을 변경하기 위해 나는 그것의 확실성은 없지만 접선을 사용해야 할 것입니다.Qt에서 clothoids를 그래픽으로 그리는 방법은 무엇입니까?

Qt에서 어떻게 구현할 수 있습니까? Qt에서 실행할 수있는 예제 코드를 알고 있습니까?

+0

아직 클로 소 이드 그리기 문제를 해결해야하는 경우 몇 가지 샘플 코드에 대한 링크를 게시했습니다. 너무 늦은 지 일 년 반이면 죄송합니다. 그 동안 다른 효율적인 샘플 코드를 발견했다면, 그것에 대해 알고 싶습니다. – Rethunk

답변

3

가장 좋은 방법은 아마도 Graphics View Framework을 사용하는 것입니다.

Graphics View Examples 페이지에서 시작하는 데 도움이되는 몇 가지 예가 있습니다. Diagram scene 하나는 당신이 달성하기를 원하는 좋은 출발점처럼 보입니다.

+0

그래픽보기 프레임 워크가 실제로 들립니다. 그러나 어떻게 클로 소 이드 세그먼트를 그릴 수 있습니까? 내가 Qt에서 알고있는 것으로부터 베 지어 곡선에 대해서는 cubicTo가 있지만 여기서는 작동하지 않습니다. 나는 클로 소 이드 세그먼트에 대해 주어진 시작 및 끝 곡률에 따라 커브를 그립니다. – schmimona

2

나는이 오래된 질문이지만, 이해 관계자에 대한 오일러 "모양 완료에 대한 오일러 나선형"종이 에서 (clothoids) Kimia, 프랭클 나선에 대한 이론과 의사의 좋은 토론이, 그리고 실현 Popescu. 샘플 C++ 코드는 Brown University의 웹 사이트에서 온라인으로 찾을 수 있습니다. Levien과 타인

Euler Spiral for Shape Completion

Page with download link for C++ code for method of Kimia, Frankel, and Popescu

논문, 등 Kimia 의해 용지 "biarc"계산 방법에 따라 개선을 제안한다. Levien의 논문은 심층적 인 역사를 가지고 있습니다. 두 끝점, 그 끝 지점에서 접선의 각도 :

The Euler spiral: a mathematical history by Raph Levien

는 당신은 나선형을 그리는 네 개의 매개 변수가 필요합니다. (곡률을 정의 할 필요는 없습니다.) 코드는 원하는 거리 증가분에서 두 종점 사이의 중간 점을 출력합니다. 당신은 단순히 중간 지점을 그려서 연결해야합니다.

코드를 구현하고 나면 최소 곡률과 같은 매개 변수 중 일부를 미세 조정해야 할 수 있습니다. 코드가 "폭발"하는 몇 가지 매개 변수가 표시됩니다.

+0

더 효율적인 코드를 찾으셨습니까? 링크 된 C++ 코드는 반복 검색을 사용하여 솔루션을 찾는 것처럼 보입니다. 내가 필요로하는 것은 급속하고 일정한 시간에 움직이는 무언가입니다. – Rocketmagnet

+0

나는 잠시 동안이 문제를 고칠 기회가 없었습니다. 레빈 (Levin) 신문은 내가 기억하는 것에서 더 빠른 접근법을 가졌습니다. – Rethunk

+0

또한 : "3D 곡선을위한 3D 오일러 나선" http://cgm.technion.ac.il/people/Gur/papers/2012/12-HT-CGTA.pdf – Rethunk

관련 문제