
두 개의 선이 주어지면 연결 선이 매끄러워지는 방식으로 두 선을 모두 연결하고 싶습니다. 예를 들어 다음 그림을 고려해보세요.
\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{arrows}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\coordinate (v1) at (0,0);
\coordinate (v2) at (2,0);
\coordinate (v3) at (4,2);
\coordinate (v4) at (4,4);
\draw[fill, black] (v1) circle[radius=1pt];
\draw[fill, black] (v2) circle[radius=1pt];
\draw[fill, black] (v3) circle[radius=1pt];
\draw[fill, black] (v4) circle[radius=1pt];
\draw (v1)--(v2);
\draw (v3)--(v4);
\draw (2,2) circle(2);
\end{tikzpicture}
\end{document}
사실 저는 두 선을 연결하는 원의 1/4에만 관심이 있습니다. 그런데 고민이 있어요
- 원의 나머지 75%를 제거하고 더 중요한 것은
- 수직선이 아닌 선을 계산하는 방법.
를 사용해 보았지만 \draw[bend left]
항상 원활한 연결이 이루어지는 것은 아닙니다. 더 나은 접근 방식을 아는 사람이 있습니까?
답변1
이것이 바로 controls
명령이 수행하는 작업입니다.베지어 곡선, 이러한 세그먼트가 수직인지 아닌지에 관계없이. 또한 스칼라 계수 .5
, .8
, 1.5
등을 변경하여 사격력을 제어할 수 있습니다.
(A).. controls +(P) and +(Q) .. (B)
이는 다음과 같습니다.
(A).. controls (A)+(P) and (B)+(Q) .. (B)
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\path
(0,0) coordinate (v1) node[below]{$v_1$}
(1,2) coordinate (v2) node[left]{$v_2$}
(4,2) coordinate (v3) node[right]{$v_3$}
(3,4) coordinate (v4) node[above]{$v_4$}
;
\draw (v1)--(v2) (v3)--(v4);
\draw[red] (v2).. controls +($.5*(v2)-.5*(v1)$) and +($.8*(v3)-.8*(v4)$) .. (v3);
\foreach \p in {v1,v2,v3,v4}
\fill (\p) circle(2pt);
\end{tikzpicture}
\begin{tikzpicture}
\path
(0,0) coordinate (v1) node[below]{$v_1$}
(2,0) coordinate (v2) node[below]{$v_2$}
(4,2) coordinate (v3) node[right]{$v_3$}
(4,4) coordinate (v4) node[above]{$v_4$}
;
\draw (v1)--(v2) (v3)--(v4);
\draw[blue] (v2).. controls +($.5*(v2)-.5*(v1)$) and +($.8*(v3)-.8*(v4)$) .. (v3);
\foreach \p in {v1,v2,v3,v4}
\fill (\p) circle(2pt);
\end{tikzpicture}
\end{document}
답변2
키 out
와 를 사용할 수 있습니다 in
. 인수(각도)를 취하고 기본적으로 와 유사하게 작동 bend left
하지만 양쪽 끝에서 가장 잘 작동하는 각도를 선택할 수 있습니다.
\documentclass[11pt,a4paper]{amsart}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{arrows}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\coordinate (v1) at (0,0);
\coordinate (v2) at (2,0);
\coordinate (v3) at (4,2);
\coordinate (v4) at (4,4);
\draw[fill, black] (v1) circle[radius=1pt];
\draw[fill, black] (v2) circle[radius=1pt];
\draw[fill, black] (v3) circle[radius=1pt];
\draw[fill, black] (v4) circle[radius=1pt];
\draw (v1)--(v2);
\draw (v3)--(v4);
\draw (2,0) to [out=0, in=270] (4,2);
\end{tikzpicture}
\end{document}
이 특별한 경우에는 언급한 대로 원호만 삽입할 수도 있습니다. 예를 들어, TikZ 그림의 마지막 줄을 다음으로 바꾸면 위 예의 출력은 동일합니다.
\draw (2,0) arc [start angle=-90, end angle=0, radius=2];