2011-12-19 4 views
7

응용 프로그램에 UIBezierPath가 있습니다. 손가락의 터치가 인식되면 그 커브를 세분화하여 두 개의 다른 두 개의 커브로 저장하려고합니다. 터치 코디네이트는 한 곡선의 종점과 두 번째 곡선의 시작점으로 작동합니다.UIBezierPath를 세분하고 서로 다른 두 개체에 저장하는 방법

다시이 커브 중 하나를 누르면 해당 커브가 다른 두 커브로 세분화됩니다.

나는 이것을 많이 검색했다. 그러나 좋은 해결책을 찾지 못했습니다.

또한이 작업을 수행 할 수있는 다른 방법이 있는지 알지 못합니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사합니다.

+0

하나의 링크를 찾았습니다. 이 사람들 좀 봐. 베 지어 큐브를 세분화하는 데 도움이 될 것 같아요 .http : //www.genie-meca.ac-aix-marseille.fr/Productique/PDF/361_deCasteljau_john.pdf – Harsh

+2

이것은 유용 할 수도 있지만 그렇지 않을 수도 있지만 UIBezierPath를 개별 경로로 분류하는 방법을 보여줍니다. http://stackoverflow.com/questions/3051760/getting-a-list-of-points-from-a-uibezierpath – titaniumdecoy

답변

1

de Casteljau 알고리즘으로이를 수행 할 수 있습니다. 당신이 그것을 check out the Wikipedia page here의 수학에 정말 있다면,하지만 당신은 수학에없는이 있다면 그것은 실제로 매우 간단 때 아마

  1. 는 따라 매개 변수 값을 계산 ... 당신에게 무엇보다 혼동한다 커브 (0.0 ~ 1.0 사이)를 터치합니다. 이렇게하려면 일정한 간격 (0.1, 0.2, 0.3 등)으로 점 집합을 계산 한 다음 터치 점에 가장 가까운 두 점을 찾고 정확도를 높이려면이 점 사이의 매개 변수화를 반복하십시오 (0.21, 0.22, 0.23 등). 그러면 터치 한 부분을 나타내는 커브 세그먼트를 따라 0.0에서 1.0 사이의 숫자가됩니다.
  2. 이 비트는 텍스트로 설명하기가 어렵지만, 의 아래쪽 절반 정도 아래에있는 this page에 좋은 시각화가 있습니다. 베 지어 곡선 세분화. 다이어그램 아래에있는 슬라이더를 사용하여 어떻게 작동하는지 보시고, 여기 텍스트로 설명합니다 : 1 단계에서 계산 한 매개 변수화 된 값에 비례하는 커브 세그먼트의 제어점 사이에서 직선을 세분해야합니다. 따라서 0.4를 계산하면 커브를 따라 0.4에 당신의 터치에 가장 가까운 곡선상의 4 점 (A, B, C, D) 플러스 분할 점을 가지고, 우리는이 분할 점 S를 호출 할 것입니다 :
    • 임시 포인트 T 이는 B C →
    • 하자 포인트 A1은 선 A B →
    • Calcu 따라 0.4 인
    • 계산 지점 B1 포인트 같아야 연선 0.4 → T
    • 하자 포인트 D1은 분리 점 S
    • 하자 점 D2에 동일 라인 B1 D에게 C → 연선 0.4
    • 계산 점 C2 지점 같아야 따라 0.4 늦은 점 C1 D
    • T → C2
    • 하자 점 A2의 분리 점 S
,536,913 같아야 연선 0.4
  • 계산 지점 B

    이제 두 개의 새로운 베 지어 곡선이 있습니다. 첫 번째는 A1, B1, C1, D1을 사용하고 두 번째는 A2, B2, C2, D2를 사용합니다.