2014-03-26 3 views
0

저는 imagick으로 PHP를 사용하여 베 지어 커브를 그립니다. 3 x, y 좌표를 받아 중간 XY 점을 반환하여 곡선이 3 점을 통과하는지 확인하는 함수가 있습니다.6 포인트 베 지어 곡선에 대한 점을 계산하십시오.

같은 것을하는 함수를 만들고 싶지만 6 점입니다. 어디서부터 시작해야할지 모르겠습니다. 6 포인트 베 지어 곡선에서 4 개의 중간 점을 계산하는 수학적 방법이 있다고 가정합니다. 여기

는 3 점 코드가 작동하는 방법의 예입니다 : 당신이 포인트를 생성하고 어떻게 완전히 명확하지 않다으로

$s1 = array("x" => $var1, "y" => 0);//start 
$s2 = array("x" => $var2, "y" => $var3); 
$s3 = array("x" => $var4, "y" => $var5);//end 
$smp = findControlPoint($s1, $s2, $s3); 

$points = array 
(
    array('x' => $s1['x'], 'y' => $s1['y']), 
    array('x' => $smp['x'], 'y' => $smp['y']), 
    array('x' => $s3['x'], 'y' => $s3['y']), 

); 
$draw->bezier($points); 
+0

베 지어 곡선의 "중점"은 무엇입니까? 제어 변수가 0.5 인 지점 (쉬운 경우) 또는 왼쪽 곡선의 길이가 오른쪽 곡선의 길이와 같은 지점? (그렇다면 3 차 이상의 베 지어 곡선을 상징적으로 계산하는 것은 문자 그대로 불가능합니다). 둘째, 6 점으로 구성된 단일 커브 또는 폴리 베 지어 커브 (여러 큐브 커브가 단일 커브로 함께 묶여 있음)를 의미합니까? –

+0

이 질문은 아마도 http://math.stackexchange.com/ – DudeOnRock

+0

@ Ryland22로 이동하면 도움이 될 것입니다. findControlPoint 코드를 게시하는 것을 잊어 버린 것 같습니다. 그러나 대답은 그것에 의존하지 않을 수도 있지만 질문의 매개 변수는 완전히 명확하지 않습니다. – Danack

답변

0

귀하의 질문은 약간 혼란 스럽다. 그러나 자신의 '결합'을 통해 연속으로 여러 4 개 베 지어 곡선을 얻을 수 있습니다 (Joining Multiple Bézier Curves에서)을 수행해야합니다

우리가 점 (A1, A2, A3, & 두 세트를 가지고 예를 취할 수 있습니다 A4 및 B1, B2, B3, & B4). 하나 개 부드러운 베 지어 곡선을 만들려면 다음 사항 위해서는 다음 두 가지 사실이 충족되어야합니다

    그들은 같은 지점 (A4 == B1)
  • A3, A4, 및 B2의 필수에 끝나야합니다
  • (B1, A3 말과 동일하고, B2는 동일 선상에 있어야합니다) 동일 선상에있을
당신은 3 점으로 당신이 함께 가입하려는 '섹션'당 3 개 이상의 지점을 사용해야합니다

하지 않습니다 각 섹션의 시작과 끝에서 커브의 방향을 충분히 제어하십시오.

+0

그는 5 차 베 지어 곡선을 원한다면 6 점을 사용합니다. –

관련 문제