![修剪 TikZ 网格](https://linux22.com/image/300377/%E4%BF%AE%E5%89%AA%20TikZ%20%E7%BD%91%E6%A0%BC.png)
我有以下图片:
从...获取:
\begin{tikzpicture}
\draw (0,0) grid (4,4);
\draw[invmidarrow=0.5]
(0,0) to[out=110,in=250] (0,2)
(0,2) to[out=70,in=190] (1,4)
(1,4) to[out=10,in=170] (3,4)
(3,4) to[out=-10,in=180] (4,4)
(4,4) to[out=0.in=45] (4,3)
(4,3) to[out=225,in=135] (4,2)
(4,2) to[out=-45,in=190] (4,1)
(4,1) to[out=-10,in=-10] (3,0)
(3,0) to[out=190,in=290] (0,0);
\end{tikzpicture}
具有以下关键定义:
\tikzset{invmidarrow/.style={postaction=decorate,decoration={markings,mark={at position #1 with {\arrow{latex reversed}}}}}}
并使用decorations.markings
图书馆。我想知道是否有简单的方法可以:
- 修剪并延伸网格,使其仅填充曲线;
- 在网格中添加箭头,使得所有(或部分)方块都有逆时针箭头;
- 每隔 x*(曲线长度)在曲线上添加箭头,x 是我可以选择的分数。
该图出自物理笔记,老师从电场旋度为零推导出电场的保守性,并说明了我们这样做的过程,将线积分变成线积分之和,然后变成旋度在单个方块上的面积分,想象旋度会变得越来越小。
梅威瑟:
\documentclass[a4paper]{report}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\tikzset{invmidarrow/.style={postaction=decorate,decoration={markings,mark={at position #1 with {\arrow{latex reversed}}}}}}
\begin{document}
\begin{tikzpicture}
\draw (0,0) grid (4,4);
\draw[invmidarrow=0.5]
(0,0) to[out=110,in=250] (0,2)
(0,2) to[out=70,in=190] (1,4)
(1,4) to[out=10,in=170] (3,4)
(3,4) to[out=-10,in=180] (4,4)
(4,4) to[out=0.in=45] (4,3)
(4,3) to[out=225,in=135] (4,2)
(4,2) to[out=-45,in=190] (4,1)
(4,1) to[out=-10,in=-10] (3,0)
(3,0) to[out=190,in=290] (0,0);
\end{tikzpicture}
\end{document}
答案1
你想要这样的东西吗?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\tikzset{invmidarrow/.style={postaction=decorate,decoration={markings,mark={between positions 0 and 1 step #1
with {\arrow{latex reversed}}}}}}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\draw [clip]
(0,0) to[out=110,in=250]
(0,2) to[out=70,in=190]
(1,4) to[out=10,in=170]
(3,4) to[out=-10,in=180]
(4,4) to[out=0.in=45]
(4,3) to[out=225,in=135]
(4,2) to[out=-45,in=190]
(4,1) to[out=-10,in=-10]
(3,0) to[out=190,in=290] (0,0);
\draw (-1,-1) grid (5,5);
\end{scope}
\draw [thick,invmidarrow=10mm]
(0,0) to[out=110,in=250]
(0,2) to[out=70,in=190]
(1,4) to[out=10,in=170]
(3,4) to[out=-10,in=180]
(4,4) to[out=0.in=45]
(4,3) to[out=225,in=135]
(4,2) to[out=-45,in=190]
(4,1) to[out=-10,in=-10]
(3,0) to[out=190,in=290] (0,0);
\draw[red,invmidarrow=5mm] (1,1) rectangle (3,3);
\end{tikzpicture}
\end{document}
编辑
推杆
\draw[red,invmidarrow=10mm] (1.5,1) -- (1,1) -- (1,3) -- (3,3) -- (3,1) -- cycle;
代替
\draw[red,invmidarrow=5mm] (1,1) rectangle (3,3);
我们得到
我们避免标记在顶点上。