당신이보고 싶은 것을 성취하는 방법에는 여러 가지가 있습니다. 커브 조작시 점을 통해 베 지어 곡선을 수정하는 간단한 방법을 설명하겠습니다.
먼저해야 할 일은 사용자가 곡선을 클릭 한 매개 변수 값 (t)을 파악하는 것입니다. 이것은 일반적으로 근사치가 될 것입니다. 베 지어의 픽셀 또는 하위 픽셀 렌더링을 수행하는 경우 모든 픽셀에 대해 t 값이 무엇인지 기록하고이를 사용하십시오. 선분으로 테셀레이션하는 경우 가장 가까운 선분을 확인하고 두 끝점의 t 값을 찾은 다음 선상의 거리에 따라 t 값을 lerp합니다.
일단 t 값을 얻으면 베 지어 곡선 방정식에 플러그 할 수 있습니다. 폼의 무언가로 끝날 것이다 :
P 곡선, P0, P1, P2의 시점이고, P3은 K0, K1, K2, 및 K3 입력 제어 포인트이고,
P = k0*P0 + k1*P1 + k2*P2 + k3*P3
주어진 t에 대한 상수이다. k 값 'contribution'이라고 부르거나 더 구체적으로 제어점의 기여도를 곡선 P (t)의 점까지 호출합니다. '- P는 P,'새로운 위치이며, P는 원래의 위치 기억하기 좋은 속성은 K0 + K1 + K2 + K3는 = 1
는 자, 당신은 벡터 V = P가 있다고 가정 해 보자는 것이다. 이동해야하는 곳에서 P '를 얻으려면 제어점을 일부 이동해야하지만 이동하려는 제어점에 대해 어느 정도 유연성이 있습니다. 기여도가 0이 아닌 지점을 사용하거나 일부 조합을 사용할 수 있습니다.
사용자가 t = 0에서 곡선을 클릭한다고 가정 해 봅니다. 이 경우 k0만이 0이 아니므로
P0 := P0 + V
이 올바른 결과를 생성합니다. 이것은 또한 공헌의 모든가 0이되는 일반적인 경우
P0 := P0 + k0 * V
과 같이 쓸 수있다, 당신은 매우 부드러운 확산 아웃의 영향을 미칠 것이다, 점의 각각에 동일한 변환을 적용 할 수 있습니다 흉한 모습.
또 다른 옵션은 전체 기여도가 가장 큰 제어점을 간단히 이동하는 것입니다. 내가 사용하는 방정식은
Pmax := Pmax + 1/kmax * V
처럼 뭔가있을 거라고 생각하지만 어느 쪽이든 그것은 주어진 t 값에 기여보고, 새로운 포인트가 원하는 위치에 놓여 있도록 제어점을 이동로 요약된다.
이 접근법은 상당히 일반적이며 NURBS 및 대부분의 다른 스플라인, 심지어 표면에서도 작동합니다. Greville Abscissae를 사용하여 가능한 한 많은 포인트를 고정시키는 또 다른 방법이 있지만 경험상 진동이 너무 쉽습니다. 객체 모델에 대한
베 지어를 사용하면 일치하는 제어점에 가장 근접한 점은 3 점 곡선의 문자열을 만드는 것입니다. 각 커브의 끝점은 다음 커브의 시작점과 동일하게 설정됩니다. 두 커브의 조인 포인트 중 두 개의 중간 점은 조인 포인트 주위를 비추도록 설정되어야합니다. 그러나 곡선은 중간 점을 통과하지 못합니다. –