我想创建一个类似于这两个的图形: https://i.stack.imgur.com/0uMjZ.jpg
第一个更符合我的要求。我只有两个问题。如何在光栅耦合器上创建线条?我的想法是使用图案,但它们不会改变间隙。那么有没有一种简单的方法来生成具有不同间隙的平行线?
您将如何根据示例 1 和环创建微型加热器?我会尝试拼凑式的设计,因为环不是真实的,而是两个半圆,两端有一条直线连接(或一个带圆角的矩形),对于微型加热器,我很可能最终会定义很多点并填充中间的区域,但它在这张图片中看起来非常平滑,那么有没有一种平滑的方法可以做到这一点?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}[auto]
\fill[fill=orange](3.7,2) -- (4.3,2) -- (4.7,3)--(3.3,3);
\node[orange, rounded corners=10pt, draw, line width=3mm,minimum width=2.5em,minimum height=2em](FilterMRR)at (4,1.5){};
\fill[fill=white](3.9,1.5) rectangle (4.1,3);
\draw[line width=1mm](0,2) to (5,2);
\draw[line width=1mm](0,1) to (5,1);
\draw[line width=1mm](0,0) to (5,0);
\node[rounded corners=10pt, draw, line width=1mm,minimum width=2.5em,minimum height=2em](FilterMRR)at (4,1.5){};
\node[rounded corners=10pt, draw, line width=1mm,minimum width=2.5em,minimum height=2em](SensorrMRR)at (1,0.5){};
\fill[fill=black](4.8,0.0) -- (5.2,0.1) -- (5.2,-0.1);
\node[minimum width=3mm,minimum height=1mm,pattern=vertical lines](output)at (5.4,0){};
\draw[gray,line width=1mm] (0.5,-0.2) rectangle (1.5,1.2);
\end{tikzpicture}
\end{document}
答案1
就微型加热器而言,我的理解是您希望将顶部缺失部分的尖角弄平整。
这是一种有点黑客的方法,在中间的间隙上构建一个更大的白色框,然后重新绘制节点,但这次用带有选项的矩形剪切图像rounded corners
。
即,从上面的 MWE 中
\fill[fill=white](3.8,1.5) rectangle (4.2,2);
然后用一个剪切区域重新绘制节点,该剪切区域会消除相关角的锐度(并且足够大,使得剪切区域的其他角远远超出节点的边缘)。
\begin{scope}
\clip [rounded corners] (3,1.66) rectangle (3.9,3);
\node[orange, rounded corners=10pt, draw, line width=3mm,minimum width=2.5em,minimum height=2em] at (4,1.5){};
\end{scope}
剪切区域的最小高度1.66
纯粹是通过目测确定的,如果您设置了舍入的大小,则可能需要进行一些调整。
然而,虽然它不是最迷人的自动化方法,但在我看来,它不需要太多的人工劳动就能很好地发挥作用。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,patterns}
\begin{document}
\begin{tikzpicture}[auto]
\fill[fill=orange](3.7,2) -- (4.3,2) -- (4.7,3)--(3.3,3);
\node[orange, rounded corners=10pt, draw, line width=3mm,minimum width=2.5em,minimum height=2em](HeaterMRR)at (4,1.5){};
\fill[fill=white](3.9,1.5) rectangle (4.1,3);
\fill[fill=white](3.8,1.5) rectangle (4.2,2);
\begin{scope}
\clip [rounded corners] (3,1.66) rectangle (3.9,3);
\node[orange, rounded corners=10pt, draw, line width=3mm,minimum width=2.5em,minimum height=2em] at (4,1.5){};
\end{scope}
\begin{scope}
\clip [rounded corners] (5,1.66) rectangle (4.1,3);
\node[orange, rounded corners=10pt, draw, line width=3mm,minimum width=2.5em,minimum height=2em] at (4,1.5){};
\end{scope}
\draw[line width=1mm](0,2) to (5,2);
\draw[line width=1mm](0,1) to (5,1);
\draw[line width=1mm](0,0) to (5,0);
\node[rounded corners=10pt, draw, line width=1mm,minimum width=2.5em,minimum height=2em](FilterMRR)at (4,1.5){};
\node[rounded corners=10pt, draw, line width=1mm,minimum width=2.5em,minimum height=2em](SensorrMRR)at (1,0.5){};
\fill[fill=black](4.8,0.0) -- (5.2,0.1) -- (5.2,-0.1);
\node[minimum width=3mm,minimum height=1mm,pattern=vertical lines](output)at (5.4,0){};
\draw[gray,line width=1mm] (0.5,-0.2) rectangle (1.5,1.2);
\end{tikzpicture}
\end{document}
放大一点,你会看到一个扭结,但是只使用了rounded corners
选项的默认长度,并且没有花很长时间来调整剪辑区域的最小高度,如果需要的话,仍然有足够的改进空间。
至于输入输出的线条,你得到的
\node[minimum width=3mm,minimum height=1mm,pattern=vertical lines](output)at (5.4,0){};
\draw[gray,line width=1mm] (0.5,-0.2) rectangle (1.5,1.2);
在我看来足够合理,也许有更奇特的方式来使用图案,但如果你想要一些不太规则的东西,那么这些只是垂直线,而你作为参考提供的图像只有三条线,所以我建议对于到目前为止给出的用例,它们可以手动绘制而不需要花费太多精力。