TikZ 中的“旋转校正”交流源符号

TikZ 中的“旋转校正”交流源符号

我一直在寻找交流电源的特定符号(带有波浪线的圆圈),似乎在这里找到了它:TikZ circuits.ee.IEC 库中的交流源符号。不幸的是,这里我真的很想念一些额外的功能……一旦我将图形旋转 90°,波浪线(内部正弦)显然也会旋转,这是我不希望发生的事情。我尝试了一种解决方法,即将符号旋转回 90°,但添加带有“方向信息”的箭头会放错位置。另一种方法是绘制一个空心圆并将波浪线作为注释(参见部分SHAPESANNOTATIONS代码)。

然后,带有“方向信息”的箭头总是能正确呈现,但注释的放置方式却很奇怪。这也可以通过额外的编码来规避,尽管不太优雅:

    \draw (0,0) to [source={DC voltage={rotate=90,%
    shift={(-1.05\tikzcircuitssizeunit,1.05\tikzcircuitssizeunit)}},%
    direction info={<-}, info={above:$V_{in}$}}] (0,-2);

有人知道更好的方法吗?有没有可能防止

    transform shape

定义形状时使用的命令,要在注释上执行吗?因为这样才能一劳永逸地解决问题。

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{circuits.ee.IEC}

\begin{document}
%SHAPES
\tikzset{circuit declare symbol=source,
     set source graphic={
        draw,
        circuit symbol lines,
        circuit symbol size=width 2 height 2,
        shape=generic circle IEC,
        transform shape
        }
    }
%ANNOTATIONS

\tikzset{circuit declare annotation=
        {AC voltage}
        {0\tikzcircuitssizeunit}
        {(-0.6\tikzcircuitssizeunit,-1.05\tikzcircuitssizeunit) %
 edge[to path={sin ++(0.3\tikzcircuitssizeunit,0.25\tikzcircuitssizeunit) %
 cos ++(0.3\tikzcircuitssizeunit,-0.25\tikzcircuitssizeunit) %
 sin ++(0.3\tikzcircuitssizeunit,-0.25\tikzcircuitssizeunit) %
 cos ++(0.3\tikzcircuitssizeunit,0.25\tikzcircuitssizeunit)}, -] ()}
    }

\begin{tikzpicture}[circuit ee IEC, thick]
        \draw (0,2.25) to [source={AC voltage={rotate=90,%
 shift={(-1.05\tikzcircuitssizeunit,1.05\tikzcircuitssizeunit)}},%
 direction info={<-}, info={above:$V_{AC}$}}] (0,0);
    \end{tikzpicture}
\end{document}

令我困扰的是,我需要指定:

shift={(-1.05\tikzcircuitssizeunit,1.05\tikzcircuitssizeunit)}}

当绘制旋转 90° 的源时。如果我不这样做,波浪线就会错位。(自己试试吧!)这就是我想以更优雅的方式解决的问题。

编辑:根据要求,有一个完整的工作示例(它太长而无法作为评论包含在内)。

答案1

我不会将波浪线定义为注释,而是将background path其定义为generic circle IEC。这样,您可以使用\pgftransformresetnontranslations取消旋转(和缩放,但这里没问题),然后只需使用 PGF 命令绘制正弦路径即可。

那样

\draw (0,0) to [source={AC,direction info={->},info={below:$V_{AC}$}}] (3,0)
        to [source={AC,direction info={->},info={$V_{AC}$}}] (3,3);

代码如下:

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{circuits.ee.IEC}

\begin{document}
%SHAPES
\tikzset{circuit declare symbol=source,
     set source graphic={
        draw,
        circuit symbol lines,
        circuit symbol size=width 2 height 2,
        shape=generic circle IEC,
        transform shape
        },
    AC/.style={
        /pgf/generic circle IEC/before background={
            \pgftransformresetnontranslations
            \pgfpathmoveto{\pgfpoint{-0.75\tikzcircuitssizeunit}{0pt}}
            \pgfpathsine{
                \pgfpoint{0.375\tikzcircuitssizeunit}{0.375\tikzcircuitssizeunit}}
            \pgfpathcosine{
                \pgfpoint{0.375\tikzcircuitssizeunit}{-0.375\tikzcircuitssizeunit}}
            \pgfpathsine{
                \pgfpoint{0.375\tikzcircuitssizeunit}{-0.375\tikzcircuitssizeunit}}
            \pgfpathcosine{
                \pgfpoint{0.375\tikzcircuitssizeunit}{0.375\tikzcircuitssizeunit}}
            \pgfusepathqstroke
        }
    }
}

\begin{tikzpicture}[circuit ee IEC]
        \draw (0,0) to [source={AC,direction info={->},info={below:$V_{AC}$}}] (3,0)
        to [source={AC,direction info={->},info={$V_{AC}$}}] (3,3);
    \end{tikzpicture}
\end{document}

相关内容