
안녕하세요 저는 TikZ를 사용하여 서로를 향해 가속되는 측지선을 그리고 싶습니다. 나는 온라인 예제에서 두 개의 평면을 다른 평면 위에 하나씩 설정하기 위해 일부 코드를 훔쳤습니다(상단 평면은 보이지 않습니다. 저는 단지 측지선을 시작하기 위해 그것을 사용하고 있습니다).
내가 겪고 있는 문제는 두 평면 사이에 선(또는 측지선)을 그리는 것입니다. 곡선을 원하지만 곡선이 필요한 경우에는 잘 작동합니다. 특히 아래쪽 평면의 각 끝점에 접근할 때 서로를 향해 곡선을 그리도록 합니다.
지금까지 내 코드는 다음과 같습니다.
\begin{tikzpicture}[scale=.9,every node/.style={minimum size=1cm},on grid]
\begin{pgfonlayer}{bottom}
\begin{scope}[
% Lower layer
yshift=0,every node/.append style={
yslant=0.5,xslant=-1,rotate=-10},
yslant=0.5,xslant=-1,rotate=-10]
\fill[black,fill opacity=0.9] (0,0) rectangle (5,5);
\draw[black] (0,0) rectangle (5,5);
\node[name=B,draw,scale=0.4,black,very thick,text width=0.95,text height=0.95,inner sep=0pt,] at (2.525,2.525) {};
\end{scope}![enter image description here][1]\end{pgfonlayer}
\begin{scope}[ % Upper layer
yshift=105,every node/.append style={
yslant=0.5,xslant=-1,rotate=-10},yslant=0.5,xslant=-1,rotate=-10
]
\fill[fill=none,fill opacity=0.5, opacity=0.5] (0,0) rectangle (5,5);
\node[scale=.9,draw,fill=none,draw=none, fill opacity=0.9,opacity=0,very thick,name=A,text width=3cm,text height=3cm,inner sep=0pt] at (2.5,2.5) {};
\begin{pgfonlayer}{bottom}
\foreach \i in {north east, north west, south east, south west}
\draw[green,very thick] (A.\i) parabola (B.\i);
\end{pgfonlayer}
\end{scope}
\end{tikzpicture}
그러면 다음이 생성됩니다.
보시다시피 선들이 서로를 향해 좋은 방식으로 구부러지지 않습니다. 저는 선들이 검은 표면에 도달할 때 서로 점점 더 가까워지기를 원하며 이상한 포물선 방식으로 그렇게 하지 않기를 원합니다. 분명히 문제는 내가 포물선 명령을 사용했다는 것입니다. 나는 사용 가능한 다양한 다른 곡선을 사용해 보았지만 이것이 전혀 작동하지 않습니다.
이 작업을 수행하는 방법을 아는 사람이 있나요? 심지어 가능합니까?
가능하다면 들어오는 라인 중간에 화살표를 두는 것도 좋을 것 같습니다.
정말 감사합니다.
답변1
여기에 한 가지 아이디어가 있습니다. 제공된 예제는 컴파일 가능하지 않았고 필수 코드를 추가한 후 몇 가지 오류가 있었기 때문에 기본적으로 코드부터 다시 시작했습니다.
도면의 뷰는 환경 x={(<x-dim>,<y-dim>)}
에 적용된 단위 벡터 설정 등에 의해 결정됩니다 tikzpicture
. 전체적으로 모든 점에 z 좌표가 추가된다는 점에 유의하세요. xslant
, yslant
및 를 조정하는 것보다 이 방법을 사용하고 시각화하는 것이 더 쉽습니다 rotate
.
녹색 선의 곡률은 곡선의 제어점을 변경하여 조정할 수 있습니다. 저는 calc
곡선의 시작 및 끝 좌표를 기반으로 이러한 제어점을 편리하게 계산하기 위해 라이브러리를 사용하고 있습니다.
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[x={(0.935cm,0.126cm)},y={(-0.354cm,0.312cm)},z={(0cm,1cm)}]
\draw[fill,fill opacity=0.9] (0,0,0) -- ++(5,0,0) -- ++(0,5,0) -- ++(-5,0,0) -- cycle;
\draw[very thick] ( 2.3,2.3,0) coordinate (B1)
-- ++( 0.4,0.0,0) coordinate (B2)
-- ++( 0.0,0.4,0) coordinate (B3)
-- ++(-0.4,0.0,0) coordinate (B4) -- cycle;
\fill[opacity=0.1] (0,0,2) -- ++(5,0,0) -- ++(0,5,0) -- ++(-5,0,0) -- cycle;
\path ( 1.15,1.15,2) coordinate (A1)
-- ++( 2.70,0.00,0) coordinate (A2)
-- ++( 0.00,2.70,0) coordinate (A3)
-- ++(-2.70,0.00,0) coordinate (A4) -- cycle;
\foreach \i in {1,...,4}
\draw[green,very thick] (A\i) ..
controls ($(A\i)!0.5!(2.5,2.5,1)$) and ($(B\i)+(0,0,0.4)$) .. (B\i);
\end{tikzpicture}
\end{document}
나는 당신이 원하는 것을 만들어 냈다고 생각하지만, 그렇지 않은 경우 댓글을 남겨 주시면 원하는 결과에 더 가까워지도록 노력하겠습니다.