이 글은 예전 GPG 스터디 포럼에 kwanny 님이 올리신 주제와 그에 대한 답글들입니다. 원본(Ezboard)은 "<a href="http://pub32.ezboard.com/fgpgstudyfrm5. ... D=28.topic" target="_blank">[4.3] 카메라제어기법..소스오류[원서도 역시]</a>"입니다.
<div class="imported">
<div class="sep"><span class="cfs">제목: <img src="http://www.ezboard.com/images/posticons ... htbulb.gif" align=absmiddle> [4.3] 카메라제어기법..소스오류[원서도 역시]
</span></div>
<div class="r">글쓴이: kwanny , 글쓴때: 5/31/01 10:12:52 pm</div>
음..4.3에 나온 B스프라인 곡선을 사용하려고 했는데 아무래도 곡선이
이상하게 나와서 이런 저런 찾아 보고 있다가 소스에 문제가 있는듯
하여 글을 올립니다.
void Spline::Build() 의 함수에서
.... Snpped ...
curveData[index].pos[k] =
(
(-1*u_3 + 3*u_2 - 3*u + 1) *
controlData.pos[k] +
( 3*u_3 - 6*u_2 + 0*u + 4) *
controlData[i+0].pos[k] +
(-3*u_3 + 3*u_2 + 3*u + 1) *
controlData[i+1].pos[k] +
( 1*u_3 + 0*u_2 + 0*u + 0) *
controlData[i+2].pos[k]
) / 6.0f;
위의 부분을
curveData[index].pos[k] =
(
(-1*u_3 + 3*u_2 - 3*u + 1) *
controlData.pos[k] +
( 3*u_3 - 6*u_2 + 0*u + 4) *
controlData[i+1].pos[k] +
(-3*u_3 + 3*u_2 + 3*u + 1) *
controlData[i+2].pos[k] +
( 1*u_3 + 0*u_2 + 0*u + 0) *
controlData[i+3].pos[k]
) / 6.0f;
이렇게 고쳐야 할 듯 합니다.
참고로 저자(Dante Treglia II)가 만든 예제(SourceCodePolygonal3Treglia)에 보면..
SPLINE.H 중에서 ...
#define B_SPLINE(u, u_2, u_3, cntrl0, cntrl1, cntrl2, cntrl3)
(
(
(-1*u_3 + 3*u_2 - 3*u + 1) * (cntrl0) +
( 3*u_3 - 6*u_2 + 0*u + 4) * (cntrl1) +
(-3*u_3 + 3*u_2 + 3*u + 1) * (cntrl2) +
( 1*u_3 + 0*u_2 + 0*u + 0) * (cntrl3)
) / 6
)
SPLINE.CPP 중에서 ..
curveData[index].pos.x = B_SPLINE(u, u_2, u_3,
controlData.pos.x,
controlData[i+1].pos.x,
controlData[i+2].pos.x,
controlData[i+3].pos.x);
curveData[index].pos.y = B_SPLINE(u, u_2, u_3,
controlData.pos.y,
controlData[i+1].pos.y,
controlData[i+2].pos.y,
controlData[i+3].pos.y);
curveData[index].pos.z = B_SPLINE(u, u_2, u_3,
controlData.pos.z,
controlData[i+1].pos.z,
controlData[i+2].pos.z,
controlData[i+3].pos.z);
이런 부분이 있습니다.
참고로 제 툴에서 비교한 사진을 올려 드립니다.
1. 원 소스로 그린 곡선
<!--EZCODE IMAGE START--><img src="http://www.sonnori.co.kr/~kwanny/images ... <!--EZCODE IMAGE END-->
2. 수정된 소스로 그린 곡선
<!--EZCODE IMAGE START--><img src="http://www.sonnori.co.kr/~kwanny/images ... <!--EZCODE IMAGE END-->
원서에도 틀려 있는거 같고 원서 정오표도 아직 수정이 되어 있지 않은 내용인것 같습니다. -_-
그럼.
/서관희
<p></p>
<div class="sep"><span class="cfs">제목: <img src="http://www.ezboard.com/images/posticons/pi_smile.gif" align=absmiddle> 감사..
</span></div>
<div class="r">글쓴이: gryu , 글쓴때: 6/1/01 2:05:53 am</div>
원저자에게 확인해보지는 않았지만, 소스나 스크린샷을 보면 kwanny님 수정하신 게 맞는 것 같습니다.
한 며칠 두고 보다가 다른 이야기가 나오지 않으면 정오표 페이지에 올릴께요..
원서 정오표 페이지에 없는 이야기인만큼 저자에게도 알려줘야 할텐데, 영작에 자신이 없어서.. 그래도 한 번 해볼께요^^
<p><center>
/*************************
as simple as possible,
but not simpler
*************************/
</center>
<br></p></div>
[GPG 1 글 4.3] [4.3] 카메라제어기법..소스오류[원서도 역시]
Moderator: 류광