% Copyright 2018-2020 by Romano Giannetti % Copyright 2015-2020 by Stefan Lindner % Copyright 2013-2020 by Stefan Erhardt % Copyright 2007-2020 by Massimo Redaelli % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. % % See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details. %% Generic macro for defining a bipole shape % #1 - additional anchors % #2 - lower y-size of the bipole (from the center). % #3 - #shape is the name of the shape % #4 - upper y-size of the bipole (from the center) % #5 - width of the bipole % #6 - macros drawing the bipole % \long\def\pgfcircdeclarebipole{% \pgfcircdeclarebipolescaled{default}} %% Generic macro for defining a bipole shape % #1 - scale factor % #2 - additional anchors % #3 - lower y-size of the bipole (from the center). % #4 - #shape is the name of the shape % #5 - upper y-size of the bipole (from the center) % #6 - width of the bipole % #7 - macros drawing the bipole % \long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{ \pgfdeclareshape{#4shape}{ \savedmacro{\ctikzclass}{\edef\ctikzclass{#1}} \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}} \savedanchor{\northeast}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@y=#5\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@y \pgf@x=#6\pgf@circ@scaled@Rlen \pgf@x=.5\pgf@x } \savedanchor{\northeastborder}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@y=#5\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@y \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y \pgf@x=#6\pgf@circ@scaled@Rlen \pgf@x=.5\pgf@x \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x } \savedanchor{\southwestborder}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@y=-#3\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@y \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y \pgf@x=-#6\pgf@circ@scaled@Rlen \pgf@x=.5\pgf@x \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x } \savedanchor{\southwest}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@y=-#3\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@y \pgf@x=-#6\pgf@circ@scaled@Rlen \pgf@x=.5\pgf@x } \savedanchor{\centerpoint}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@circ@res@down=-#3\pgf@circ@scaled@Rlen \pgf@circ@res@up=#5\pgf@circ@scaled@Rlen \pgfpointorigin \pgf@y=\pgf@circ@res@up \advance\pgf@y by\pgf@circ@res@down \pgf@y=.5\pgf@y } \anchor{center}{\pgfpointorigin} \anchor{n}{ \northeast \pgf@x=0cm } \anchor{north east}{ \northeast } \anchor{north west}{ \northeast \pgf@x=-\pgf@x } \anchor{ne}{ \northeast } \anchor{nw}{ \northeast \pgf@x=-\pgf@x } \anchor{e}{ \northeast \pgf@y=0cm } \anchor{s}{ \southwest \pgf@x=0cm } \anchor{south east}{ \southwest \pgf@x=-\pgf@x } \anchor{south west}{ \southwest } \anchor{se}{ \southwest \pgf@x=-\pgf@x } \anchor{sw}{ \southwest } \anchor{w}{ \southwest \pgf@y=0cm } \anchor{north}{ \northeast \pgf@x=0cm } \anchor{east}{ \northeast \pgf@y=0cm } \anchor{south}{ \southwest \pgf@x=0cm } \anchor{west}{ \southwest \pgf@y=0cm } \anchor{right}{ \northeast \pgf@y=0cm } \anchor{above}{ \northeast \pgf@x=0cm } \anchor{left}{ \southwest \pgf@y=0cm } \anchor{below}{ \southwest \pgf@x=0cm } \anchor{a}{ \northeast \pgf@y=0cm } \anchor{b}{ \southwest \pgf@y=0cm } \savedanchor{\textanchor}{% \pgf@y=\ht\pgfnodeparttextbox \pgf@x=-.5\wd\pgfnodeparttextbox } \anchor{text}{ \textanchor } \anchorborder{% \ifpgf@circuit@bipole@inverted \pgf@circ@res@left=-\pgf@x \pgf@circ@res@right=-\pgf@y \else \pgf@circ@res@left=\pgf@x \pgf@circ@res@right=\pgf@y \fi \ifdim\pgf@circ@res@right>0cm \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder} \else \southwestborder \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}} \fi } #2 \backgroundpath{ \pgfsetcolor{\ctikzvalof{color}} \northeast \pgf@circ@res@up = \pgf@y \pgf@circ@res@zero = 0cm \pgf@circ@res@left = -\pgf@x \pgf@circ@res@right = \pgf@x \southwest \pgf@circ@res@down = \pgf@y \pgf@circ@scaled@Rlen=\scaledRlen \pgfstartlinewidth=\pgflinewidth \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners! #7 \pgfsetlinewidth{\pgfstartlinewidth} } } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Standard bipole shapes declarations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%% % Resistive components %%%%%%%%%%%%%%%%%%%%%%%% %% Short circuit %%% NOTICE that the short is really NOT drawn; we trust the fact that its %%% natural length is zero. \pgfcircdeclarebipole {} {0} {short} {0} {0} { } %% Open circuit \pgfcircdeclarebipole {} {\ctikzvalof{bipoles/open/height}} {open} {\ctikzvalof{bipoles/open/height}} {\ctikzvalof{bipoles/open/width}} { } % multiwire(s) \pgfcircdeclarebipole {} {\ctikzvalof{bipoles/multiwire/height}} {multiwire} {\ctikzvalof{bipoles/multiwire/height}} {\ctikzvalof{bipoles/multiwire/width}} { \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } \pgfcircdeclarebipole {} {\ctikzvalof{bipoles/multiwire/height}} {bmultiwire} {\ctikzvalof{bipoles/multiwire/height}} {\ctikzvalof{bipoles/multiwire/width}} { \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } \pgfcircdeclarebipole {} {\ctikzvalof{bipoles/multiwire/height}} {tmultiwire} {\ctikzvalof{bipoles/multiwire/height}} {\ctikzvalof{bipoles/multiwire/width}} { \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+2\pgf@circ@res@other}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } % % %% Generic bipole - used as resistor by some (bleah) \pgfcircdeclarebipolescaled{resistors} {} {\ctikzvalof{bipoles/generic/height}} {generic} {\ctikzvalof{bipoles/generic/height}} {\ctikzvalof{bipoles/generic/width}} { \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill } % % generic crossed, suggested by Radványi Patrik Tamás % inherit "generic" properties % \pgfcircdeclarebipolescaled{resistors} {} {\ctikzvalof{bipoles/generic/height}} {xgeneric} {\ctikzvalof{bipoles/generic/height}} {\ctikzvalof{bipoles/generic/width}} { \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill % cross it \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfusepath{draw} } %% Generic empty tunable \pgfcircdeclarebipolescaled{resistors} {} {\ctikzvalof{bipoles/tgeneric/height}} {tgeneric} {\ctikzvalof{bipoles/tgeneric/height}} {\ctikzvalof{bipoles/tgeneric/width}} { \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \pgfscope \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% Generic asymmetric bipole \pgfcircdeclarebipolescaled{resistors} {} {\ctikzvalof{bipoles/ageneric/height}} {ageneric} {\ctikzvalof{bipoles/ageneric/height}} {\ctikzvalof{bipoles/ageneric/width}} { \pgfscope \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \endpgfscope \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{stroke,fill} } %% Memristor \pgfcircdeclarebipolescaled{resistors} {} {\ctikzvalof{bipoles/memristor/height}} {memristor} {\ctikzvalof{bipoles/memristor/height}} {\ctikzvalof{bipoles/memristor/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 14 \pgfscope \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}} \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}} \pgfusepath{draw} \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{stroke,fill} } %% Photoresistor \pgfcircdeclarebipolescaled{resistors} {} {\ctikzvalof{bipoles/photoresistor/height 2}} {photoresistor} {\ctikzvalof{bipoles/photoresistor/height}} {\ctikzvalof{bipoles/photoresistor/width}} { \pgfscope \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \endpgfscope \pgfscope \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% Thermistor \pgfcircdeclarebipolescaled{resistors} {{% anchor for labelling the type of dependency \anchor{label}{% \southwest \pgf@x=0.4\pgf@x \pgf@y=1.2\pgf@y }% }} {\ctikzvalof{bipoles/thermistor/height}} {thermistor} {\ctikzvalof{bipoles/thermistor/height}} {\ctikzvalof{bipoles/thermistor/width}} { \pgfscope \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \endpgfscope %\pgfscope \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{1.2\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{1.2\pgf@circ@res@down}} \pgfusepath{draw} %\endpgfscope } %% Thermistor PTC \pgfcircdeclarebipolescaled{resistors} {} {\ctikzvalof{bipoles/thermistorptc/height 2}} {thermistorptc} {\ctikzvalof{bipoles/thermistorptc/height}} {\ctikzvalof{bipoles/thermistorptc/width}} { \pgfscope \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \endpgfscope \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}} \pgfusepath{draw} \pgfsetlinewidth{\pgfstartlinewidth} \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$} \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}} \pgfusepath{draw} } %% Thermistor NTC \pgfcircdeclarebipolescaled{resistors} {} {\ctikzvalof{bipoles/thermistorntc/height 2}} {thermistorntc} {\ctikzvalof{bipoles/thermistorntc/height}} {\ctikzvalof{bipoles/thermistorntc/width}} { \pgfscope \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \endpgfscope \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}} \pgfusepath{draw} \pgfsetlinewidth{\pgfstartlinewidth} \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$} \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfusepath{draw} } %% Generic tunable \pgfcircdeclarebipolescaled{resistors} { \savedanchor{\wiper}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@ya=\ctikzvalof{bipoles/generic potentiometer/height}\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@ya \pgf@xa=\ctikzvalof{bipoles/generic potentiometer/width}\pgf@circ@scaled@Rlen \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/generic potentiometer/wiper pos}-0.5)*\pgf@xa} } \anchor{wiper}{\wiper} \anchor{W}{\wiper} } {\ctikzvalof{bipoles/generic potentiometer/height 2}} {genericpotentiometer} {\ctikzvalof{bipoles/generic potentiometer/height}} {\ctikzvalof{bipoles/generic potentiometer/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 14 \pgfscope \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \endpgfscope \pgfscope %\pgfsetlinewidth{\pgfstartlinewidth} \pgfsetarrowsend{latexslim} \pgfextractx{\pgf@circ@res@other}{\wiper} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% Zig zag resistores \def\pgf@circ@zigzag#1{% \divide \pgf@circ@res@step by \numexpr4*\zigs\relax \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \pgf@circ@count@a=\zigs\relax % first half zig \advance\pgf@circ@res@other by \pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}} \pgfmathloop% \advance\pgf@circ@count@a by -1\relax% Loop zigs -1 times \ifnum\pgf@circ@count@a>0 \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}} \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}} \repeatpgfmathloop% % last zig and a half \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}} \advance\pgf@circ@res@other by \pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}} \pgfsetbeveljoin \pgfusepath{draw} } %% Resistor \pgfcircdeclarebipolescaled{resistors} { \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}} } {\ctikzvalof{bipoles/resistor/height}} {resistor} {\ctikzvalof{bipoles/resistor/height}} {\ctikzvalof{bipoles/resistor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth} \pgf@circ@zigzag{1} } %% Variable resistor \pgfcircdeclarebipolescaled{resistors} { \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}} } {\ctikzvalof{bipoles/vresistor/height}} {vresistor} {\ctikzvalof{bipoles/vresistor/height}} {\ctikzvalof{bipoles/vresistor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth} \pgf@circ@zigzag{.5} \pgfscope \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% Potentiometer \pgfcircdeclarebipolescaled{resistors} { \savedanchor{\wiper}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@ya=\ctikzvalof{bipoles/potentiometer/height}\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@ya \pgf@xa=\ctikzvalof{bipoles/potentiometer/width}\pgf@circ@scaled@Rlen \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/potentiometer/wiper pos}-0.5)*\pgf@xa} } \anchor{wiper}{\wiper} \anchor{W}{\wiper} \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}} } {\ctikzvalof{bipoles/potentiometer/height 2}} {potentiometer} {\ctikzvalof{bipoles/potentiometer/height}} {\ctikzvalof{bipoles/potentiometer/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth} \pgf@circ@zigzag{1} \pgfscope %\pgfsetlinewidth{\pgfstartlinewidth} \pgfsetarrowsend{latexslim} \pgfextractx{\pgf@circ@res@other}{\wiper} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% Resistive sensor \pgfcircdeclarebipolescaled{resistors} {% anchor for labelling the type of dependency \anchor{label}{\southwest\pgf@x=0.4\pgf@x}% \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}} } {\ctikzvalof{bipoles/resistivesens/height}} {resistivesens} {\ctikzvalof{bipoles/resistivesens/height}} {\ctikzvalof{bipoles/resistivesens/width}} {% \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth} \pgf@circ@zigzag{.5} \pgfscope \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{-.9\pgf@circ@res@other}{\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %%%%%%%%%%%%%% %% Capacitors %%%%%%%%%%%%% %% Plain Capacitor \pgfcircdeclarebipolescaled{capacitors} {} {\ctikzvalof{bipoles/capacitor/height}} {capacitor} {\ctikzvalof{bipoles/capacitor/height}} {\ctikzvalof{bipoles/capacitor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{draw} } %% Capacitive sensor \pgfcircdeclarebipolescaled{capacitors} { \anchor{label}{\southwest\pgf@x=2.6\pgf@x\pgf@y=1.2\pgf@y}% } {\ctikzvalof{bipoles/capacitor/height}} {capacitivesens} {\ctikzvalof{bipoles/capacitor/height}} {\ctikzvalof{bipoles/capacitor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{draw} \pgfscope \pgfpathmoveto{\pgfpoint{2.6\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-2.6\pgf@circ@res@right}{1.2\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{-4.4\pgf@circ@res@right}{1.2\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% Polar Capacitor (DEPRECATED) \pgfcircdeclarebipolescaled{capacitors} {} {\ctikzvalof{bipoles/pcapacitor/height}} {polarcapacitor} {\ctikzvalof{bipoles/pcapacitor/height}} {\ctikzvalof{bipoles/pcapacitor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}} \pgftransformrotate{-90} \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}} \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}} \pgfusepath{draw} \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{draw} } %% Curved capacitor % see https://tex.stackexchange.com/questions/509594/polar-capacitor-orientation-in-circuitikz-seems-wrong % for a rationale % \pgfcircdeclarebipolescaled{capacitors} {} {\ctikzvalof{bipoles/ccapacitor/height}} {ccapacitor} {\ctikzvalof{bipoles/ccapacitor/height}} {\ctikzvalof{bipoles/ccapacitor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+ \ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}{\pgf@circ@res@up}} \pgftransformrotate{-90} \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}} \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}} \pgfusepath{draw} \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfusepath{draw} } %% Electrolytic Capacitor \pgfcircdeclarebipolescaled{capacitors} {} {\ctikzvalof{bipoles/ecapacitor/height}} {ecapacitor} {\ctikzvalof{bipoles/ecapacitor/height}} {\ctikzvalof{bipoles/ecapacitor/width}} { \pgfsetrectcap % % % Draw plus pole \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgf@circ@draworfill % % Draw minus pole \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfsetfillcolor{\ctikzvalof{color}} \pgfusepath{draw,fill} \pgfsetfillcolor{\ctikzvalof{color}} % % plus pole annotation \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}] {\ctikzvalof{bipoles/ecapacitor/font} $+$} } %% Variable Capacitor \pgfcircdeclarebipolescaled{capacitors} {} {\ctikzvalof{bipoles/vcapacitor/height}} {vcapacitor} {\ctikzvalof{bipoles/vcapacitor/height}} {\ctikzvalof{bipoles/vcapacitor/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}} \pgfusepath{draw} \pgfscope \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfsetlinewidth{\pgfstartlinewidth} \pgfusepath{draw} } %% Piezoelectric Element \pgfcircdeclarebipolescaled{capacitors} {} {\ctikzvalof{bipoles/piezoelectric/height}} {piezoelectric} {\ctikzvalof{bipoles/piezoelectric/height}} {\ctikzvalof{bipoles/piezoelectric/width}} { % \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen % \divide \pgf@circ@res@step by 5 %% Outer markings \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{draw} %% Inner Box \pgf@circ@res@step = \pgf@circ@res@right \divide \pgf@circ@res@step by 10 \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathrectanglecorners {\pgfpoint{\pgf@circ@res@left+4*\pgf@circ@res@step}{\pgf@circ@res@up-\pgf@circ@res@step}} {\pgfpoint{\pgf@circ@res@right-4*\pgf@circ@res@step}{\pgf@circ@res@down+\pgf@circ@res@step}} \pgf@circ@draworfill \endpgfscope } %%%%%%%%%%%%%%% %% Inductors %%%%%%%%%%%%%%% %% cute inductor \pgfcircdeclarebipolescaled{inductors} { \savedanchor{\midtap}{% \pgf@x=0pt\relax \pgfmathsetlength{\pgf@y}{% (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?% \ctikzvalof{bipoles/cuteinductor/height} :% even -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd *\pgf@circ@scaled@Rlen/2 } } \anchor{midtap}{\midtap} } {\ctikzvalof{bipoles/cuteinductor/lower coil height}} {cuteinductor} {\ctikzvalof{bipoles/cuteinductor/height}} {\ctikzvalof{bipoles/cuteinductor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfmathsetlength{\pgf@circ@res@other}%width of small coil {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)} \pgfmathsetlength{\pgf@circ@res@step} {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}} { \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up} \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down} } \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up} \pgfsetbuttcap \pgfsetbeveljoin \pgfusepath{stroke} } %% cute inductive sensor \pgfcircdeclarebipolescaled{inductors} {% anchor for labelling the type of dependency \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}% \savedanchor{\midtap}{% \pgf@x=0pt\relax \pgfmathsetlength{\pgf@y}{% (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?% \ctikzvalof{bipoles/cuteinductor/height} :% even -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd *\pgf@circ@scaled@Rlen/2 } } \anchor{midtap}{\midtap} } {\ctikzvalof{bipoles/cuteinductor/lower coil height}} {scuteinductor} {\ctikzvalof{bipoles/cuteinductor/height}} {\ctikzvalof{bipoles/cuteinductor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfmathsetlength{\pgf@circ@res@other}%width of small coil {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)} \pgfmathsetlength{\pgf@circ@res@step} {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}} { \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up} \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down} } \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up} \pgfsetbuttcap \pgfsetbeveljoin \pgfusepath{stroke} \pgfscope \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% cute choke \pgfcircdeclarebipolescaled{inductors} { \savedanchor{\midtap}{% \pgf@x=0pt\relax \pgfmathsetlength{\pgf@y}{% (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?% \ctikzvalof{bipoles/cuteinductor/height} :% even -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd *\pgf@circ@scaled@Rlen/2 } } \anchor{midtap}{\midtap} } {\ctikzvalof{bipoles/cutechoke/lower coil height}} {cutechoke} {\ctikzvalof{bipoles/cutechoke/height}} {\ctikzvalof{bipoles/cutechoke/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfmathsetlength{\pgf@circ@res@other}%width of small coil {0.5*\ctikzvalof{bipoles/cutechoke/coil aspect}*\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen/(\ctikzvalof{bipoles/cutechoke/coils}-1)} \pgfmathsetlength{\pgf@circ@res@step} {(\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cutechoke/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cutechoke/coils}/2} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases \foreach \x in {2,...,\ctikzvalof{bipoles/cutechoke/coils}} { \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up} \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down} } \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up} \pgfsetbuttcap \pgfsetbeveljoin \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth} \pgfusepath{stroke} \ifpgf@circuit@bipole@twolineschoke \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth} \pgfusepath{stroke} \fi } %% variable cute inductor \pgfcircdeclarebipolescaled{inductors} { \savedanchor{\midtap}{% \pgf@x=0pt\relax \pgfmathsetlength{\pgf@y}{% (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?% \ctikzvalof{bipoles/cuteinductor/height} :% even -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd *\pgf@circ@scaled@Rlen/2 } } \anchor{midtap}{\midtap} } {\ctikzvalof{bipoles/vcuteinductor/lower coil height}} {vcuteinductor} {\ctikzvalof{bipoles/vcuteinductor/height}} {\ctikzvalof{bipoles/vcuteinductor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfmathsetlength{\pgf@circ@res@other}%width of small coil {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)} \pgfmathsetlength{\pgf@circ@res@step} {(\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2} \pgfscope \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}} { \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up} \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down} } \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up} \pgfsetbuttcap \pgfsetbeveljoin \pgfusepath{stroke} } %% american inductor \pgfcircdeclarebipolescaled{inductors} { \savedanchor{\midtap}{% \pgf@x=0pt\relax \pgfmathsetlength{\pgf@y}{% (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?% 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even 0) %odd *\pgf@circ@scaled@Rlen/2 } } \anchor{midtap}{\midtap} } {\ctikzvalof{bipoles/americaninductor/height 2}} {americaninductor} {\ctikzvalof{bipoles/americaninductor/height}} {\ctikzvalof{bipoles/americaninductor/width}} { \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils} \divide \pgf@circ@res@step by 2 \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}} { \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other} } \pgfsetbuttcap \pgfsetbeveljoin \pgfusepath{stroke} } %% american inductive sensor \pgfcircdeclarebipolescaled{inductors} {% anchor for labelling the type of dependency \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}% \savedanchor{\midtap}{% \pgf@x=0pt\relax \pgfmathsetlength{\pgf@y}{% (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?% 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even 0) %odd *\pgf@circ@scaled@Rlen/2 } } \anchor{midtap}{\midtap} } {\ctikzvalof{bipoles/americaninductor/height 2}} {samericaninductor} {\ctikzvalof{bipoles/americaninductor/height}} {\ctikzvalof{bipoles/americaninductor/width}} { \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils} \divide \pgf@circ@res@step by 2 \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}} { \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other} } \pgfsetbuttcap \pgfsetbeveljoin \pgfusepath{stroke} \pgfscope \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% variable american inductor \pgfcircdeclarebipolescaled{inductors} { \savedanchor{\midtap}{% \pgf@x=0pt\relax \pgfmathsetlength{\pgf@y}{% (mod(\ctikzvalof{bipoles/vamericaninductor/coils},2) ?% 2*\ctikzvalof{bipoles/vamericaninductor/coil height} :% even 0) %odd *\pgf@circ@scaled@Rlen/2 } } \anchor{midtap}{\midtap} } {\ctikzvalof{bipoles/vamericaninductor/height 2}} {vamericaninductor} {\ctikzvalof{bipoles/vamericaninductor/height}} {\ctikzvalof{bipoles/vamericaninductor/width}} { \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@scaled@Rlen \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils} \divide \pgf@circ@res@step by 2 \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@scaled@Rlen \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}} { \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other} } \pgfsetbuttcap \pgfsetbeveljoin \pgfusepath{stroke} \pgfscope \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Generic bipole, filled - used as inductor by some \pgfcircdeclarebipolescaled{inductors} { \anchor{midtap}{\northeast\pgf@x=0pt\relax} } {\ctikzvalof{bipoles/fullgeneric/height}} {fullgeneric} {\ctikzvalof{bipoles/fullgeneric/height}} {\ctikzvalof{bipoles/fullgeneric/width}} { \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfusepath{draw,fill} } %% Generic sensor, filled - used as inductive sensor by some \pgfcircdeclarebipolescaled{inductors} {% anchor for labelling the type of dependency \anchor{label}{\southwest\pgf@x=0.4\pgf@x\pgf@y=2\pgf@y}% \anchor{midtap}{\northeast\pgf@x=0pt\relax} } {\ctikzvalof{bipoles/fullgeneric/height}} {sfullgeneric} {\ctikzvalof{bipoles/fullgeneric/height}} {\ctikzvalof{bipoles/fullgeneric/width}} { \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfusepath{draw,fill} %\pgfscope \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-2\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{2\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{2\pgf@circ@res@down}} \pgfusepath{draw} %\endpgfscope } %% Generic full tunable \pgfcircdeclarebipolescaled{inductors} { \anchor{midtap}{\northeast\pgf@x=0pt\relax} } {\ctikzvalof{bipoles/tfullgeneric/height}} {tfullgeneric} {\ctikzvalof{bipoles/tfullgeneric/height}} {\ctikzvalof{bipoles/tfullgeneric/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen \divide \pgf@circ@res@step by 14 \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfusepath{draw,fill} \pgfscope \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %%%%%%%%%%% %% Battery %%%%%%%%%%% %% Battery \pgfcircdeclarebipolescaled{batteries} {} {\ctikzvalof{bipoles/battery/height}} {battery} {\ctikzvalof{bipoles/battery/height}} {\ctikzvalof{bipoles/battery/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 6 \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \ifpgf@circ@fixbatteries \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \else \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}} \fi \pgfusepath{draw} } %% Battery 1 % poles with equl thickness \pgfcircdeclarebipolescaled{batteries} {} {\ctikzvalof{bipoles/battery1/height}} {battery1} {\ctikzvalof{bipoles/battery1/height}} {\ctikzvalof{bipoles/battery1/width}} { \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}} \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}} \pgfusepath{draw} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \ifpgf@circ@fixbatteries \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}} \else \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}} \fi \pgfusepath{draw} } %% Battery 2 % negative pole thicker \pgfcircdeclarebipolescaled{batteries} {} {\ctikzvalof{bipoles/battery2/height}} {battery2} {\ctikzvalof{bipoles/battery2/height}} {\ctikzvalof{bipoles/battery2/width}} { \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}} \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}} \pgfusepath{draw} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \ifpgf@circ@fixbatteries \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{draw} \pgfsetlinewidth{3\pgflinewidth} \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}} \else \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfusepath{draw} \pgfsetlinewidth{3\pgflinewidth} \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}} \fi \pgfusepath{draw} } %%%%%%%%%%% %% Round and diamond sources %%%%%%%%%%% %% Independent voltage source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/vsource/height}} {vsource} {\ctikzvalof{bipoles/vsource/height}} {\ctikzvalof{bipoles/vsource/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} } %% To change the internal symbols of the voltage source american style \ctikzset{bipoles/vsourceam/inner plus/.initial={$+$}} \ctikzset{bipoles/vsourceam/inner minus/.initial={$-$}} %% Independent voltage source - American style \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/vsourceam/height}} {vsourceAM} {\ctikzvalof{bipoles/vsourceam/height}} {\ctikzvalof{bipoles/vsourceam/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgfsetcolor{\ctikzvalof{color}} \ifpgf@circ@oldvoltagedirection \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner plus}} \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner minus}} \else \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner minus}} \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner plus}} \fi } %% Independent sinusoidal voltage source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/vsourcesin/height}} {vsourcesin} {\ctikzvalof{bipoles/vsourcesin/height}} {\ctikzvalof{bipoles/vsourcesin/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgf@circ@res@up = .5\pgf@circ@res@up \pgfscope \pgftransformrotate{90} \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}} \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}} \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}} \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}} \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } % Square Voltage source - contributed by Alistair Kwan \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/vsourcesquare/height}} {vsourcesquare} {\ctikzvalof{bipoles/vsourcesquare/height}} {\ctikzvalof{bipoles/vsourcesquare/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgf@circ@res@up = .5\pgf@circ@res@up \pgfscope \pgftransformrotate{90} \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}} \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } % Triangle Voltage source - contributed by Ralf Farkas \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/vsourcetri/height}} {vsourcetri} {\ctikzvalof{bipoles/vsourcetri/height}} {\ctikzvalof{bipoles/vsourcetri/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgf@circ@res@up = .5\pgf@circ@res@up \pgfscope \pgftransformrotate{90} \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}} \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% PV Source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/pvsource/height}} {pvsource} {\ctikzvalof{bipoles/pvsource/height}} {\ctikzvalof{bipoles/pvsource/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}} \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}} \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}} \pgfusepath{draw} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}} \pgfusepath{draw} %Arrow Part \pgfscope \pgfsetarrowsend{latex} \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}} \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}} \pgfusepath{draw} \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}} \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}} \pgfusepath{draw} \endpgfscope } %% Empty Source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/esource/height}} {esource} {\ctikzvalof{bipoles/esource/height}} {\ctikzvalof{bipoles/esource/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill } %% DC Current Source with open shape \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/dcisource/height}} {dcisource} {\ctikzvalof{bipoles/dcisource/height}} {\ctikzvalof{bipoles/dcisource/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpointorigin} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@maybefill \edef\@@angle{\ctikzvalof{bipoles/dcisource/angle}} \pgfpathmoveto{\pgfpointpolar{\@@angle}{\pgf@circ@res@up}} \pgfpatharc{\@@angle}{-\@@angle}{\pgf@circ@res@up} \pgfpathmoveto{\pgfpointpolar{180-\@@angle}{\pgf@circ@res@up}} \pgfpatharc{180-\@@angle}{180+\@@angle}{\pgf@circ@res@up} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} \pgfscope \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}} \endpgfscope } %% DC-Voltage source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/dcvsource/height}} {dcvsource} {\ctikzvalof{bipoles/dcvsource/height}} {\ctikzvalof{bipoles/dcvsource/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}} \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}} \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}} \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}} \pgfusepath{draw} } %% Independent current source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/isource/height}} {isource} {\ctikzvalof{bipoles/isource/height}} {\ctikzvalof{bipoles/isource/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}} \pgf@circ@draworfill } %% Independent double oo source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/oosource/height}} {oosource} {\ctikzvalof{bipoles/oosource/height}} {\ctikzvalof{bipoles/oosource/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}} {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left} \pgf@circ@maybefill \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}} {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right} \pgf@circ@draworfill \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}} {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left} \pgfusepath{draw} } % % % winding symbols % triangle \def\pgf@circ@delta#1{ \pgfscope \pgftransformscale{-.01\pgf@circ@res@left*#1} \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \pgftransformrotate{-\pgfcircmathresult} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0}{.866\pgf@circ@res@up}} \pgfpathclose \pgfusepath{stroke} \endpgfscope } % star \def\pgf@circ@wye#1{ \pgfscope \pgftransformscale{-.015\pgf@circ@res@left*#1} \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \pgftransformrotate{-\pgfcircmathresult} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpointorigin} \pgfpathlineto{\pgfpointpolar{-30}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpointorigin} \pgfpathlineto{\pgfpointpolar{-150}{\pgf@circ@res@down}} \pgfusepath{stroke} \endpgfscope } % zigzag \def\pgf@circ@zig#1{ \pgfscope \pgftransformscale{-.015\pgf@circ@res@left*#1} \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \pgftransformrotate{-\pgfcircmathresult} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpointorigin} \pgfpathlineto{\pgfpointpolar{90}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpointpolar{60}{\pgf@circ@res@up}} \pgfpathmoveto{\pgfpointorigin} \pgfpathlineto{\pgfpointpolar{210}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpointpolar{0}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpointorigin} \pgfpathlineto{\pgfpointpolar{330}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpointpolar{-60}{\pgf@circ@res@up}} \pgfusepath{stroke} \endpgfscope } % % % % round three-phase transformer \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/oosourcetrans/height}} {oosourcetrans} {\ctikzvalof{bipoles/oosourcetrans/height}} {\ctikzvalof{bipoles/oosourcetrans/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}} {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left} \pgf@circ@maybefill \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@right}{0}} {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right} \pgf@circ@draworfill \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}} {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left} \pgfusepath{draw} % % % % draw inner symbols %%primary winding \ifpgf@circ@prim@delta \pgfscope \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left} \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@prim@wye \pgfscope \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left} \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@prim@zig \pgfscope \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left} \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}} \endpgfscope \fi\fi\fi %%secondary winding \ifpgf@circ@sec@delta \pgfscope \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right} \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@sec@wye \pgfscope \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right} \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@sec@zig \pgfscope \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right} \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}} \endpgfscope \fi\fi\fi } % % % % ooosource for three phase transformer \pgfcircdeclarebipolescaled{sources} { \anchor{right}{ \northeast \pgf@y=0pt \pgfmathparse{ \ctikzvalof{bipoles/ooosource/circleoffset}* sin(30) + %%the sqrt must be > 0, the circles have to intersect sqrt( pow(\ctikzvalof{bipoles/ooosource/circlesize},2) - pow(\ctikzvalof{bipoles/ooosource/circleoffset}*cos(30),2) ) } \pgf@x=\pgfmathresult\pgf@x } \anchor{east}{ \northeast \pgf@y=0pt } \savedanchor{\centerprim}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen \pgf@y=0pt \pgf@x=.5\pgf@circ@scaled@Rlen } \anchor{centerprim}{ \centerprim } \savedanchor{\centersec}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen} \pgf@y=-\pgf@y \pgf@x=-\pgf@x } \anchor{centersec}{ \centersec } \savedanchor{\centertert}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen} \pgf@y=\pgf@y \pgf@x=-\pgf@x } \anchor{centertert}{ \centertert } % add some anchors in case the are needed :) \anchor{prim1}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen \pgfpointadd{\centerprim}{\pgfpointpolar{135}{.5\pgf@circ@scaled@Rlen}} } \anchor{prim2}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen \pgfpointadd{\centerprim}{\pgfpointpolar{-135}{.5\pgf@circ@scaled@Rlen}} } \anchor{sec1}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen \pgfpointadd{\centersec}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}} } \anchor{sec2}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen \pgfpointadd{\centersec}{\pgfpointpolar{45}{.5\pgf@circ@scaled@Rlen}} } \anchor{sec3}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen \pgfpointadd{\centersec}{\pgfpointpolar{90}{.5\pgf@circ@scaled@Rlen}} } \anchor{tert1}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen \pgfpointadd{\centertert}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}} } \anchor{tert2}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen \pgfpointadd{\centertert}{\pgfpointpolar{-45}{.5\pgf@circ@scaled@Rlen}} } \anchor{tert3}{ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen \pgfpointadd{\centertert}{\pgfpointpolar{-90}{.5\pgf@circ@scaled@Rlen}} } } {\ctikzvalof{bipoles/ooosource/height}} {ooosource} {\ctikzvalof{bipoles/ooosource/height}} {\ctikzvalof{bipoles/ooosource/height}} { % \pgf@circ@res@other = \ctikzvalof{bipoles/ooosource/vectorgroup} \pgf@circ@scaled@Rlen % % filling % left \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left} \pgf@circ@maybefill % up \pgfscope \pgfpointorigin \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right} \pgf@circ@maybefill \endpgfscope % down \pgfscope \pgfpointorigin \pgfpathcircle{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right} \pgf@circ@draworfill \endpgfscope % drawing % left \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left} \pgfusepath{draw} % up \pgfscope \pgfpointorigin \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right} \pgfusepath{draw} \endpgfscope % % % draw inner symbols % % primary winding \ifpgf@circ@prim@delta \pgfscope \pgftransformxshift{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left} \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@prim@wye \pgfscope \pgftransformxshift{.6\pgf@circ@res@left} \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@prim@zig \pgfscope \pgftransformxshift{.6\pgf@circ@res@left} \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}} \endpgfscope \fi\fi\fi % % secondary winding \ifpgf@circ@sec@delta \pgfscope \pgfpointorigin \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}} \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@sec@wye \pgfscope \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}} \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@sec@zig \pgfscope \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}} \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}} \endpgfscope \fi\fi\fi % % tertiary winding \ifpgf@circ@tert@delta \pgfscope \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}} \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@tert@wye \pgfscope \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}} \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}} \endpgfscope \else\ifpgf@circ@tert@zig \pgfscope \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}} \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}} \endpgfscope \fi\fi\fi } %% Independent current source - American \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/isourceam/height}} {isourceAM} {\ctikzvalof{bipoles/isourceam/height}} {\ctikzvalof{bipoles/isourceam/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} \pgfscope \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}} \endpgfscope } %% Independent sinusoidal current source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/isource/height}} {isourcesin} {\ctikzvalof{bipoles/isource/height}} {\ctikzvalof{bipoles/isource/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgf@circ@res@up = .5\pgf@circ@res@up \pgfscope \pgftransformrotate{90} \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}} \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}} \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}} \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}} \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Empty controlled source \pgfcircdeclarebipolescaled{csources} {} {\ctikzvalof{bipoles/ecsource/height}} {ecsource} {\ctikzvalof{bipoles/ecsource/height}} {\ctikzvalof{bipoles/ecsource/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfpathclose \pgf@circ@draworfill } %% Controlled voltage source \pgfcircdeclarebipolescaled{csources} {} {\ctikzvalof{bipoles/cvsource/height}} {cvsource} {\ctikzvalof{bipoles/cvsource/height}} {\ctikzvalof{bipoles/cvsource/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfpathclose \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} } %% To change the internal symbols of the controlled voltage source american style \ctikzset{bipoles/cvsourceam/inner plus/.initial={$+$}} \ctikzset{bipoles/cvsourceam/inner minus/.initial={$-$}} %% Controlled voltage source - American \pgfcircdeclarebipolescaled{csources} {} {\ctikzvalof{bipoles/cvsourceam/height}} {cvsourceAM} {\ctikzvalof{bipoles/cvsourceam/height}} {\ctikzvalof{bipoles/cvsourceam/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfpathclose \pgf@circ@draworfill \pgfsetcolor{\ctikzvalof{color}} \ifpgf@circ@oldvoltagedirection \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner plus}} \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner minus}} \else \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner minus}} \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner plus}} \fi } %% Controlled sinusoidal voltage source \pgfcircdeclarebipolescaled{csources} {} {\ctikzvalof{bipoles/cvsourcesin/height}} {cvsourcesin} {\ctikzvalof{bipoles/cvsourcesin/height}} {\ctikzvalof{bipoles/cvsourcesin/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfpathclose \pgf@circ@draworfill \endpgfscope \pgf@circ@res@up = .5\pgf@circ@res@up \pgfscope \pgftransformrotate{90} \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}} \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}} \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}} \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}} \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Controlled sinusoidal current source \pgfcircdeclarebipolescaled{csources} {} {\ctikzvalof{bipoles/cvsourcesin/height}} {cisourcesin} {\ctikzvalof{bipoles/cvsourcesin/height}} {\ctikzvalof{bipoles/cvsourcesin/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfpathclose \pgf@circ@draworfill \endpgfscope \pgf@circ@res@up = .5\pgf@circ@res@up \pgfscope \pgftransformrotate{90} \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}} \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}} \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}} \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}} \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Controlled current source \pgfcircdeclarebipolescaled{csources} {} {\ctikzvalof{bipoles/cisource/height}} {cisource} {\ctikzvalof{bipoles/cisource/height}} {\ctikzvalof{bipoles/cisource/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfpathclose \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfusepath{draw} } %% Controlled current source - American \pgfcircdeclarebipolescaled{csources} {} {\ctikzvalof{bipoles/cisourceam/height}} {cisourceAM} {\ctikzvalof{bipoles/cisourceam/height}} {\ctikzvalof{bipoles/cisourceam/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfpathclose \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} \pgfscope \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}} \endpgfscope } %% Cute Independent voltage source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/vsource/height}} {vsourceC} {\ctikzvalof{bipoles/vsource/height}} {\ctikzvalof{bipoles/vsource/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}} \pgfsetlinewidth{\@@thicker\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfsetroundcap\pgfusepath{draw} } %% Cute Independent current source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/isource/height}} {isourceC} {\ctikzvalof{bipoles/isource/height}} {\ctikzvalof{bipoles/isource/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}} \pgfsetlinewidth{\@@thicker\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}} \pgfsetroundcap\pgfusepath{draw} } %% Cute Controlled voltage source \pgfcircdeclarebipolescaled{csources} {} {\ctikzvalof{bipoles/cvsource/height}} {cvsourceC} {\ctikzvalof{bipoles/cvsource/height}} {\ctikzvalof{bipoles/cvsource/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@draworfill \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}} \pgfsetlinewidth{\@@thicker\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfsetroundcap\pgfusepath{draw} } %% Cute Controlled current source \pgfcircdeclarebipolescaled{csources} {} {\ctikzvalof{bipoles/cisource/height}} {cisourceC} {\ctikzvalof{bipoles/cisource/height}} {\ctikzvalof{bipoles/cisource/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@draworfill \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}} \pgfsetlinewidth{\@@thicker\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@down}} \pgfsetroundcap\pgfusepath{draw} } %% Noise voltage source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/vsource/height}} {vsourceN} {\ctikzvalof{bipoles/vsource/height}} {\ctikzvalof{bipoles/vsource/width}} { \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} % \pgf@circ@scaled@Rlen=\scaledRlen \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax \edef\pgf@noise@temp{dashed} \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}} \ifx\pgf@noise@temp\pgf@noise@fill % fillable in this case \pgf@circ@draworfillandclip \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}} \pgfsetlinewidth{\@@thinner\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} % \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{draw} \else \pgfsetfillcolor{\pgf@noise@fill} \pgfusepath{draw,fill} \fi \endpgfscope \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}} \pgfsetlinewidth{\@@thicker\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfsetroundcap\pgfusepath{draw} } %% Noise current source \pgfcircdeclarebipolescaled{sources} {} {\ctikzvalof{bipoles/isource/height}} {isourceN} {\ctikzvalof{bipoles/isource/height}} {\ctikzvalof{bipoles/isource/width}} { \pgfpointorigin \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} % \pgf@circ@scaled@Rlen=\scaledRlen \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax \edef\pgf@noise@temp{dashed} \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}} \ifx\pgf@noise@temp\pgf@noise@fill % fillable in this case \pgf@circ@draworfillandclip \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}} \pgfsetlinewidth{\@@thinner\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} % \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{draw} \else \pgfsetfillcolor{\pgf@noise@fill} \pgfusepath{draw,fill} \fi \endpgfscope \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}} \pgfsetlinewidth{\@@thicker\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}} \pgfsetroundcap\pgfusepath{draw} } %%%%%%%%%%%%%% %% Diodes %%%%%%%%%%%%%% %% Black generic diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {fulldiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgftransformxshift{\pgf@circ@res@left} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfusepath{draw,fill} \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} } %% Black Zener diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {fullzdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgftransformxshift{\pgf@circ@res@left} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfusepath{draw,fill} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Black alternative zigzag Zener diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {fullzzdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgftransformxshift{\pgf@circ@res@left} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfusepath{draw,fill} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% Black Schottky diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {fullsdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgftransformxshift{\pgf@circ@res@left} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfusepath{draw,fill} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Black tunnel diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {fulltdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgftransformxshift{\pgf@circ@res@left} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfusepath{draw,fill} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } % % draw LED arrows % \def\pgf@circ@draw@ledarrows{% \pgfsetlinewidth{\pgfstartlinewidth} \pgfsetarrowsend{latexslim} \ifpgf@led@fliparrows \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}} \pgfusepath{draw} \else \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}} \pgfusepath{draw} \fi } % % ---and photodiode arrows % \def\pgf@circ@draw@pdarrows{% \pgfsetlinewidth{\pgfstartlinewidth} \pgfsetarrowsstart{latexslim} \ifpgf@pd@fliparrows \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}} \pgfusepath{draw} \else \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}} \pgfusepath{draw} \fi } %% Black light emitting diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {fulllediode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgftransformxshift{\pgf@circ@res@left} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfusepath{draw,fill} \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \pgf@circ@draw@ledarrows } %% Black photodiode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {fullpdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgftransformxshift{\pgf@circ@res@left} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfusepath{draw,fill} \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \pgf@circ@draw@pdarrows } %% Black varcap \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/varcap/height}} {fullvarcap} {\ctikzvalof{bipoles/varcap/height}} {\ctikzvalof{bipoles/varcap/width}} { \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgfsetlinewidth{\pgf@circ@res@temp} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}} \pgfusepath{draw,fill} % \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} } %% Code for the diode triangle \def\pgf@circ@basicdiodeshape{ % \pgfscope \pgftransformxshift{\pgf@circ@res@left} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathclose \pgf@circ@draworfill \pgfscope % to allow filling, we need to draw explicitly the stroke here. \pgfsetlinewidth{\pgfstartlinewidth} \ifpgf@circuit@bipole@strokedsymbol \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{0pt}} \pgfusepath{draw} \fi \endpgfscope % \endpgfscope } %% Empty generic diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {emptydiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgf@circ@basicdiodeshape \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} } %% Empty Zener diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {emptyzdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgf@circ@basicdiodeshape \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Empty alternative zigzag Zener diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {emptyzzdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgf@circ@basicdiodeshape \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } %% Empty Schottky diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {emptysdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgf@circ@basicdiodeshape \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Empty tunnel diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {emptytdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgf@circ@basicdiodeshape \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Empty light emitting diode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {emptylediode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgf@circ@basicdiodeshape \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \pgf@circ@draw@ledarrows } %% Empty photodiode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/diode/height}} {emptypdiode} {\ctikzvalof{bipoles/diode/height}} {\ctikzvalof{bipoles/diode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfscope \pgf@circ@basicdiodeshape \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \pgf@circ@draw@pdarrows } %% Empty varcap \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/varcap/height}} {emptyvarcap} {\ctikzvalof{bipoles/varcap/height}} {\ctikzvalof{bipoles/varcap/width}} { \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgfsetlinewidth{\pgf@circ@res@temp} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} % \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}} \pgfpathclose \pgf@circ@draworfill \pgfscope % to allow filling, we need to draw explicitily the stroke here. \pgfsetlinewidth{\pgfstartlinewidth} \ifpgf@circuit@bipole@strokedsymbol \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfusepath{draw} \fi \endpgfscope % \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} } %% Empty bidirectionaldiode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/bidirectionaldiode/height}} {emptybidirectionaldiode} {\ctikzvalof{bipoles/bidirectionaldiode/height}} {\ctikzvalof{bipoles/bidirectionaldiode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgf@circ@draworfill \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } %% Full bidirectionaldiode \pgfcircdeclarebipolescaled{diodes} {} {\ctikzvalof{bipoles/bidirectionaldiode/height}} {fullbidirectionaldiode} {\ctikzvalof{bipoles/bidirectionaldiode/height}} {\ctikzvalof{bipoles/bidirectionaldiode/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfusepath{draw, fill} \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } %% Black thyristor \pgfcircdeclarebipolescaled{diodes} { \anchor{gate}{\northeast} \anchor{anode}{\southwest\pgf@y=0cm} \anchor{G}{\northeast} \anchor{cathode}{\northeast\pgf@y=0cm } } {\ctikzvalof{tripoles/thyristor/height 2}} {fullthyristor} {\ctikzvalof{tripoles/thyristor/height}} {\ctikzvalof{tripoles/thyristor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right \pgfscope \pgftransformxshift{\pgf@circ@res@other} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}} \pgfusepath{draw,fill} \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}} \pgfusepath{draw} \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } %% Empty thyristor \pgfcircdeclarebipolescaled{diodes} { \anchor{gate}{\northeast} \anchor{anode}{\southwest\pgf@y=0cm} \anchor{G}{\northeast} \anchor{cathode}{\northeast\pgf@y=0cm } } {\ctikzvalof{tripoles/thyristor/height 2}} {emptythyristor} {\ctikzvalof{tripoles/thyristor/height}} {\ctikzvalof{tripoles/thyristor/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right \pgfscope \pgftransformxshift{\pgf@circ@res@other} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} \pgfpathclose \pgf@circ@draworfill \pgfscope % to allow filling, we need to draw explicitily the stroke here. \pgfsetlinewidth{\pgfstartlinewidth} \ifpgf@circuit@bipole@strokedsymbol \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{0pt}{0pt}} \pgfusepath{draw} \fi \endpgfscope \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}} \pgfusepath{draw} \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } %% Empty triac \pgfcircdeclarebipolescaled{diodes} { \anchor{gate}{\northeast} \anchor{anode}{\southwest\pgf@y=0cm} \anchor{G}{\northeast} \anchor{cathode}{\northeast\pgf@y=0cm } } {\ctikzvalof{tripoles/triac/height}} {emptytriac} {\ctikzvalof{tripoles/triac/height}} {\ctikzvalof{tripoles/triac/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgf@circ@draworfill \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2) \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } %% Full triac \pgfcircdeclarebipolescaled{diodes} { \anchor{gate}{\northeast} \anchor{anode}{\southwest\pgf@y=0cm} \anchor{G}{\northeast} \anchor{cathode}{\northeast\pgf@y=0cm } } {\ctikzvalof{tripoles/triac/height}} {fulltriac} {\ctikzvalof{tripoles/triac/height}} {\ctikzvalof{tripoles/triac/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} \pgfusepath{draw,fill} \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2) \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2) \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } %%%%%%%%%%%%% %% switches %%%%%%%%%%%%% %% (Closing) SPST \pgfcircdeclarebipolescaled{switches} {} {\ctikzvalof{bipoles/spst/depth}} {cspst} {\ctikzvalof{bipoles/spst/height}} {\ctikzvalof{bipoles/spst/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \pgfscope \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpointpolar{90}{1.2\pgf@circ@res@right}} \pgfpatharc{90}{-20}{1.2\pgf@circ@res@right} \pgfsetarrowsend{latexslim} \pgfsetbeveljoin \pgfusepath{draw} \endpgfscope } %% Opening SPST \pgfcircdeclarebipolescaled{switches} {} {\ctikzvalof{bipoles/spst/depth}} {ospst} {\ctikzvalof{bipoles/spst/height}} {\ctikzvalof{bipoles/spst/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \pgfscope \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}} \pgfpatharc{-10}{90}{1.2\pgf@circ@res@right} \pgfsetarrowsend{latexslim} \pgfsetbeveljoin \pgfusepath{draw} \endpgfscope } %% Normal open Switch \pgfcircdeclarebipolescaled{switches} {} {\ctikzvalof{bipoles/nos/depth}} {nos} {\ctikzvalof{bipoles/nos/height}} {\ctikzvalof{bipoles/nos/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfsetbuttcap \pgfusepath{draw} } %% Normal closed Switch \pgfcircdeclarebipolescaled{switches} {} {\ctikzvalof{bipoles/ncs/depth}} {ncs} {\ctikzvalof{bipoles/ncs/height}} {\ctikzvalof{bipoles/ncs/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}} \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} } %% Push Button \pgfcircdeclarebipolescaled{switches} {} {\ctikzvalof{bipoles/pushbutton/height 2}} {pushbutton} {\ctikzvalof{bipoles/pushbutton/height}} {\ctikzvalof{bipoles/pushbutton/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}} \pgfusepath{draw} \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}} \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}} \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}} } %% Normally closed Push Button \pgfcircdeclarebipolescaled{switches} {} {\ctikzvalof{bipoles/pushbutton/height 2}} {ncpushbutton} {\ctikzvalof{bipoles/pushbutton/height}} {\ctikzvalof{bipoles/pushbutton/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} % This is the radius of the "ocirc" shape (see pgfcircshapes.tex) % Warning, if the nodes will have a class, we have to touch this. \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp}} \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@temp}} \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}} \pgfusepath{draw} % \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}} \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}} \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}} } %%% reed switches \pgfcircdeclarebipolescaled{switches} {} {\ctikzvalof{bipoles/reed/depth}} {reed} {\ctikzvalof{bipoles/reed/height}} {\ctikzvalof{bipoles/reed/width}} { % this is designed to be the same as a "nos". \pgfmathsetmacro{\@@tmpx}{0.9*\ctikzvalof{bipoles/nos/width}/\ctikzvalof{bipoles/reed/width}} \pgfmathsetmacro{\@@tmpy}{\ctikzvalof{bipoles/nos/height}/\ctikzvalof{bipoles/reed/height}} \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} % eclosure \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@up}{\pgf@circ@res@up}} \pgfpatharc{90}{-90}{\pgf@circ@res@up} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@up}{-\pgf@circ@res@up}} \pgfpatharc{270}{90}{\pgf@circ@res@up} \pgfpathclose \pgf@circ@draworfill % switch \pgfpathmoveto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{\@@tmpy\pgf@circ@res@up}} % connection lines \pgfsetbuttcap \pgfusepath{draw} \endpgfscope % connection lines \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{0pt}} \pgfusepath{draw} } % cute switch "to" shapes help function % #1 -> name % #2 -> barposition % #3 -> arrowcode \long\def\pgfcircdeclarecutesw#1#2#3{ \pgfcircdeclarebipolescaled{switches} { \savedanchor\midlever{ % these values are calculated when we create the definition of the shape. \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen} \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp \pgf@circ@res@down = -.5\pgf@y \pgf@circ@res@up = .5\pgf@y \pgfextracty{\pgf@circ@res@other}{#2} \pgf@x=0pt \pgf@y=.5\pgf@circ@res@other } % radius of the connector % This is the radius of the "ocirc" shape (see pgfcircshapes.tex) % If cnnecting nodes are scaled, we have to modify this \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}} % shapename \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}} % shape type \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}} % mid of the lever, to stack switches \anchor{mid}{\midlever} \anchor{cout}{\northeast \pgf@y=0cm} \anchor{cin}{\southwest\pgf@y=0cm} \anchor{out}{\northeast \pgf@y=0cm\advance\pgf@x by \radius} \anchor{in}{\southwest\pgf@y=0cm\advance\pgf@x by -\radius} } {\ctikzvalof{bipoles/cuteswitch/height 2}} {#1} {\ctikzvalof{bipoles/cuteswitch/height}} {\ctikzvalof{bipoles/cuteswitch/width}}{ \pgfscope % This is the radius of the "ocirc" shape (see pgfcircshapes.tex) % If cnnecting nodes are scaled, we have to modify this \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp \pgfsetlinewidth{2\pgf@circ@res@temp} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{#2} \pgfsetroundcap\pgfusepath{draw} \endpgfscope \pgfscope % arrow #3 \endpgfscope \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{draw}} \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}} \pgfnode{\cshape}{center}{}{\thisshape-out}{\pgfusepath{draw}} } } %% closed cute switch \pgfcircdeclarecutesw{cuteclosedswitch} {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}} {} %% open cute switch \pgfcircdeclarecutesw{cuteopenswitch} {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} {} %% closing cute switch \pgfcircdeclarecutesw{cuteclosingswitch} {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node \pgfpathmoveto{\pgfpointpolar{70}{1.2\pgf@circ@res@right}} \pgfpatharc{70}{-10}{1.2\pgf@circ@res@right} \pgfsetarrowsend{latexslim} \pgfusepath{draw} } %% opening cute switch \pgfcircdeclarecutesw{cuteopeningswitch} {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}} \pgfpatharc{-10}{60}{1.2\pgf@circ@res@right} \pgfsetarrowsend{latexslim} \pgfusepath{draw} } %%%%%%%%%%%%%%%%% %% Instruments %%%%%%%%%%%%%%%%% % % METERINGSHAPE \long\def\drawmeteringcircle{ \def\pgf@circ@temp{right} \ifx\tikz@res@label@pos\pgf@circ@temp \pgf@circ@res@step=-1.2\pgf@circ@res@up \else \def\pgf@circ@temp{below} \ifx\tikz@res@label@pos\pgf@circ@temp \pgf@circ@res@step=-1.2\pgf@circ@res@up \else \pgf@circ@res@step=1.2\pgf@circ@res@up \fi \fi %draw connections to circle \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} %draw circle \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up} \pgf@circ@draworfill \endpgfscope %draw arrow \pgfscope \pgfsetarrowsend{latex} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %AMPEREMETER \pgfcircdeclarebipolescaled{instruments} {} {\ctikzvalof{bipoles/ammeter/height}} {ammeter} {\ctikzvalof{bipoles/ammeter/height}} {\ctikzvalof{bipoles/ammeter/width}} { \drawmeteringcircle \pgfnode{circle}{center}{\pgf@circ@font@bold{A}}{}{} } %OHMMETER \pgfcircdeclarebipolescaled{instruments} {} {\ctikzvalof{bipoles/ohmmeter/height}} {ohmmeter} {\ctikzvalof{bipoles/ohmmeter/height}} {\ctikzvalof{bipoles/ohmmeter/width}} { \drawmeteringcircle \pgfnode{circle}{center}{\boldmath$\Omega$}{}{} } %VOLTMETER \pgfcircdeclarebipolescaled{instruments} {} {\ctikzvalof{bipoles/voltmeter/height}} {voltmeter} {\ctikzvalof{bipoles/voltmeter/height}} {\ctikzvalof{bipoles/voltmeter/width}} { \drawmeteringcircle \pgfnode{circle}{center}{\pgf@circ@font@bold{V}}{}{} } % oscilloscope, suggested by @nobrl https://github.com/circuitikz/circuitikz/issues/176 \pgfcircdeclarebipolescaled{instruments} { \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x} \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x} % put the node text above and centered \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast} \pgfpoint{-.5\wd\pgfnodeparttextbox}{ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax } } } {\ctikzvalof{bipoles/oscope/height}} {oscope} {\ctikzvalof{bipoles/oscope/height}} {\ctikzvalof{bipoles/oscope/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfextracty{\pgf@circ@res@up}{\northeast} \pgfextractx{\pgf@circ@res@right}{\northeast} \pgfextractx{\pgf@circ@res@left}{\southwest} \pgfextracty{\pgf@circ@res@down}{\southwest} \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up} \pgfscope \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}} \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % this would create a round (analog?) scope... % \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \endpgfscope % get the rotation \ifpgf@circuit@straightinstruments \pgfgettransformentries\a\b\temp\temp\temp\temp \pgfmathsetmacro{\rot}{-atan2(\b,\a)} \else \edef\rot{0} \fi % and unrotate the scope \pgfscope \pgftransformrotate{\rot} % grid \pgfscope \pgfsetlinewidth{0.5\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}} \pgfpathgrid[stepx=\pgf@circ@res@step, stepy=\pgf@circ@res@step]% {\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}} {\pgfpoint{0.75\pgf@circ@res@right}{0.5\pgf@circ@res@up}} \pgfsetstrokeopacity{0.5} \pgfusepath{draw} \endpgfscope % function displayed, thanks to \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@down}} \pgfusepath{draw} \endpgfscope } % generic round meter with always horizontal text, no arrow \pgfcircdeclarebipolescaled{instruments} {} {\ctikzvalof{bipoles/esource/height}} {rmeter} {\ctikzvalof{bipoles/esource/height}} {\ctikzvalof{bipoles/esource/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill % draw the text label % get the rotation \ifpgf@circuit@straightinstruments \pgfgettransformentries\a\b\temp\temp\temp\temp \pgfmathsetmacro{\rot}{-atan2(\b,\a)} \else \edef\rot{0} \fi % and unrotate the scope \pgfscope \pgfsetcolor{\ctikzvalof{color}} \pgftransformrotate{\rot} \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}} \endpgfscope } % generic round meter with always horizontal text, with arrow \pgfcircdeclarebipolescaled{instruments} {} {\ctikzvalof{bipoles/esource/height}} {rmeterwa} {\ctikzvalof{bipoles/esource/height}} {\ctikzvalof{bipoles/esource/width}} { \pgfpointorigin \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill % draw the text label % get the rotation \ifpgf@circuit@straightinstruments \pgfgettransformentries\a\b\temp\temp\temp\temp \pgfmathsetmacro{\rot}{-atan2(\b,\a)} \else \edef\rot{0} \fi % and unrotate the scope \pgfscope \pgftransformrotate{\rot} \pgfsetcolor{\ctikzvalof{color}} \pgfsetlinewidth{\pgfstartlinewidth} % arrow: create a center hole to have better visual \pgfscope % clipping path: first a rectangle bigger then the shape % to avoid problems with the line thickness \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}} {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}} % next open a circle into it \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{.6\pgf@circ@res@up}}{\pgfpoint{.6\pgf@circ@res@left}{0}} % do the difference and clip before drawing \pgfseteorule \pgfusepath{clip} \pgfsetarrowsend{latexslim} % the arrow is better if it has a bit of breath and it's not 45º \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@left}{1.2\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope \pgftext[center]{\ctikzvalof{bipoles/twoport/text}} \endpgfscope } % generic square meter with always horizontal text \pgfcircdeclarebipolescaled{instruments} { \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x} \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x} % put the node text above and centered \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast} \pgfpoint{-.5\wd\pgfnodeparttextbox}{ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax } } } {\ctikzvalof{bipoles/smeter/height}} {smeter} {\ctikzvalof{bipoles/smeter/height}} {\ctikzvalof{bipoles/smeter/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfextracty{\pgf@circ@res@up}{\northeast} \pgfextractx{\pgf@circ@res@right}{\northeast} \pgfextractx{\pgf@circ@res@left}{\southwest} \pgfextracty{\pgf@circ@res@down}{\southwest} \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up} \pgfscope \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}} \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgf@circ@draworfill \endpgfscope % get the rotation \ifpgf@circuit@straightinstruments \pgfgettransformentries\a\b\temp\temp\temp\temp \pgfmathsetmacro{\rot}{-atan2(\b,\a)} \else \edef\rot{0} \fi % and unrotate the scope \pgfscope \pgftransformrotate{\rot} % the metering window \pgfscope \def\@starta{105}\def\@stopa{75} \pgfsetlinewidth{\pgfstartlinewidth} \pgftransformshift{\pgfpoint{0pt}{-1.8\pgf@circ@res@up}} \pgfpathmoveto{\pgfpointpolar{\@starta}{2\pgf@circ@res@up}} \pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up} \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}} \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up} \pgfclosepath \pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}} \pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope \pgftext[center, y=0.5\pgf@circ@res@down]{\ctikzvalof{bipoles/twoport/text}} \endpgfscope } % probes qucs style: % #1 : name % #2 : extra code \long\def\pgfcirc@qucsprobe#1#2{ \pgfcircdeclarebipolescaled{instruments} { \anchor{v+}{\southwest\pgf@x=0.6\pgf@x} \anchor{v-}{\southwest\pgf@x=-0.6\pgf@x} % put the node text above and centered \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast} \pgfpoint{-.5\wd\pgfnodeparttextbox}{ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax } } } {\ctikzvalof{bipoles/qmeter/depth}} {#1} {\ctikzvalof{bipoles/qmeter/height}} {\ctikzvalof{bipoles/qmeter/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfextracty{\pgf@circ@res@up}{\northeast} \pgfextractx{\pgf@circ@res@right}{\northeast} \pgfextractx{\pgf@circ@res@left}{\southwest} \pgfextracty{\pgf@circ@res@down}{\southwest} \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up} \pgfscope \pgfscope \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}} \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgf@circ@draworfill \endpgfscope \def\@starta{103}\def\@stopa{77} \pgfsetlinewidth{\pgfstartlinewidth} \pgfscope \pgftransformshift{\pgfpoint{0pt}{-1.7\pgf@circ@res@up}} \pgfpathmoveto{\pgfpointpolar{\@starta}{2.1\pgf@circ@res@up}} \pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up} \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}} \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up} \pgfclosepath \pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}} \pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}} \pgfusepath{draw} \pgf@circ@draworfill \endpgfscope #2 \endpgfscope } } \pgfcirc@qucsprobe{qiprobe}{ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} \pgfnode{currarrow}{center}{}{}{} } \pgfcirc@qucsprobe{qvprobe}{ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{0pt}} \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other} \pgfusepath{draw} \pgfscope % "+" and "-", drawn so that they scale correctly \pgfsetlinewidth{2\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-1.5\pgf@circ@res@other}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-3.5\pgf@circ@res@other}} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}} \pgfusepath{draw} \endpgfscope } \pgfcirc@qucsprobe{qpprobe}{ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} \pgfnode{currarrow}{center}{}{}{} \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen} \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left}{-3\pgf@circ@res@other}}{\pgf@circ@res@other} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{-4\pgf@circ@res@other}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right}{-3\pgf@circ@res@other}}{\pgf@circ@res@other} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{-4\pgf@circ@res@other}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{draw} \pgfscope % "+" and "-", drawn so that they scale correctly \pgfsetlinewidth{2\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-2\pgf@circ@res@other}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-4\pgf@circ@res@other}} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-3\pgf@circ@res@other}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+4\pgf@circ@res@other}{-3\pgf@circ@res@other}} \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right-4\pgf@circ@res@other}{-3\pgf@circ@res@other}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-3\pgf@circ@res@other}} \pgfusepath{draw} \endpgfscope } % current loop for oscope and similar: stylized \pgfcircdeclarebipolescaled{instruments} { \anchor{i}{\northeast\pgf@x=0pt\relax} \anchor{text}{ \pgfextracty{\pgf@circ@res@up}{\northeast} \pgfextractx{\pgf@circ@res@left}{\northeast} \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax } } } {\ctikzvalof{bipoles/iloop/height}} {iloop} {\ctikzvalof{bipoles/iloop/height}} {\ctikzvalof{bipoles/iloop/width}} { \pgfextracty{\pgf@circ@res@up}{\northeast} \pgfextractx{\pgf@circ@res@right}{\northeast} \pgf@circ@res@down=-\pgf@circ@res@up \pgf@circ@res@left=-\pgf@circ@res@right \pgfscope \pgfstartlinewidth=\pgflinewidth \pgfsetcolor{\ctikzvalof{color}} % external ellipse \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgflinewidth} % clipping path: first a rectangle bigger then the shape % to avoid problems with the line thickness \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}} {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}} % next the opening to the left \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}} {\pgfpoint{0pt}{.1\pgf@circ@res@up}} % do the difference and clip before drawing \pgfseteorule \pgfusepath{clip} \pgfpathellipse{\pgfpointorigin}{ \pgfpoint{0pt}{0.8\pgf@circ@res@up}}{ \pgfpoint{0.4\pgf@circ@res@right}{0pt}} \pgfusepath{draw} \endpgfscope % internal wire \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}} \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} % and the contact line up \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } % current loop for oscope and similar: real (double connection) \pgfcircdeclarebipolescaled{instruments} { \anchor{i+}{ \pgfextracty{\pgf@circ@res@up}{\northeast} \pgfextractx{\pgf@circ@res@right}{\northeast} \pgf@circ@res@step=0.4\pgf@circ@res@right \pgf@circ@res@other=0.8\pgf@circ@res@up \pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other} \pgf@y=\pgf@circ@res@up } \anchor{i-}{ \pgfextracty{\pgf@circ@res@up}{\northeast} \pgfextractx{\pgf@circ@res@right}{\northeast} \pgf@circ@res@step=0.4\pgf@circ@res@right \pgf@circ@res@other=0.8\pgf@circ@res@up \pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other} \pgf@y=\pgf@circ@res@up } \anchor{text}{ \pgfextracty{\pgf@circ@res@up}{\northeast} \pgfextractx{\pgf@circ@res@left}{\northeast} \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax } } } {\ctikzvalof{bipoles/iloop/height}} {iloop2} {\ctikzvalof{bipoles/iloop/height}} {\ctikzvalof{bipoles/iloop/width}} { \pgfextracty{\pgf@circ@res@up}{\northeast} \pgfextractx{\pgf@circ@res@right}{\northeast} \pgf@circ@res@down=-\pgf@circ@res@up \pgf@circ@res@left=-\pgf@circ@res@right % must be the same than internal i+ and i- anchors definition \pgf@circ@res@step=0.4\pgf@circ@res@right \pgf@circ@res@other=0.8\pgf@circ@res@up \def\@plus{\pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}} \def\@minus{\pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}} \pgfscope \pgfstartlinewidth=\pgflinewidth \pgfsetcolor{\ctikzvalof{color}} % external ellipse \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgflinewidth} % clipping path: first a rectangle bigger then the shape % to avoid problems with the line thickness \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}} {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}} % next the opening to the left \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}} {\pgfpoint{0pt}{.1\pgf@circ@res@up}} % do the difference and clip before drawing \pgfseteorule \pgfusepath{clip} \pgfpathmoveto{\@plus} \pgfpatharc{105}{435}{\pgf@circ@res@step and \pgf@circ@res@other} \pgfusepath{draw} \endpgfscope % internal wire \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}} \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} % and the contact line up % I use ...left and ---right as temporal lengths here to avoid defining more \pgfextractx{\pgf@circ@res@left}{\@plus} \pgfextractx{\pgf@circ@res@right}{\@minus} \pgfpathmoveto{\@plus} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathmoveto{\@minus} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope } %% Varistor \pgfcircdeclarebipolescaled{resistors} {} {\ctikzvalof{bipoles/varistor/height}} {varistor} {\ctikzvalof{bipoles/varistor/height}} {\ctikzvalof{bipoles/varistor/width}} { \pgfscope \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \endpgfscope \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfusepath{draw} \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\pgf@circ@font@tiny\textsf{U}}} } %%%%%%%%%%%%%% %% RF bipoles %%%%%%%%%%%%%% % transmission line \pgfcircdeclarebipolescaled{RF} {} {\ctikzvalof{bipoles/tline/height}} {tline} {\ctikzvalof{bipoles/tline/height}} {\ctikzvalof{bipoles/tline/width}} { \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis \begin{pgftransparencygroup} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}} \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}} \pgf@circ@draworfill \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}} {\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{-\pgf@circ@res@up}} \pgf@circ@draworfill \end{pgftransparencygroup} \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{stroke} } % microstrip transmission line \pgfcircdeclarebipolescaled{RF} {} {\ctikzvalof{bipoles/mstline/height}} {mstline} {\ctikzvalof{bipoles/mstline/height}} {\ctikzvalof{bipoles/mstline/width}} { \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill } %%%%%%%%%%%%%%%%%%% %% Block diagrams %%%%%%%%%%%%%%%%%%% %% Draw the two-port fillable box \def\pgf@circ@twoportbox{ \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@draworfill \endpgfscope } %% Generic two port box \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/twoport/height}} {twoport} {\ctikzvalof{bipoles/twoport/height}} {\ctikzvalof{bipoles/twoport/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225 \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}} } %% voltage controled oscillator \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/vco/width}} {vco} {\ctikzvalof{bipoles/twoport/width}} {\ctikzvalof{bipoles/vco/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw circle \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step} \pgf@circ@draworfill \endpgfscope \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner sine waves \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} } %% bandpass filter \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/bandpass/width}} {bandpass} {\ctikzvalof{bipoles/bandpass/width}} {\ctikzvalof{bipoles/bandpass/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}} \pgfusepath{draw} } %% bandstop filter \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/bandstop/width}} {bandstop} {\ctikzvalof{bipoles/bandstop/width}} {\ctikzvalof{bipoles/bandstop/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt}% always draw solid line for inner symbol \pgfsetarrows{-}%never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} } %% highpass filter \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/highpass/width}} {highpass} {\ctikzvalof{bipoles/highpass/width}} {\ctikzvalof{bipoles/highpass/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}} \pgfusepath{draw} } %% lowpass filter \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/lowpass/width}} {lowpass} {\ctikzvalof{bipoles/lowpass/width}} {\ctikzvalof{bipoles/lowpass/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} \pgfusepath{draw} } %% ADC \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/adc/width}} {adc} {\ctikzvalof{bipoles/adc/width}} {\ctikzvalof{bipoles/adc/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\texti{A} \def\textii{D} \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \def\texti{D} \def\textii{A} \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \def\texti{D} \def\textii{A} \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \def\texti{A} \def\textii{D} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}} \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}} } %% DAC \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/dac/width}} {dac} {\ctikzvalof{bipoles/dac/width}} {\ctikzvalof{bipoles/dac/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\texti{D} \def\textii{A} \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \def\texti{A} \def\textii{D} \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \def\texti{A} \def\textii{D} \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \def\texti{D} \def\textii{A} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}} \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}} } %% DSP \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/dsp/width}} {dsp} {\ctikzvalof{bipoles/dsp/width}} {\ctikzvalof{bipoles/dsp/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225 \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgftext[center,x=0,y=0]{\textsf{DSP}} } %% FFT \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/fft/width}} {fft} {\ctikzvalof{bipoles/fft/width}} {\ctikzvalof{bipoles/fft/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225 \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgftext[center,x=0,y=0]{\textsf{FFT}} } %% Amplifier \pgfcircdeclarebipolescaled{blocks} {} { \ifpgf@circuit@boxed \ctikzvalof{bipoles/twoport/width} \else \ctikzvalof{bipoles/amp/width} \fi } {amp} { \ifpgf@circuit@boxed \ctikzvalof{bipoles/twoport/width} \else \ctikzvalof{bipoles/amp/width} \fi } { \ifpgf@circuit@boxed \ctikzvalof{bipoles/twoport/width} \else \ctikzvalof{bipoles/amp/width} \fi } { \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \ifpgf@circuit@boxed \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}} \pgf@circ@draworfill \fi % draw input arrow \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi \ifpgf@circuit@boxed \pgfsetlinewidth{\pgfstartlinewidth} \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box \else \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \fi \pgfsetarrows{-} %never draw arrows \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}} \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}} \pgfpathclose \pgf@circ@draworfill % draw inner text \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}} } %% variable amplifier \pgfcircdeclarebipolescaled{blocks} {} { \ifpgf@circuit@boxed \ctikzvalof{bipoles/twoport/width} \else \ctikzvalof{bipoles/amp/width} \fi } {vamp} { \ifpgf@circuit@boxed \ctikzvalof{bipoles/twoport/width} \else \ctikzvalof{bipoles/amp/width} \fi } { \ifpgf@circuit@boxed \ctikzvalof{bipoles/twoport/width} \else \ctikzvalof{bipoles/amp/width} \fi } { \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \ifpgf@circuit@boxed \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}} \fi % draw input arrow \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi \ifpgf@circuit@boxed \pgfsetlinewidth{\pgfstartlinewidth} \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box \else \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \fi \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}} \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}} \pgfpathclose \pgf@circ@draworfill % draw inner text \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}} % draw arrow \pgfsetlinewidth{\pgfstartlinewidth} \pgfsetarrowsend{latex} \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}} \pgfusepath{draw} } %% pi attenuator \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/piattenuator/width}} {piattenuator} {\ctikzvalof{bipoles/piattenuator/width}} {\ctikzvalof{bipoles/piattenuator/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}} \pgfusepath{draw} } %% variable pi attenuator \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/vpiattenuator/width}} {vpiattenuator} {\ctikzvalof{bipoles/vpiattenuator/width}} {\ctikzvalof{bipoles/vpiattenuator/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}} \pgfusepath{draw} \pgfsetarrowsend{latex} \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}} \pgfusepath{draw} } %% T attenuator \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/tattenuator/width}} {tattenuator} {\ctikzvalof{bipoles/tattenuator/width}} {\ctikzvalof{bipoles/tattenuator/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}} \pgfusepath{draw} } %% variable T attenuator \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/vtattenuator/width}} {vtattenuator} {\ctikzvalof{bipoles/vtattenuator/width}} {\ctikzvalof{bipoles/vtattenuator/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}} \pgfusepath{draw} \pgfsetarrowsend{latex} \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}} \pgfusepath{draw} } %% phase shifter \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/phaseshifter/width}} {phaseshifter} {\ctikzvalof{bipoles/phaseshifter/width}} {\ctikzvalof{bipoles/phaseshifter/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225 \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % inner symbol \pgftext[center,x=0,y=0]{\Large$\varphi$} } %% variable phase shifter \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/phaseshifter/width}} {vphaseshifter} {\ctikzvalof{bipoles/vphaseshifter/width}} {\ctikzvalof{bipoles/vphaseshifter/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225 \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % inner symbol \pgftext[center,x=0,y=0]{\Large$\varphi$} \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetlinewidth{\pgfstartlinewidth} \pgfsetarrowsend{latex} \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}} \pgfusepath{draw} } %% detector \pgfcircdeclarebipolescaled{blocks} {} {\ctikzvalof{bipoles/detector/width}} {detector} {\ctikzvalof{bipoles/detector/width}} {\ctikzvalof{bipoles/detector/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % draw inner stuff \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{0.8\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}} \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}} \pgfusepath{draw} \ifpgf@circuit@fulldiode \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width}} \pgftransformscale{\pgfmathresult} \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}} \else \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width}} \pgftransformscale{\pgfmathresult} \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}} \fi } %% single phase ac/dc converter \pgfcircdeclarebipolescaled{blocks} { \anchor{dc1}{ \northeast \pgf@y=.4\pgf@y } \anchor{dc2}{ \northeast \pgf@y=-.4\pgf@y } } {\ctikzvalof{bipoles/sacdc/width}} {sacdc} {\ctikzvalof{bipoles/sacdc/width}} {\ctikzvalof{bipoles/sacdc/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/sacdc/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} % draw sin wave \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfusepath{draw} % draw equal sign \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}} \pgfusepath{draw} } %% single phase dc/ac converter \pgfcircdeclarebipolescaled{blocks} { \anchor{dc1}{ \northeast \pgf@y=.4\pgf@y \pgf@x=-\pgf@x } \anchor{dc2}{ \northeast \pgf@y=-.4\pgf@y \pgf@x=-\pgf@x } } {\ctikzvalof{bipoles/sdcac/width}} {sdcac} {\ctikzvalof{bipoles/sdcac/width}} {\ctikzvalof{bipoles/sdcac/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/sdcac/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} % draw sin wave \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfusepath{draw} % draw equal sign \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}} \pgfusepath{draw} } %% threephase ac/dc converter \pgfcircdeclarebipolescaled{blocks} { \anchor{dc1}{ \northeast \pgf@y=.4\pgf@y } \anchor{dc2}{ \northeast \pgf@y=-.4\pgf@y } \anchor{ac1}{ \northeast \pgf@y=.6\pgf@y \pgf@x=-\pgf@x } \anchor{ac2}{ \northeast \pgf@y=0\pgf@y \pgf@x=-\pgf@x } \anchor{ac3}{ \northeast \pgf@y=-.6\pgf@y \pgf@x=-\pgf@x } } {\ctikzvalof{bipoles/tacdc/width}} {tacdc} {\ctikzvalof{bipoles/tacdc/width}} {\ctikzvalof{bipoles/tacdc/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/tacdc/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} % draw sin waves \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.65\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.35\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfusepath{draw} % draw equal sign \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}} \pgfusepath{draw} } %% threephase dc/ac converter \pgfcircdeclarebipolescaled{blocks} { \anchor{dc1}{ \northeast \pgf@y=.4\pgf@y \pgf@x=-\pgf@x } \anchor{dc2}{ \northeast \pgf@y=-.4\pgf@y \pgf@x=-\pgf@x } \anchor{ac1}{ \northeast \pgf@y=.6\pgf@y } \anchor{ac2}{ \northeast \pgf@y=0\pgf@y } \anchor{ac3}{ \northeast \pgf@y=-.6\pgf@y } } {\ctikzvalof{bipoles/tdcac/width}} {tdcac} {\ctikzvalof{bipoles/tdcac/width}} {\ctikzvalof{bipoles/tdcac/width}} { \pgf@circ@res@step = \ctikzvalof{bipoles/tdcac/width}\pgf@circ@scaled@Rlen \divide \pgf@circ@res@step by 2 \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \ifpgf@circuit@dashed \pgfsetdash{{0.1cm}{0.1cm}}{0cm} \fi % draw outer box \pgf@circ@twoportbox \ifpgf@circuit@inputarrow { \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} } \fi % rotate inner symbol \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 \pgftransformrotate{270} \fi\fi \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible \pgftransformrotate{180} \fi\fi \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315 \pgftransformrotate{90} \fi\fi % draw inner symbol \pgfsetdash{}{0pt} % always draw solid line for inner symbol \pgfsetarrows{-} %never draw arrows \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} % draw sin waves \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.65\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.35\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}} \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}} \pgfusepath{draw} % draw equal sign \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}} \pgfusepath{draw} } %%%%%%%%%%%%%%%%%%%%%%% %% MECHANICAL SYMBOLS %%%%%%%%%%%%%%%%%%%%%%% %% mechanical capacitance - stiffness/spring \pgfcircdeclarebipolescaled{mechanicals} {} {\ctikzvalof{bipoles/spring/height}} {spring} {\ctikzvalof{bipoles/spring/height}} {\ctikzvalof{bipoles/spring/width}}{ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfmathsetlength{\pgf@circ@res@step} {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@scaled@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}} \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}} \pgf@circ@res@other = \pgf@circ@res@left \advance\pgf@circ@res@other by \pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}} \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}} \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}} \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}} \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}} \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}} \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}} \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}} \advance\pgf@circ@res@other by \pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}} \pgfsetbuttcap \pgfsetbeveljoin \pgfusepath{stroke} } %% mechanical capacitance - inerter \pgfcircdeclarebipolescaled{mechanicals} {} {\ctikzvalof{bipoles/inerter/height}} {inerter} {\ctikzvalof{bipoles/inerter/height}} {\ctikzvalof{bipoles/inerter/width}} { \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill } %% mechanical inductance - mass \pgfcircdeclarebipolescaled{mechanicals} {} {\ctikzvalof{bipoles/mass/box height}} {mass} {\ctikzvalof{bipoles/mass/height}} {\ctikzvalof{bipoles/mass/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}} \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfsetrectcap \pgfsetmiterjoin \pgfusepath{stroke} } %% mechanical resistor - damper \pgfcircdeclarebipolescaled{mechanicals} {} {\ctikzvalof{bipoles/damper/height}} {damper} {\ctikzvalof{bipoles/damper/height}} {\ctikzvalof{bipoles/damper/width}} { \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgf@circ@maybefill % line into the damper \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right} {\pgf@circ@res@zero}} \pgfusepath{stroke} % damper box \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfsetrectcap \pgfsetmiterjoin \pgfusepath{stroke} % damper vertical element \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right} {.8\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right} {.8\pgf@circ@res@up}} \pgfsetbuttcap \pgfusepath{stroke} } %% mechanical viscoelastic element, suggested by @alex %% in https://tex.stackexchange.com/questions/484268/combined-spring-damper-in-circuitikz \pgfcircdeclarebipolescaled{mechanicals} {} % extra anchors {\ctikzvalof{bipoles/damper/height}} % depth (under the path line) {viscoe} % name {\ctikzvalof{bipoles/damper/height}} % height (above the path line) {\ctikzvalof{bipoles/damper/width}} % width { % draw the bipole \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgf@circ@maybefill % spring into the damper \pgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}} \pgfusepath{stroke} \endpgfscope % damper box \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfsetrectcap \pgfsetmiterjoin \pgfusepath{stroke} % damper vertical element \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right} {.8\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right} {.8\pgf@circ@res@up}} \pgfsetbuttcap \pgfusepath{stroke} } %%%%%%%%%%%%%%%% %% Crossing %%%%%%%%%%%%%%%% %% crossing bipole (but see also nodes) \pgfcircdeclarebipole {} {\ctikzvalof{bipoles/crossing/size}} {crossing} {\ctikzvalof{bipoles/crossing/size}} {\ctikzvalof{bipoles/crossing/size}}{ \pgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left} \pgfsetbeveljoin \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} \endpgfscope } %%%%%%%%%%%%%%%%%%%%%%%%% %% Miscellaneous bipoles %%%%%%%%%%%%%%%%%%%%%%%%% %% loudspeaker and microphone \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/loudspeaker/depth}} {loudspeaker} {\ctikzvalof{bipoles/loudspeaker/height}} {\ctikzvalof{bipoles/loudspeaker/width}}{ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}} {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.4\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.4\pgf@circ@res@up}} \pgfpathclose \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill } \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/mic/depth}} {mic} {\ctikzvalof{bipoles/mic/height}} {\ctikzvalof{bipoles/mic/width}}{ \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathcircle{\pgfpoint{0pt}{.6\pgf@circ@res@up}}{.4\pgf@circ@res@up} \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}} \pgfusepath{draw} \endpgfscope \pgfscope \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{0pt}} % 0.25358 is 0.6-0.4*cos(30) \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfusepath{draw} \pgfusepath{draw} \endpgfscope } %% european gas filled surge arrester \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/european gas filled surge arrester/height}} {european gas filled surge arrester} {\ctikzvalof{bipoles/european gas filled surge arrester/height}} {\ctikzvalof{bipoles/european gas filled surge arrester/width}} { \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \pgfscope \pgfsetarrowsend{latexslim} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfusepath{draw} \endpgfscope } %% american gas filled surge arrester \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/american gas filled surge arrester/height}} {american gas filled surge arrester} {\ctikzvalof{bipoles/american gas filled surge arrester/height}} {\ctikzvalof{bipoles/american gas filled surge arrester/width}}{ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}} \pgfusepath{draw} \pgfscope \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up} \pgf@circ@draworfill \endpgfscope \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} \pgfscope \pgfsetarrowsend{latex} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfusepath{draw} \endpgfscope{} \pgfcircle{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\ctikzvalof{bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\ctikzvalof{bipoles/american gas filled surge arrester/size}\pgf@circ@res@down} \pgfusepath{fill} } %% thermocouple \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/thermocouple/height 2}} {thermocouple} {\ctikzvalof{bipoles/thermocouple/height}} {\ctikzvalof{bipoles/thermocouple/width}} { \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}} \pgfusepath{draw} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}} \pgfusepath{draw} \pgfsetlinewidth{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}} \pgfusepath{draw} } %% fuse \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/fuse/height}} {fuse} {\ctikzvalof{bipoles/fuse/height}} {\ctikzvalof{bipoles/fuse/width}} { \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}} \pgfusepath{draw} \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill } %% asymmetric fuse \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/afuse/height}} {afuse} {\ctikzvalof{bipoles/afuse/height}} {\ctikzvalof{bipoles/afuse/width}} { \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}} \pgfusepath{draw} \pgfscope \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgf@circ@draworfill \endpgfscope \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}} \pgfusepath{stroke,fill} } %% SQUID added by Cor Molenaar 5 March 2010 \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/squid/height}} {squid} {\ctikzvalof{bipoles/squid/height}} {\ctikzvalof{bipoles/squid/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}} \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}} \pgfusepath{draw} } % Generic barrier added by Cor Molenaar 5 March 2010 \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/barrier/height}} {barrier} {\ctikzvalof{bipoles/barrier/height}} {\ctikzvalof{bipoles/barrier/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}} \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}} \pgfusepath{draw} } % % open version of the barrier symbol % suggested by Radványi Patrik Tamás % \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/barrier/height}} {openbarrier} {\ctikzvalof{bipoles/barrier/height}} {\ctikzvalof{bipoles/barrier/width}} { % this is set with normal wire linewidth \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@left}{0pt}} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@right}{0pt}} \pgfusepath{draw} % do the cross part \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}} \pgfusepath{draw} } %% Lamp \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/lamp/height}} {lamp} {\ctikzvalof{bipoles/lamp/height}} {\ctikzvalof{bipoles/lamp/width}} { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}} \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}} \pgfusepath{draw} } %% bulb \pgfcircdeclarebipolescaled{misc} {} {\ctikzvalof{bipoles/bulb/height}} {bulb} {\ctikzvalof{bipoles/bulb/height}} {\ctikzvalof{bipoles/bulb/width}} {% \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.8\pgf@circ@res@up}}{\pgfpoint{0.8\pgf@circ@res@left}{0}} \pgf@circ@draworfill \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left} \pgfsetbeveljoin \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}} \pgfusepath{draw} } % end of pgfcircbipoles.tex