2014-04-30 4 views
0

사용자가 베 지어 스플라인을 클릭했는지 여부를 확인하는 방법이 필요합니다. 나의 현재 접근법은 세그먼트로 나눈 다음 히트 포인트가 이들 세그먼트 중 하나에 충분히 근접한 지 (수학적 포인트 - 세그먼트 거리 방법의 측면에서 충분히 가깝지 않은지) 확인하는 것입니다. 그러나이 방법은 단점이 있습니다 : 그들은해야하지만 베 지어 스플라인을 선택하는 방법?

Bezier selection

보시다시피

는 활성으로 처리되지 않습니다 붉은 점으로 표시된 지점. 물론 세그먼트 수를 늘릴 수는 있지만 액티브 영역 사이에 더 많은 간격이 있기 때문에 실제로 솔루션이 악화됩니다.

사용자가 베 지어 스플라인 근처의 영역을 클릭했는지 여부를 어떻게 신뢰성있게 확인할 수 있습니까?

사실 저는 수학 솔루션보다 더 신뢰성있는 휴리스틱이 필요하기 때문에 StackOverflow에 게시합니다 (후자는 주로 내 프로그램에서 사용하기에 느려야 할 것입니다. 이러한 검사는 수행되어야합니다.) 실시간으로, 마우스 이동 중에).

+0

방법은 갭을 채우기 위해, 곡선 형상에 의한 갭 및 추가 세트 세그먼트를 표시? – DJmRek

+0

btw 단순화 된 빨간 선의 점은 어떻게 얻습니까? – DJmRek

+0

Physics Nerd가 C# 프로그래머로 변신했습니다. Bezier 스플라인에 매료되었습니다. 나는 그것이 베 지어 스플라인 근처의 영역에 대한 귀하의 정의에 달려 있다고 생각하십니까? 너도 알고 싶어하니? 사용자가 클릭하고 싶었던 세 줄 중 어느 것이 좋습니까? 아니면 그를 잡아 당기는 것에 대해 더 신경 써야합니까? 어쩌면 빨간 구간에서가 아니라 곡선에서 거리를 할 수 있을까요? 나는 붉은 점 영역에 필러를 추가하는 것이 그렇게 힘들지는 않을 것이라는 점에 동의하지만, 어떻게 정의할지는 조금 불분명하다. – JPK

답변

2

빨간 점과 선분 교차점 사이의 점 거리 계산을 어떻게하면됩니까? 지점 간 거리 계산에 사용하는 거리와 동일한 거리를 사용하면 간격을 채워 더 잘 작동합니다.

enter image description here

2

이 글은 댓글 일 뿐이었지만 아직 댓글을 달 수는 없으므로 답변으로 게시합니다.

베지에 곡선 대신에 베 지어 곡선의 제어점 다각형에 대해 측정 해 보았습니까? 베 지어 곡선은 제어점의 볼록한 선체 내부에 있습니다. 베 지어 곡선이 너무 가깝지 않으면 사용자가 제어점의 선체 내부를 클릭했는지 (또는 닫은 상태인지) 확인하는 것으로 충분할 수 있습니다.

+0

접두어를위한 Upvote, 나는 거기에 있었고 똑같은 것을 올렸다. 웹 사이트 규칙에 대한 배려를 높이 평가하십시오. – JPK

+0

제 경우에 이것은 하나의 베 지어 스플라인입니다. 비록 내가 알지는 못했지만, 스플라인이 제어점의 볼록한 선체 안에 있으며, 그 폴리곤은 (사용자 경험면에서) 너무 큰 영역을 덮을 수도 있습니다. 현재 알고리즘이 너무 복잡해지고 실시간으로 평가하는 데 너무 많은 시간이 걸리더라도이를 염두에 두겠습니다. – Spook