最近学习绘图,但是对于bend right
和 bend left
无法理解,到底是怎么个划分左右的方式?
图如下:
我标了颜色,红色的是bend right
。
代码如下:
%!TeX program=xelatex
\documentclass[UTF8,fontset=none,scheme=chinese,a5paper]{ctexart}
\usepackage{tikz,xcolor}
\usetikzlibrary{arrows,snakes,backgrounds}
\begin{document}
\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,inner sep=0pt,minimum size=6mm]
\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,inner sep=0pt,minimum size=4mm]
\tikzstyle{pre}=[<-,semithick]
\tikzstyle{post}=[->,semithick]
\begin{tikzpicture}[bend angle=45]
\node[place] (a) {a};
\node[place] (b) [below of=a] {b};
\node[place] (c) [below of=b] {c};
\node[transition] (1) [left of=b] {1}
edge [post,bend right,red] (b)
edge [post,bend left] (b)
edge [pre, bend left] (a)
edge [post,bend right,red] (c);
\node[transition] (2) [right of=b] {2}
edge [pre,bend right,red] (b)
edge [pre,bend left] (b)
edge [post,bend right,red] (a)
edge [pre, bend left] (c);
\end{tikzpicture}
\end{document}
bend left
和 bend right
可以设置值,弯曲方向与这个值有关。bend right=angle
就是 bend left=-angle
。
对于 bend left
具体来说就是:
从起点 A 到终点 B 引一条(有向)线段,线段的方向就是从起点到终点的方向(向量 AB);
把 bend left
给定一个值,比如 30,那么从 A 到 B 的那条(有向)曲线在 A 点的切线与 AB 的夹角就是 30°(逆时针为正)。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{angles,quotes}
\begin{document}
\begin{tikzpicture}
\coordinate(A) at (0,0); \node[left] at (A) {A};
\coordinate(B) at (3,0); \node[above right] at (B) {B};
\draw[thick,->] (A)--(B);
\draw[bend left=30, red] (A) to (B);
\draw[bend left=-30, blue] (A) to (B);
\draw[->](A)--+(30:1cm) coordinate (C);
\pic["$30^\circ$", draw,->, angle radius=.7cm] {angle=B--A--C};
\end{tikzpicture}
\end{document}
如果是 bend left=-30
,也就是 bend right=30
,就往顺时针方向取 30°,结果就是上图中蓝色那条线。
结果就是弯曲方向不仅与线段的方向有关,而且与给出的角度有关。
感谢,理解了。