기본 콘텐츠로 건너뛰기

6월, 2023의 게시물 표시

평면 상의 점 구하기

S3D는 민감한것 같습니다. 조그마한 오차도 허용하지 않고 형상을 만들지 못하겠다고 튕겨버립니다. 그림에서와 같이 사선 방향으로 Extrude하는 형상을 만들때 단면을 이루는 점들이 하나의 평면상에 있지 않으면 형상을 만들지 못합니다.(’범위를 벗어났다’나 뭐 그런 오류가 발생합니다.) 단면을 이루는 점들을 평면 상의 점들로 변환해줘야 S3D에서 오류 없이 형상을 만들 수 있습니다. 먼저 평면의 방정식은 아래와 같습니다. $$ a*x + b*y + c*z + d = 0 $$ 여기서 $<a,b,c>$는 평면의 법선 벡터입니다. 일반적으로 평면의 법선 벡터는 알고 있기 때문에 $d$ 값은 아래 식으로 구할 수 있습니다.(x,y,z에 단면을 이루는 점 하나를 대입) $$ d = -(a*x + b*y + c*z) $$ 이제 평면의 방정식을 구했기 때문에 나머지 다른 점($x_1,y_1,z_1$)들을 평면 상의 점들로 변환해주면 됩니다. $$ \begin{aligned} h &= a*x_1+b*y_1+c*z_1+d\\ pt^\prime &= pt - <a,b,c>*h \end{aligned} $$ 이렇게 평면 상의 점 $pt^\prime$ 을 구할 수 있습니다.