tikz-3dplot에서 곡선(반드시 호일 필요는 없음) 그리기

tikz-3dplot에서 곡선(반드시 호일 필요는 없음) 그리기

곡선을 그리려고 하는데tikz-3dplot그것은 원호가 아닙니다. 와 유사 tikz하게 제어점으로 지정하고 싶습니다 (0,0) to [controls=+(45:1) and +(135:1)] (1,0). 를 사용하여 원호를 그릴 수 있다는 것을 알고 있지만 \tdplotdrawpolytopearc문서에서 다른 유형의 곡선을 그리는 방법에 대한 내용을 찾을 수 없습니다. 2D 곡선과 동일한 구문을 사용하면 제어점이 작동하는 기본 평면이 선택되는 것 같습니다(xy 평면과 비슷함). 어쩌면 해당 평면을 선택하고 모든 지점에 대해 변경하는 방법이 있을까요?

내가 가지고 있는 MWE와 출력은 다음과 같습니다.

\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{75}{130}
\begin{tikzpicture}[tdplot_main_coords]
% Shape and boundary
\draw[blue] (0,0,0)--(-1,1,0);
\fill[green,fill opacity=.8] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,0,1);
\draw[blue] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,1,1)--(0,0,1)--(0,0,0);
\draw[blue] (0,0,1)--(-1,1,1) (0,1,0)--(0,1,1);
% Natural guess how to draw curve
\draw[red] (0,0,0) to [controls=+(45:1) and +(135:1)] (0,1,0);
% Closest documented way how to draw curve
\tdplotdefinepoints(0,.5,-.3)(0,-.5,.3)(0,1.5,.3)
\tdplotdrawpolytopearc{.583}{}{}
\end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

나는 검은 곡선처럼 왼쪽을 향하고 있는 이 프리즘의 "면"에 곡선을 그리고 싶지만 (사인 곡선과 같이) 끝점에 더 "강도"가 있는 곡선을 그리고 싶습니다. 실패한 시도는 프리즘의 "하단" 면 평면에 있는 것처럼 보이는 빨간색 곡선입니다.

그래서 내 질문은 다음과 같습니다.원호가 아닌 곡선을 3D로 어떻게 그릴 수 있나요?

답변1

tikz-3dplot의 매뉴얼이 이에 대해 너무 명확하지 않은 것이 사실입니다 . 그러나 IMHO의 주요 기능은 tikz-3dplot3D 좌표계의 직교 투영을 설치하는 것입니다. 그 외에도 표준 Ti를 사용할 수 있습니다.케이Z 명령.

특히, 파라메트릭 플롯을 사용하여 원하는 것을 그릴 수 있습니다.

\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{75}{130}
\begin{tikzpicture}[tdplot_main_coords]
% Shape and boundary
\draw[blue] (0,0,0)--(-1,1,0);
\fill[green,fill opacity=.8] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,0,1);
\draw[blue] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,1,1)--(0,0,1)--(0,0,0);
\draw[blue] (0,0,1)--(-1,1,1) (0,1,0)--(0,1,1);
\draw plot[variable=\x,domain=0:1] (0,\x,{0.3*sin(\x*180)});
\end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

그러나 귀하의 예에서는 면 중 하나에 일반적인 곡선을 그리는 방법을 찾고 있는 것 같습니다. 이를 위해서는 라이브러리를 사용하여 3d해당 면과 일치하는 평면에 곡선을 그리기만 하면 됩니다.

\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\usetikzlibrary{3d}
\begin{document}
\tdplotsetmaincoords{75}{130}
\begin{tikzpicture}[tdplot_main_coords]
% Shape and boundary
\draw[blue] (0,0,0)--(-1,1,0);
\fill[green,fill opacity=.8] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,0,1);
\draw[blue] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,1,1)--(0,0,1)--(0,0,0);
\draw[blue] (0,0,1)--(-1,1,1) (0,1,0)--(0,1,1);
\begin{scope}[canvas is yz plane at x=0]
    \draw[red] (0,0) to [controls=+(45:1) and +(135:1)] (1,0);
\end{scope}
%\draw plot[variable=\x,domain=0:1] (0,\x,{0.3*sin(\x*180)});
\end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

이러한 예측은 Ti에서만 작동하는 것이 아닙니다.케이Z 명령이지만 외부 그래픽에서도 가능합니다.

\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\usetikzlibrary{3d}
\begin{document}
\tdplotsetmaincoords{75}{130}
\begin{tikzpicture}[tdplot_main_coords]
% Shape and boundary
\draw[blue] (0,0,0)--(-1,1,0);
\fill[green,fill opacity=.8] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,0,1);
\draw[blue] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,1,1)--(0,0,1)--(0,0,0);
\draw[blue] (0,0,1)--(-1,1,1) (0,1,0)--(0,1,1);
\begin{scope}[canvas is xz plane at y=1,transform shape]
    \node at (-0.5,0.5) {\includegraphics[width=0.9cm]{example-image-duck}};
\end{scope}
%\draw plot[variable=\x,domain=0:1] (0,\x,{0.3*sin(\x*180)});
\end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

관련 정보