SageMath로 Costa 곡면 그리기

양성덕
20210413

세 번째 시도 당시 알지 못했던 기법을 알게 되서 이제 다음과 같이 그림을 완성한다. 이러면 Weber가 그린 방법을 그대로 따른 셈이 된다.

참고 문헌
[2] Matthias Weber, Costa's Minimal Surface, Mathematica Notebook File

%display latex

한 조각에서 전체 그리기

이제 곡면을 변환한다. 우리가 원하는 변환은

\begin{equation} \begin{pmatrix} x \\ y \\ z \end{pmatrix} \rightarrow \begin{pmatrix} y \\ x \\ -z \end{pmatrix} = \begin{pmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & -1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1 \end{pmatrix} \begin{pmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \end{pmatrix} \end{equation}

마지막에 나타난 바와 같이 행렬을 분해한 이유는, 소스 코드까지 들여다 보아도 회전과 scaling을 적용하는 방법은 알겠는데 일반적 선형변환을 적용하는 방법은 알아낼 수가 없어서다.

그런데 해 보면

gr1.transform(rot=(0,0,1,pi/2)).transform(scale=(-1,1,-1))

도 같은 결과를 주는 것 같다. 확실한 결과는 모르겠다.

참고로 위 변환을 알아낸 방법은 다음과 같다.

참고) 이 파일을 html 파일로 변환할 때 displayed equation을 그것만 따로 한 markdown 셀에 넣지 않으면 변환이 제대로 되지 않는다.