KTUG 한국 텍 사용자 그룹

Menu

KTUG :: Q&A 마당 › tikz를 이용하여 3d gear/cog 그리기

tt | 2021.10.07 20:15:05 | 메뉴 건너뛰기 쓰기

Creating gears in TikZ - TeX - LaTeX Stack Exchange

2d 기어를 그리는 코드는 위 링크의 코드를 참고해서 아래처럼 했습니다. 아래의 t\i나 v\i, w\i는 노드를 표시하고 선을 이어주기 위해 제가 추가한 것입니다. 파란색 기어를 \gear 코드로 그린 다음 shift를 이용해서 갈색 기어를 뒤에 배치하고 각각의 노드를 빨간색으로 이은 것입니다. overleaf에서 아래 코드를 보면 

이렇게 표시됩니다. 그런데 최종적으로 제가 원하는 그림은 아래와 같이 레이어 개념이 적용되고 톱니 사이에 색이 들어간 것입니다. 그림판으로 해서 조잡하긴 한데 그건 양해를... 글자는 노드의 레이블 부분을 빈 칸으로 하면 지워지니 큰 문제가 아닌데, 색을 넣고 뒷부분을 가리는 법을 모르겠습니다. 좋은 방법이 있을까요? 정 안되면 Inkscape에서 색을 입힌 다음 tikz로 export 하는 방법도 생각은 합니다만 이렇게 하면 비슷한 기어가 수십개 나올때마다 같은 작업을 반복해야 해서 그다지 하고 싶지 않습니다.

 

 


\documentclass[a4paper]{oblivoir}
\usepackage{circuitikz}
\begin{document}
\begin{tikzpicture}
    % draw gear
    % #1 number of teeths
    % #2 radius intern
    % #3 radius extern
    % #4 angle from start to end of the first arc
    % #5 angle to decale the second arc from the first
    
    \newcommand{\gear}[5]{%
    \foreach \i in {1,...,#1} {%
        [rotate=(\i-3)*360/#1] (0:#2)
        arc(0:#4:#2) {[rounded corners=1.5pt] -- (#4+#5:#3) node[pos=1] (t\i) {t\i}
        arc(#4+#5:360/#1-#5:#3)} node[pos=0.5] {v\i} -- (360/#1:#2) node[pos=0] (w\i) {w\i}
        }%
    }
    \draw[blue] \gear{10}{2}{2.4}{18}{0};
    \foreach \i in {1,..., 6} {%
        \draw[red] (t\i.center) -- ++(30:2.5cm);
        \draw[red] (w\i.center) -- ++(30:2.5cm);
    }
    \begin{scope}[shift={(30:2.5cm)}]
    \draw[brown] \gear{10}{2}{2.4}{18}{0};
    \end{scope}
\end{tikzpicture}
\end{document}

댓글 [2]

댓글 쓰기

목록 삭제

KTUG 한국 텍 사용자 그룹