diff --git a/assets/common.gnuplot b/assets/common.gnuplot new file mode 100644 index 0000000..ced4d6f --- /dev/null +++ b/assets/common.gnuplot @@ -0,0 +1,15 @@ +set encoding utf8 +set terminal epslatex monochrome font "Arial,11" fontscale 1.0 size 12cm,8cm +set style data lines +set dashtype 1 ".." +set dashtype 2 "-.-" +set style line 1 linewidth 1 linecolor rgb "magenta" +set style line 2 linewidth 1 linecolor rgb "blue" dashtype 1 +set style line 3 linewidth 1 linecolor rgb "green" dashtype 2 +set style line 91 linewidth 1 linecolor rgb "black" +set style line 92 linewidth 0.5 linecolor rgb "gray20" +set style line 93 linewidth 0.5 linecolor rgb "gray60" +set style textbox 2 opaque fc "light-blue" +set border ls 91 +set grid xtics ls 92, ls 93 +set grid ytics ls 92, ls 93 diff --git a/assets/t-1/datasheet.dat b/assets/t-1/datasheet.dat new file mode 100644 index 0000000..f54da66 --- /dev/null +++ b/assets/t-1/datasheet.dat @@ -0,0 +1,5 @@ +1.9, 12 +2.0, 16 +2.1, 20 +2.2, 28 +2.3, 49 diff --git a/assets/t-1/exp1.eps b/assets/t-1/exp1.eps new file mode 100644 index 0000000..f8f02f6 --- /dev/null +++ b/assets/t-1/exp1.eps @@ -0,0 +1,655 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: exp1.tex +%%Creator: gnuplot 6.0 patchlevel 4 +%%CreationDate: Tue May 26 00:17:35 2026 +%%DocumentFonts: +%%BoundingBox: 50 50 390 276 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color false def +/Blacktext true def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Level3 false def +/Rounded false def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -73 def +/dl1 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 390 50 lineto 390 276 lineto 50 276 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 5.2 (Dec 2017) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Classic Line colors (version 5.0) +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default dash patterns (version 5.0) +/LTB {BL [] LCb DL} def +/LTw {PL [] 1 setgray} def +/LTb {PL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto closepath gsave fill grestore stroke} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (exp1.tex) + /Subject (gnuplot plot) + /Creator (gnuplot 6.0 patchlevel 4) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue May 26 00:17:35 2026) + /DOCINFO pdfmark +end +} ifelse +% +% Support for boxed text - Ethan A Merritt Sep 2016 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { dup type /stringtype eq + { Boxing { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } + {} ifelse} def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PL PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.500 UL +LTb +946 704 M +5459 0 V +stroke +1.000 UL +LTb +946 704 M +63 0 V +5396 0 R +-63 0 V +stroke +0.500 UL +LTb +946 1306 M +5459 0 V +stroke +1.000 UL +LTb +946 1306 M +63 0 V +5396 0 R +-63 0 V +stroke +0.500 UL +LTb +946 1907 M +5459 0 V +stroke +1.000 UL +LTb +946 1907 M +63 0 V +5396 0 R +-63 0 V +stroke +0.500 UL +LTb +946 2509 M +5459 0 V +stroke +1.000 UL +LTb +946 2509 M +63 0 V +5396 0 R +-63 0 V +stroke +0.500 UL +LTb +946 3110 M +5459 0 V +stroke +1.000 UL +LTb +946 3110 M +63 0 V +5396 0 R +-63 0 V +stroke +0.500 UL +LTb +946 3712 M +5459 0 V +stroke +1.000 UL +LTb +946 3712 M +63 0 V +5396 0 R +-63 0 V +stroke +0.500 UL +LTb +946 4313 M +5459 0 V +stroke +1.000 UL +LTb +946 4313 M +63 0 V +5396 0 R +-63 0 V +stroke +0.500 UL +LTb +946 704 M +0 3609 V +stroke +1.000 UL +LTb +946 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +2993 704 M +0 3609 V +stroke +1.000 UL +LTb +2993 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +5040 704 M +0 3609 V +stroke +1.000 UL +LTb +5040 704 M +0 63 V +0 3546 R +0 -63 V +stroke +1.000 UL +LTb +946 4313 N +946 704 L +5459 0 V +0 3609 V +-5459 0 V +Z stroke +1.000 UP +1.000 UL +LTb +% Begin plot #1 +2.000 UL +LTb +1632 1913 M +340 598 V +341 346 V +340 63 V +341 37 V +340 28 V +342 23 V +339 20 V +342 18 V +339 17 V +342 18 V +337 16 V +341 15 V +stroke +LTw +% End plot #1 +2.000 UL +LTb +1.000 UL +LTb +946 4313 N +946 704 L +5459 0 V +0 3609 V +-5459 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer diff --git a/assets/t-1/exp1.gnuplot b/assets/t-1/exp1.gnuplot new file mode 100644 index 0000000..ad00cf2 --- /dev/null +++ b/assets/t-1/exp1.gnuplot @@ -0,0 +1,13 @@ +load '../common.gnuplot' + +set output "exp1.tex" +set xtics 0, 3, 8 +set xrange [0:8] +set yrange [0:3] + +set key top left Left reverse + +set xlabel "Supply Voltage (V)" +set ylabel "LED Voltage (V)" + +plot 'forward.dat' using 3:2 linetype 1 linewidth 2 title "" with lines diff --git a/assets/t-1/exp1.tex b/assets/t-1/exp1.tex new file mode 100644 index 0000000..0b9c420 --- /dev/null +++ b/assets/t-1/exp1.tex @@ -0,0 +1,108 @@ +% GNUPLOT: LaTeX picture with Postscript +\begingroup + \fontfamily{Arial}% + \selectfont + \makeatletter + \providecommand\color[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package color not loaded in conjunction with + terminal option `colourtext'% + }{See the gnuplot documentation for explanation.% + }{Either use 'blacktext' in gnuplot or load the package + color.sty in LaTeX.}% + \renewcommand\color[2][]{}% + }% + \providecommand\includegraphics[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package graphicx or graphics not loaded% + }{See the gnuplot documentation for explanation.% + }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}% + \renewcommand\includegraphics[2][]{}% + }% + \providecommand\rotatebox[2]{#2}% + \@ifundefined{ifGPcolor}{% + \newif\ifGPcolor + \GPcolorfalse + }{}% + \@ifundefined{ifGPblacktext}{% + \newif\ifGPblacktext + \GPblacktexttrue + }{}% + % define a \g@addto@macro without @ in the name: + \let\gplgaddtomacro\g@addto@macro + % define empty templates for all commands taking text: + \gdef\gplbacktext{}% + \gdef\gplfronttext{}% + \makeatother + \ifGPblacktext + % no textcolor at all + \def\colorrgb#1{}% + \def\colorgray#1{}% + \else + % gray or color? + \ifGPcolor + \def\colorrgb#1{\color[rgb]{#1}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}% + \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}% + \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}% + \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}% + \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}% + \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}% + \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}% + \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}% + \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}% + \else + % gray + \def\colorrgb#1{\color{black}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color{black}}% + \expandafter\def\csname LT1\endcsname{\color{black}}% + \expandafter\def\csname LT2\endcsname{\color{black}}% + \expandafter\def\csname LT3\endcsname{\color{black}}% + \expandafter\def\csname LT4\endcsname{\color{black}}% + \expandafter\def\csname LT5\endcsname{\color{black}}% + \expandafter\def\csname LT6\endcsname{\color{black}}% + \expandafter\def\csname LT7\endcsname{\color{black}}% + \expandafter\def\csname LT8\endcsname{\color{black}}% + \fi + \fi + \setlength{\unitlength}{0.0500bp}% + \ifx\gptboxheight\undefined% + \newlength{\gptboxheight}% + \newlength{\gptboxwidth}% + \newsavebox{\gptboxtext}% + \fi% + \setlength{\fboxrule}{0.5pt}% + \setlength{\fboxsep}{1pt}% + \definecolor{tbcol}{rgb}{1,1,1}% +\begin{picture}(6802.00,4534.00)% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname%% + \put(814,704){\makebox(0,0)[r]{\strut{}$0$}}% + \put(814,1306){\makebox(0,0)[r]{\strut{}$0.5$}}% + \put(814,1907){\makebox(0,0)[r]{\strut{}$1$}}% + \put(814,2509){\makebox(0,0)[r]{\strut{}$1.5$}}% + \put(814,3110){\makebox(0,0)[r]{\strut{}$2$}}% + \put(814,3712){\makebox(0,0)[r]{\strut{}$2.5$}}% + \put(814,4313){\makebox(0,0)[r]{\strut{}$3$}}% + \put(946,484){\makebox(0,0){\strut{}$0$}}% + \put(2993,484){\makebox(0,0){\strut{}$3$}}% + \put(5040,484){\makebox(0,0){\strut{}$6$}}% + }% + \gplgaddtomacro\gplfronttext{% + \csname LTb\endcsname%% + \put(209,2508){\rotatebox{-270.00}{\makebox(0,0){\strut{}LED Voltage (V)}}}% + \put(3675,154){\makebox(0,0){\strut{}Supply Voltage (V)}}% + }% + \gplbacktext + \put(0,0){\includegraphics[width={340.10bp},height={226.70bp}]{./assets/t-1/exp1}}% + \gplfronttext + \end{picture}% +\endgroup diff --git a/assets/t-1/exp2.eps b/assets/t-1/exp2.eps new file mode 100644 index 0000000..d6d97a0 --- /dev/null +++ b/assets/t-1/exp2.eps @@ -0,0 +1,649 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: exp2.tex +%%Creator: gnuplot 6.0 patchlevel 4 +%%CreationDate: Tue May 26 00:17:40 2026 +%%DocumentFonts: +%%BoundingBox: 50 50 390 276 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color false def +/Blacktext true def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Level3 false def +/Rounded false def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -73 def +/dl1 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 390 50 lineto 390 276 lineto 50 276 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 5.2 (Dec 2017) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Classic Line colors (version 5.0) +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default dash patterns (version 5.0) +/LTB {BL [] LCb DL} def +/LTw {PL [] 1 setgray} def +/LTb {PL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto closepath gsave fill grestore stroke} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (exp2.tex) + /Subject (gnuplot plot) + /Creator (gnuplot 6.0 patchlevel 4) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue May 26 00:17:40 2026) + /DOCINFO pdfmark +end +} ifelse +% +% Support for boxed text - Ethan A Merritt Sep 2016 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { dup type /stringtype eq + { Boxing { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } + {} ifelse} def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PL PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.500 UL +LTb +814 704 M +5591 0 V +stroke +1.000 UL +LTb +814 704 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 1426 M +5591 0 V +stroke +1.000 UL +LTb +814 1426 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 2148 M +5591 0 V +stroke +1.000 UL +LTb +814 2148 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 2869 M +5591 0 V +stroke +1.000 UL +LTb +814 2869 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 3591 M +5591 0 V +stroke +1.000 UL +LTb +814 3591 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 4313 M +5591 0 V +stroke +1.000 UL +LTb +814 4313 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +1932 704 M +0 3609 V +stroke +1.000 UL +LTb +1932 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +3050 704 M +0 3609 V +stroke +1.000 UL +LTb +3050 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +4169 704 M +0 3609 V +stroke +1.000 UL +LTb +4169 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +5287 704 M +0 3609 V +stroke +1.000 UL +LTb +5287 704 M +0 63 V +0 3546 R +0 -63 V +stroke +1.000 UL +LTb +814 4313 N +814 704 L +5591 0 V +0 3609 V +-5591 0 V +Z stroke +1.000 UP +1.000 UL +LTb +% Begin plot #1 +2.000 UL +LTb +5287 3555 M +4742 3217 L +4178 2856 L +3613 2494 L +3047 2132 L +2482 1782 L +1918 1409 L +stroke +LTw +% End plot #1 +2.000 UL +LTb +1.000 UL +LTb +814 4313 N +814 704 L +5591 0 V +0 3609 V +-5591 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer diff --git a/assets/t-1/exp2.gnuplot b/assets/t-1/exp2.gnuplot new file mode 100644 index 0000000..0b41cb5 --- /dev/null +++ b/assets/t-1/exp2.gnuplot @@ -0,0 +1,13 @@ +load '../common.gnuplot' + +set output "exp2.tex" +set xtics -3,1,0 +set xrange [-4:1] +set yrange [-4:1] + +set key top left Left reverse + +set xlabel "Supply Voltage (V)" +set ylabel "LED Voltage (V)" + +plot 'reverse.dat' using 1:($3 - $2) linetype 1 linewidth 2 title "" with lines diff --git a/assets/t-1/exp2.tex b/assets/t-1/exp2.tex new file mode 100644 index 0000000..6f11087 --- /dev/null +++ b/assets/t-1/exp2.tex @@ -0,0 +1,108 @@ +% GNUPLOT: LaTeX picture with Postscript +\begingroup + \fontfamily{Arial}% + \selectfont + \makeatletter + \providecommand\color[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package color not loaded in conjunction with + terminal option `colourtext'% + }{See the gnuplot documentation for explanation.% + }{Either use 'blacktext' in gnuplot or load the package + color.sty in LaTeX.}% + \renewcommand\color[2][]{}% + }% + \providecommand\includegraphics[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package graphicx or graphics not loaded% + }{See the gnuplot documentation for explanation.% + }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}% + \renewcommand\includegraphics[2][]{}% + }% + \providecommand\rotatebox[2]{#2}% + \@ifundefined{ifGPcolor}{% + \newif\ifGPcolor + \GPcolorfalse + }{}% + \@ifundefined{ifGPblacktext}{% + \newif\ifGPblacktext + \GPblacktexttrue + }{}% + % define a \g@addto@macro without @ in the name: + \let\gplgaddtomacro\g@addto@macro + % define empty templates for all commands taking text: + \gdef\gplbacktext{}% + \gdef\gplfronttext{}% + \makeatother + \ifGPblacktext + % no textcolor at all + \def\colorrgb#1{}% + \def\colorgray#1{}% + \else + % gray or color? + \ifGPcolor + \def\colorrgb#1{\color[rgb]{#1}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}% + \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}% + \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}% + \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}% + \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}% + \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}% + \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}% + \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}% + \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}% + \else + % gray + \def\colorrgb#1{\color{black}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color{black}}% + \expandafter\def\csname LT1\endcsname{\color{black}}% + \expandafter\def\csname LT2\endcsname{\color{black}}% + \expandafter\def\csname LT3\endcsname{\color{black}}% + \expandafter\def\csname LT4\endcsname{\color{black}}% + \expandafter\def\csname LT5\endcsname{\color{black}}% + \expandafter\def\csname LT6\endcsname{\color{black}}% + \expandafter\def\csname LT7\endcsname{\color{black}}% + \expandafter\def\csname LT8\endcsname{\color{black}}% + \fi + \fi + \setlength{\unitlength}{0.0500bp}% + \ifx\gptboxheight\undefined% + \newlength{\gptboxheight}% + \newlength{\gptboxwidth}% + \newsavebox{\gptboxtext}% + \fi% + \setlength{\fboxrule}{0.5pt}% + \setlength{\fboxsep}{1pt}% + \definecolor{tbcol}{rgb}{1,1,1}% +\begin{picture}(6802.00,4534.00)% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname%% + \put(682,704){\makebox(0,0)[r]{\strut{}$-4$}}% + \put(682,1426){\makebox(0,0)[r]{\strut{}$-3$}}% + \put(682,2148){\makebox(0,0)[r]{\strut{}$-2$}}% + \put(682,2869){\makebox(0,0)[r]{\strut{}$-1$}}% + \put(682,3591){\makebox(0,0)[r]{\strut{}$0$}}% + \put(682,4313){\makebox(0,0)[r]{\strut{}$1$}}% + \put(1932,484){\makebox(0,0){\strut{}$-3$}}% + \put(3050,484){\makebox(0,0){\strut{}$-2$}}% + \put(4169,484){\makebox(0,0){\strut{}$-1$}}% + \put(5287,484){\makebox(0,0){\strut{}$0$}}% + }% + \gplgaddtomacro\gplfronttext{% + \csname LTb\endcsname%% + \put(209,2508){\rotatebox{-270.00}{\makebox(0,0){\strut{}LED Voltage (V)}}}% + \put(3609,154){\makebox(0,0){\strut{}Supply Voltage (V)}}% + }% + \gplbacktext + \put(0,0){\includegraphics[width={340.10bp},height={226.70bp}]{./assets/t-1/exp2}}% + \gplfronttext + \end{picture}% +\endgroup diff --git a/assets/t-1/forward.dat b/assets/t-1/forward.dat new file mode 100644 index 0000000..881fad2 --- /dev/null +++ b/assets/t-1/forward.dat @@ -0,0 +1,13 @@ +0, 1.005, 1.005 +0, 1.502, 1.503 +0.213, 1.790, 2.004 +0.658, 1.842, 2.501 +1.128, 1.873, 3.002 +1.603, 1.896, 3.499 +2.084, 1.915, 4.000 +2.565, 1.932, 4.497 +3.051, 1.947, 4.998 +3.534, 1.961, 5.495 +4.020, 1.976, 5.996 +4.504, 1.989, 6.49 +4.992, 2.002, 6.99 diff --git a/assets/t-1/i-l_datasheet.png b/assets/t-1/i-l_datasheet.png new file mode 100644 index 0000000..7b4e30c Binary files /dev/null and b/assets/t-1/i-l_datasheet.png differ diff --git a/assets/t-1/ip.eps b/assets/t-1/ip.eps new file mode 100644 index 0000000..a549c93 --- /dev/null +++ b/assets/t-1/ip.eps @@ -0,0 +1,666 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ip.tex +%%Creator: gnuplot 6.0 patchlevel 4 +%%CreationDate: Tue May 26 00:18:01 2026 +%%DocumentFonts: +%%BoundingBox: 50 50 390 276 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color false def +/Blacktext true def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Level3 false def +/Rounded false def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -73 def +/dl1 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 390 50 lineto 390 276 lineto 50 276 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 5.2 (Dec 2017) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Classic Line colors (version 5.0) +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default dash patterns (version 5.0) +/LTB {BL [] LCb DL} def +/LTw {PL [] 1 setgray} def +/LTb {PL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto closepath gsave fill grestore stroke} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (ip.tex) + /Subject (gnuplot plot) + /Creator (gnuplot 6.0 patchlevel 4) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue May 26 00:18:01 2026) + /DOCINFO pdfmark +end +} ifelse +% +% Support for boxed text - Ethan A Merritt Sep 2016 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { dup type /stringtype eq + { Boxing { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } + {} ifelse} def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PL PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.500 UL +LTb +1210 704 M +5195 0 V +stroke +1.000 UL +LTb +1210 704 M +63 0 V +5132 0 R +-63 0 V +stroke +0.500 UL +LTb +1210 1306 M +5195 0 V +stroke +1.000 UL +LTb +1210 1306 M +63 0 V +5132 0 R +-63 0 V +stroke +0.500 UL +LTb +1210 1907 M +5195 0 V +stroke +1.000 UL +LTb +1210 1907 M +63 0 V +5132 0 R +-63 0 V +stroke +0.500 UL +LTb +1210 2509 M +5195 0 V +stroke +1.000 UL +LTb +1210 2509 M +63 0 V +5132 0 R +-63 0 V +stroke +0.500 UL +LTb +1210 3110 M +5195 0 V +stroke +1.000 UL +LTb +1210 3110 M +63 0 V +5132 0 R +-63 0 V +stroke +0.500 UL +LTb +1210 3712 M +5195 0 V +stroke +1.000 UL +LTb +1210 3712 M +63 0 V +5132 0 R +-63 0 V +stroke +0.500 UL +LTb +1210 4313 M +5195 0 V +stroke +1.000 UL +LTb +1210 4313 M +63 0 V +5132 0 R +-63 0 V +stroke +0.500 UL +LTb +1210 704 M +0 3609 V +stroke +1.000 UL +LTb +1210 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +2595 704 M +0 3609 V +stroke +1.000 UL +LTb +2595 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +3981 704 M +0 3609 V +stroke +1.000 UL +LTb +3981 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +5366 704 M +0 3609 V +stroke +1.000 UL +LTb +5366 704 M +0 63 V +0 3546 R +0 -63 V +stroke +1.000 UL +LTb +1210 4313 N +0 -3609 V +5195 0 V +0 3609 V +-5195 0 V +Z stroke +1.000 UP +1.000 UL +LTb +% Begin plot #1 +2.000 UL +LTb +1210 704 M +157 98 V +328 212 V +346 231 V +350 237 V +355 243 V +354 247 V +358 252 V +356 254 V +358 259 V +357 260 V +360 265 V +stroke +LTw +% End plot #1 +2.000 UL +LTb +1.000 UL +LTb +1210 4313 N +0 -3609 V +5195 0 V +0 3609 V +-5195 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer diff --git a/assets/t-1/ip.gnuplot b/assets/t-1/ip.gnuplot new file mode 100644 index 0000000..3db3b22 --- /dev/null +++ b/assets/t-1/ip.gnuplot @@ -0,0 +1,10 @@ +load '../common.gnuplot' + +set output "ip.tex" +set xtics 0, 4, 12 +set xrange [0:15] +set yrange [0:0.03] +set xlabel "Forward Current (mA)" +set ylabel "Power (W)" + +plot 'forward.dat' using ($1 / 470 * 1000):(($1 * $2)/470) linetype 1 linewidth 2 title "" with lines diff --git a/assets/t-1/ip.tex b/assets/t-1/ip.tex new file mode 100644 index 0000000..f7ab04c --- /dev/null +++ b/assets/t-1/ip.tex @@ -0,0 +1,109 @@ +% GNUPLOT: LaTeX picture with Postscript +\begingroup + \fontfamily{Arial}% + \selectfont + \makeatletter + \providecommand\color[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package color not loaded in conjunction with + terminal option `colourtext'% + }{See the gnuplot documentation for explanation.% + }{Either use 'blacktext' in gnuplot or load the package + color.sty in LaTeX.}% + \renewcommand\color[2][]{}% + }% + \providecommand\includegraphics[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package graphicx or graphics not loaded% + }{See the gnuplot documentation for explanation.% + }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}% + \renewcommand\includegraphics[2][]{}% + }% + \providecommand\rotatebox[2]{#2}% + \@ifundefined{ifGPcolor}{% + \newif\ifGPcolor + \GPcolorfalse + }{}% + \@ifundefined{ifGPblacktext}{% + \newif\ifGPblacktext + \GPblacktexttrue + }{}% + % define a \g@addto@macro without @ in the name: + \let\gplgaddtomacro\g@addto@macro + % define empty templates for all commands taking text: + \gdef\gplbacktext{}% + \gdef\gplfronttext{}% + \makeatother + \ifGPblacktext + % no textcolor at all + \def\colorrgb#1{}% + \def\colorgray#1{}% + \else + % gray or color? + \ifGPcolor + \def\colorrgb#1{\color[rgb]{#1}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}% + \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}% + \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}% + \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}% + \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}% + \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}% + \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}% + \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}% + \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}% + \else + % gray + \def\colorrgb#1{\color{black}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color{black}}% + \expandafter\def\csname LT1\endcsname{\color{black}}% + \expandafter\def\csname LT2\endcsname{\color{black}}% + \expandafter\def\csname LT3\endcsname{\color{black}}% + \expandafter\def\csname LT4\endcsname{\color{black}}% + \expandafter\def\csname LT5\endcsname{\color{black}}% + \expandafter\def\csname LT6\endcsname{\color{black}}% + \expandafter\def\csname LT7\endcsname{\color{black}}% + \expandafter\def\csname LT8\endcsname{\color{black}}% + \fi + \fi + \setlength{\unitlength}{0.0500bp}% + \ifx\gptboxheight\undefined% + \newlength{\gptboxheight}% + \newlength{\gptboxwidth}% + \newsavebox{\gptboxtext}% + \fi% + \setlength{\fboxrule}{0.5pt}% + \setlength{\fboxsep}{1pt}% + \definecolor{tbcol}{rgb}{1,1,1}% +\begin{picture}(6802.00,4534.00)% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname%% + \put(1078,704){\makebox(0,0)[r]{\strut{}$0$}}% + \put(1078,1306){\makebox(0,0)[r]{\strut{}$0.005$}}% + \put(1078,1907){\makebox(0,0)[r]{\strut{}$0.01$}}% + \put(1078,2509){\makebox(0,0)[r]{\strut{}$0.015$}}% + \put(1078,3110){\makebox(0,0)[r]{\strut{}$0.02$}}% + \put(1078,3712){\makebox(0,0)[r]{\strut{}$0.025$}}% + \put(1078,4313){\makebox(0,0)[r]{\strut{}$0.03$}}% + \put(1210,484){\makebox(0,0){\strut{}$0$}}% + \put(2595,484){\makebox(0,0){\strut{}$4$}}% + \put(3981,484){\makebox(0,0){\strut{}$8$}}% + \put(5366,484){\makebox(0,0){\strut{}$12$}}% + }% + \gplgaddtomacro\gplfronttext{% + \csname LTb\endcsname%% + \put(209,2508){\rotatebox{-270.00}{\makebox(0,0){\strut{}Power (W)}}}% + \put(3807,154){\makebox(0,0){\strut{}Forward Current (mA)}}% + }% + \gplbacktext + \put(0,0){\includegraphics[width={340.10bp},height={226.70bp}]{./assets/t-1/ip}}% + \gplfronttext + \end{picture}% +\endgroup diff --git a/assets/t-1/patch.bash b/assets/t-1/patch.bash new file mode 100755 index 0000000..0bb4fb1 --- /dev/null +++ b/assets/t-1/patch.bash @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +sed -i -e 's|{'$1'}|{./assets/t-1/'$1'}|g' $1.tex + diff --git a/assets/t-1/reverse.dat b/assets/t-1/reverse.dat new file mode 100644 index 0000000..ea73eb1 --- /dev/null +++ b/assets/t-1/reverse.dat @@ -0,0 +1,8 @@ +0, 0, -0.050 +-0.487, 0.000, -0.518 +-0.992, 0.000, -1.019 +-1.497, 0.000, -1.520 +-2.003, 0.000, -2.021 +-2.508, 0.000, -2.506 +-3.013, 0.000, -3.023 + diff --git a/assets/t-1/vi.eps b/assets/t-1/vi.eps new file mode 100644 index 0000000..5ae34e8 --- /dev/null +++ b/assets/t-1/vi.eps @@ -0,0 +1,704 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: vi.tex +%%Creator: gnuplot 6.0 patchlevel 4 +%%CreationDate: Tue May 26 00:20:40 2026 +%%DocumentFonts: +%%BoundingBox: 50 50 390 276 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color false def +/Blacktext true def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Level3 false def +/Rounded false def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -73 def +/dl1 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 390 50 lineto 390 276 lineto 50 276 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 5.2 (Dec 2017) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Classic Line colors (version 5.0) +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default dash patterns (version 5.0) +/LTB {BL [] LCb DL} def +/LTw {PL [] 1 setgray} def +/LTb {PL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto closepath gsave fill grestore stroke} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (vi.tex) + /Subject (gnuplot plot) + /Creator (gnuplot 6.0 patchlevel 4) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue May 26 00:20:40 2026) + /DOCINFO pdfmark +end +} ifelse +% +% Support for boxed text - Ethan A Merritt Sep 2016 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { dup type /stringtype eq + { Boxing { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } + {} ifelse} def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PL PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.500 UL +LTb +814 704 M +5591 0 V +stroke +1.000 UL +LTb +814 704 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 1426 M +5591 0 V +stroke +1.000 UL +LTb +814 1426 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 2148 M +5591 0 V +stroke +1.000 UL +LTb +814 2148 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 2869 M +5591 0 V +stroke +1.000 UL +LTb +814 2869 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 3591 M +5591 0 V +stroke +1.000 UL +LTb +814 3591 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 4313 M +5591 0 V +stroke +1.000 UL +LTb +814 4313 M +63 0 V +5528 0 R +-63 0 V +stroke +0.500 UL +LTb +814 704 M +0 3609 V +stroke +1.000 UL +LTb +814 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +1932 704 M +0 3106 V +0 440 R +0 63 V +stroke +1.000 UL +LTb +1932 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +3050 704 M +0 3106 V +0 440 R +0 63 V +stroke +1.000 UL +LTb +3050 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +4169 704 M +0 3609 V +stroke +1.000 UL +LTb +4169 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +5287 704 M +0 3609 V +stroke +1.000 UL +LTb +5287 704 M +0 63 V +0 3546 R +0 -63 V +stroke +0.500 UL +LTb +6405 704 M +0 3609 V +stroke +1.000 UL +LTb +6405 704 M +0 63 V +0 3546 R +0 -63 V +stroke +1.000 UL +LTb +814 4313 N +814 704 L +5591 0 V +0 3609 V +-5591 0 V +Z stroke +1.000 UP +1.000 UL +LTb +% Begin plot #1 +2.000 UL +LTb +2.000 UL +LTb +1078 4140 M +591 0 V +3062 704 M +1111 0 V +644 33 V +116 68 V +70 72 V +51 73 V +43 74 V +38 74 V +33 75 V +32 74 V +33 74 V +29 75 V +29 75 V +stroke +LTw +% End plot #1 +% Begin plot #2 +2.000 UL +LTb +LT1 +2.000 UL +LTb +LT1 +1078 3920 M +591 0 V +5063 1570 M +224 289 V +223 289 V +224 577 V +224 1516 V +stroke +LTw +% End plot #2 +2.000 UL +LTb +1.000 UL +LTb +814 4313 N +814 704 L +5591 0 V +0 3609 V +-5591 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer diff --git a/assets/t-1/vi.gnuplot b/assets/t-1/vi.gnuplot new file mode 100644 index 0000000..982098e --- /dev/null +++ b/assets/t-1/vi.gnuplot @@ -0,0 +1,14 @@ +load '../common.gnuplot' + +set output "vi.tex" +set xtics 0, 0.5, 2.5 +set xrange [0:2.5] +set yrange [0:50] + +set key top left Left reverse + +set xlabel "Forward Voltage (V)" +set ylabel "Forward Current (mA)" + +plot 'forward.dat' using 2:($1/470 * 1000) linetype 1 linewidth 2 title "Measured Value" with lines, \ +'datasheet.dat' using 1:2 linetype 2 linewidth 2 title "Datasheet Value" with lines diff --git a/assets/t-1/vi.tex b/assets/t-1/vi.tex new file mode 100644 index 0000000..109cdab --- /dev/null +++ b/assets/t-1/vi.tex @@ -0,0 +1,112 @@ +% GNUPLOT: LaTeX picture with Postscript +\begingroup + \fontfamily{Arial}% + \selectfont + \makeatletter + \providecommand\color[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package color not loaded in conjunction with + terminal option `colourtext'% + }{See the gnuplot documentation for explanation.% + }{Either use 'blacktext' in gnuplot or load the package + color.sty in LaTeX.}% + \renewcommand\color[2][]{}% + }% + \providecommand\includegraphics[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package graphicx or graphics not loaded% + }{See the gnuplot documentation for explanation.% + }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}% + \renewcommand\includegraphics[2][]{}% + }% + \providecommand\rotatebox[2]{#2}% + \@ifundefined{ifGPcolor}{% + \newif\ifGPcolor + \GPcolorfalse + }{}% + \@ifundefined{ifGPblacktext}{% + \newif\ifGPblacktext + \GPblacktexttrue + }{}% + % define a \g@addto@macro without @ in the name: + \let\gplgaddtomacro\g@addto@macro + % define empty templates for all commands taking text: + \gdef\gplbacktext{}% + \gdef\gplfronttext{}% + \makeatother + \ifGPblacktext + % no textcolor at all + \def\colorrgb#1{}% + \def\colorgray#1{}% + \else + % gray or color? + \ifGPcolor + \def\colorrgb#1{\color[rgb]{#1}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}% + \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}% + \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}% + \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}% + \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}% + \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}% + \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}% + \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}% + \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}% + \else + % gray + \def\colorrgb#1{\color{black}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color{black}}% + \expandafter\def\csname LT1\endcsname{\color{black}}% + \expandafter\def\csname LT2\endcsname{\color{black}}% + \expandafter\def\csname LT3\endcsname{\color{black}}% + \expandafter\def\csname LT4\endcsname{\color{black}}% + \expandafter\def\csname LT5\endcsname{\color{black}}% + \expandafter\def\csname LT6\endcsname{\color{black}}% + \expandafter\def\csname LT7\endcsname{\color{black}}% + \expandafter\def\csname LT8\endcsname{\color{black}}% + \fi + \fi + \setlength{\unitlength}{0.0500bp}% + \ifx\gptboxheight\undefined% + \newlength{\gptboxheight}% + \newlength{\gptboxwidth}% + \newsavebox{\gptboxtext}% + \fi% + \setlength{\fboxrule}{0.5pt}% + \setlength{\fboxsep}{1pt}% + \definecolor{tbcol}{rgb}{1,1,1}% +\begin{picture}(6802.00,4534.00)% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname%% + \put(682,704){\makebox(0,0)[r]{\strut{}$0$}}% + \put(682,1426){\makebox(0,0)[r]{\strut{}$10$}}% + \put(682,2148){\makebox(0,0)[r]{\strut{}$20$}}% + \put(682,2869){\makebox(0,0)[r]{\strut{}$30$}}% + \put(682,3591){\makebox(0,0)[r]{\strut{}$40$}}% + \put(682,4313){\makebox(0,0)[r]{\strut{}$50$}}% + \put(814,484){\makebox(0,0){\strut{}$0$}}% + \put(1932,484){\makebox(0,0){\strut{}$0.5$}}% + \put(3050,484){\makebox(0,0){\strut{}$1$}}% + \put(4169,484){\makebox(0,0){\strut{}$1.5$}}% + \put(5287,484){\makebox(0,0){\strut{}$2$}}% + \put(6405,484){\makebox(0,0){\strut{}$2.5$}}% + }% + \gplgaddtomacro\gplfronttext{% + \csname LTb\endcsname%% + \put(1801,4140){\makebox(0,0)[l]{\strut{}Measured Value}}% + \put(1801,3920){\makebox(0,0)[l]{\strut{}Datasheet Value}}% + \put(209,2508){\rotatebox{-270.00}{\makebox(0,0){\strut{}Forward Current (mA)}}}% + \put(3609,154){\makebox(0,0){\strut{}Forward Voltage (V)}}% + }% + \gplbacktext + \put(0,0){\includegraphics[width={340.10bp},height={226.70bp}]{./assets/t-1/vi}}% + \gplfronttext + \end{picture}% +\endgroup diff --git a/assets/t-1/vp.eps b/assets/t-1/vp.eps new file mode 100644 index 0000000..b1b3583 --- /dev/null +++ b/assets/t-1/vp.eps @@ -0,0 +1,837 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: vp.tex +%%Creator: gnuplot 6.0 patchlevel 4 +%%CreationDate: Mon May 25 10:28:08 2026 +%%DocumentFonts: +%%BoundingBox: 50 50 390 276 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext true def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Level3 false def +/Rounded false def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -73 def +/dl1 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 390 50 lineto 390 276 lineto 50 276 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 5.2 (Dec 2017) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Classic Line colors (version 5.0) +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default dash patterns (version 5.0) +/LTB {BL [] LCb DL} def +/LTw {PL [] 1 setgray} def +/LTb {PL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto closepath gsave fill grestore stroke} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (vp.tex) + /Subject (gnuplot plot) + /Creator (gnuplot 6.0 patchlevel 4) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Mon May 25 10:28:08 2026) + /DOCINFO pdfmark +end +} ifelse +% +% Support for boxed text - Ethan A Merritt Sep 2016 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { dup type /stringtype eq + { Boxing { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } + {} ifelse} def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PL PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +1210 704 M +5195 0 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1210 704 M +63 0 V +5132 0 R +-63 0 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +1210 1306 M +5195 0 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1210 1306 M +63 0 V +5132 0 R +-63 0 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +1210 1907 M +5195 0 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1210 1907 M +63 0 V +5132 0 R +-63 0 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +1210 2509 M +5195 0 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1210 2509 M +63 0 V +5132 0 R +-63 0 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +1210 3110 M +5195 0 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1210 3110 M +63 0 V +5132 0 R +-63 0 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +1210 3712 M +5195 0 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1210 3712 M +63 0 V +5132 0 R +-63 0 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +1210 4313 M +5195 0 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1210 4313 M +63 0 V +5132 0 R +-63 0 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +1210 704 M +0 3609 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1210 704 M +0 63 V +0 3546 R +0 -63 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +2249 704 M +0 3609 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +2249 704 M +0 63 V +0 3546 R +0 -63 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +3288 704 M +0 3609 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +3288 704 M +0 63 V +0 3546 R +0 -63 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +4327 704 M +0 3609 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +4327 704 M +0 63 V +0 3546 R +0 -63 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +5366 704 M +0 3609 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +5366 704 M +0 63 V +0 3546 R +0 -63 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +0.500 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.20 0.20 0.20 C +6405 704 M +0 3609 V +stroke +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +6405 704 M +0 63 V +0 3546 R +0 -63 V +stroke +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +1210 4313 N +0 -3609 V +5195 0 V +0 3609 V +-5195 0 V +Z stroke +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.00 0.00 0.00 C +% Begin plot #1 +2.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +0.58 0.00 0.83 C +3298 704 M +1033 0 V +599 98 V +108 212 V +64 231 V +48 237 V +39 243 V +36 247 V +31 252 V +29 254 V +31 259 V +27 260 V +27 265 V +stroke +LTw +% End plot #1 +2.000 UL +LTb +LCb setrgbcolor +[] 0 setdash +1.000 UL +LTb +0.00 0.00 0.00 C +1210 4313 N +0 -3609 V +5195 0 V +0 3609 V +-5195 0 V +Z stroke +LCb setrgbcolor +LTb +1.000 UP +1.000 UL +LTb +0.00 0.00 0.00 C +stroke +grestore +end +showpage +%%Trailer diff --git a/assets/t-1/vp.gnuplot b/assets/t-1/vp.gnuplot new file mode 100644 index 0000000..75066c6 --- /dev/null +++ b/assets/t-1/vp.gnuplot @@ -0,0 +1,13 @@ +load '../common.gnuplot' + +set output "vp.tex" +set xtics 0, 0.5, 2.5 +set xrange [0:2.5] +set yrange [0:0.03] + +set key top left Left reverse + +set xlabel "Forward Voltage (V)" +set ylabel "Power (W)" + +plot 'forward.dat' using 2:(($1 * $2)/470) linetype 1 linewidth 2 title "" with lines diff --git a/assets/t-1/vp.tex b/assets/t-1/vp.tex new file mode 100644 index 0000000..6a8e888 --- /dev/null +++ b/assets/t-1/vp.tex @@ -0,0 +1,123 @@ +% GNUPLOT: LaTeX picture with Postscript +\begingroup + \fontfamily{Arial}% + \selectfont + \makeatletter + \providecommand\color[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package color not loaded in conjunction with + terminal option `colourtext'% + }{See the gnuplot documentation for explanation.% + }{Either use 'blacktext' in gnuplot or load the package + color.sty in LaTeX.}% + \renewcommand\color[2][]{}% + }% + \providecommand\includegraphics[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package graphicx or graphics not loaded% + }{See the gnuplot documentation for explanation.% + }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}% + \renewcommand\includegraphics[2][]{}% + }% + \providecommand\rotatebox[2]{#2}% + \@ifundefined{ifGPcolor}{% + \newif\ifGPcolor + \GPcolortrue + }{}% + \@ifundefined{ifGPblacktext}{% + \newif\ifGPblacktext + \GPblacktexttrue + }{}% + % define a \g@addto@macro without @ in the name: + \let\gplgaddtomacro\g@addto@macro + % define empty templates for all commands taking text: + \gdef\gplbacktext{}% + \gdef\gplfronttext{}% + \makeatother + \ifGPblacktext + % no textcolor at all + \def\colorrgb#1{}% + \def\colorgray#1{}% + \else + % gray or color? + \ifGPcolor + \def\colorrgb#1{\color[rgb]{#1}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}% + \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}% + \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}% + \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}% + \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}% + \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}% + \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}% + \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}% + \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}% + \else + % gray + \def\colorrgb#1{\color{black}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color{black}}% + \expandafter\def\csname LT1\endcsname{\color{black}}% + \expandafter\def\csname LT2\endcsname{\color{black}}% + \expandafter\def\csname LT3\endcsname{\color{black}}% + \expandafter\def\csname LT4\endcsname{\color{black}}% + \expandafter\def\csname LT5\endcsname{\color{black}}% + \expandafter\def\csname LT6\endcsname{\color{black}}% + \expandafter\def\csname LT7\endcsname{\color{black}}% + \expandafter\def\csname LT8\endcsname{\color{black}}% + \fi + \fi + \setlength{\unitlength}{0.0500bp}% + \ifx\gptboxheight\undefined% + \newlength{\gptboxheight}% + \newlength{\gptboxwidth}% + \newsavebox{\gptboxtext}% + \fi% + \setlength{\fboxrule}{0.5pt}% + \setlength{\fboxsep}{1pt}% + \definecolor{tbcol}{rgb}{1,1,1}% +\begin{picture}(6802.00,4534.00)% + \gplgaddtomacro\gplbacktext{% + \colorrgb{0.00,0.00,0.00}%% + \put(1078,704){\makebox(0,0)[r]{\strut{}$0$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(1078,1306){\makebox(0,0)[r]{\strut{}$0.005$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(1078,1907){\makebox(0,0)[r]{\strut{}$0.01$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(1078,2509){\makebox(0,0)[r]{\strut{}$0.015$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(1078,3110){\makebox(0,0)[r]{\strut{}$0.02$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(1078,3712){\makebox(0,0)[r]{\strut{}$0.025$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(1078,4313){\makebox(0,0)[r]{\strut{}$0.03$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(1210,484){\makebox(0,0){\strut{}$0$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(2249,484){\makebox(0,0){\strut{}$0.5$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(3288,484){\makebox(0,0){\strut{}$1$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(4327,484){\makebox(0,0){\strut{}$1.5$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(5366,484){\makebox(0,0){\strut{}$2$}}% + \colorrgb{0.00,0.00,0.00}%% + \put(6405,484){\makebox(0,0){\strut{}$2.5$}}% + }% + \gplgaddtomacro\gplfronttext{% + \csname LTb\endcsname%% + \put(209,2508){\rotatebox{-270.00}{\makebox(0,0){\strut{}Power (W)}}}% + \put(3807,154){\makebox(0,0){\strut{}Forward Voltage (V)}}% + }% + \gplbacktext + \put(0,0){\includegraphics[width={340.10bp},height={226.70bp}]{./assets/t-1/vp}}% + \gplfronttext + \end{picture}% +\endgroup diff --git a/bibs/t-1.bib b/bibs/t-1.bib new file mode 100644 index 0000000..3427356 --- /dev/null +++ b/bibs/t-1.bib @@ -0,0 +1,40 @@ +@inbook{intro-electronic:pn-junction, + title={電子回路概論}, + author={高木 茂孝 and 堀桂 太郎}, + publisher={実教出版株式会社}, + year={2025}, + month={04}, + pages={17-18} +} +@inbook{intro-electronic:diode, + title={電子回路概論}, + author={高木 茂孝 and 堀桂 太郎}, + publisher={実教出版株式会社}, + year={2025}, + month={04}, + pages={19-21} +} +@inbook{intro-electronic:diode-circuit, + title={電子回路概論}, + author={高木 茂孝 and 堀桂 太郎}, + publisher={実教出版株式会社}, + year={2025}, + month={04}, + pages={23-25} +} +@inbook{intro-electronic:led, + title={電子回路概論}, + author={高木 茂孝 and 堀桂 太郎}, + publisher={実教出版株式会社}, + year={2025}, + month={04}, + pages={30} +} +@online{led-datasheet, + title={OSG8HA3Z74A}, + author={OptoSupply}, + url={https://akizukidenshi.com/goodsaffix/OSG8HA3Z74A.pdf}, + year={2021}, + month={01}, + urldate={2025-05-25} +} diff --git a/out/report_t-1.pdf b/out/report_t-1.pdf new file mode 100644 index 0000000..ca6802b Binary files /dev/null and b/out/report_t-1.pdf differ diff --git a/out/report_t-1.synctex.gz b/out/report_t-1.synctex.gz new file mode 100644 index 0000000..7c13b9c Binary files /dev/null and b/out/report_t-1.synctex.gz differ diff --git a/report_t-1.tex b/report_t-1.tex new file mode 100644 index 0000000..2100be2 --- /dev/null +++ b/report_t-1.tex @@ -0,0 +1,61 @@ +\documentclass[japanese,xelatex,a4paper,10.5pt,ja=standard]{bxjsarticle} + +\usepackage{tex/preamble} +\usepackage{tex/experiment-title} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{multirow} +\usepackage{subcaption} +\usepackage{pgfmath} +\usepackage{pgffor} +\usepackage{tex/depD-bib} +\usepackage{tex/depD-format} + +\reportauthor{柴田健琉} +\reporttitle{LEDの回路} +\reportdate{2026年}{05月}{19日} +\turnindate{2026年}{05月}{26日} +\schoolyear{2026} +\grade{3} +\department{電子制御工学科} +\subject{電子制御工学実験1} +\reportid{T-1} +\expgroup{-} +\seatingnum{15} +\addExperimentDate{2026年 05月 19日} + +\addbibresource{./bibs/t-1.bib} + +\begin{document} + \experimentTitle + + \section{実験目的} + + 今回の実験では発光ダイオード(LED)の特性と回路での実装方法を確認するために行った. + + \input{./sections/t-1/theory} + \resetrefcounter + + \input{./sections/t-1/exp-detail} + \resetrefcounter + + \input{./sections/t-1/exp-result} + \resetrefcounter + + \input{./sections/t-1/reflection} + \resetrefcounter + + \section{まとめ} + + 今回の実験で以下の事柄を確認した: + + \begin{itemize} + \item {ダイオードの非線形性により電圧・電流の変化が一定でない} + \item {ダイオードの整流作用により逆電圧を殆ど遮断する} + \item {LEDの光度は電力に比例して増加する} + \item {LEDには電流制限抵抗が必要であること} + \end{itemize} + + \printbibliography[title={参考文献}]{} + +\end{document} diff --git a/sections/t-1/exp-detail.tex b/sections/t-1/exp-detail.tex new file mode 100644 index 0000000..8edefa2 --- /dev/null +++ b/sections/t-1/exp-detail.tex @@ -0,0 +1,48 @@ +\section{実験手順・条件} + +\subsection{実験器具} + +\begin{itemize} + \item {ブレッドボード} + \item {緑色LED OSG8HA3Z74A} + \item {抵抗器 $470 \ \Omega \pm 5 \ \%$ 1/4 W} + \item {Analog Devices, ADALM2000} +\end{itemize} + +\subsection{実験回路} + +\begin{figure}[tbh] + \centering + \begin{circuitikz} + \ctikzset{multipoles/dipchip/width=2.5} + \draw (0,0) node[dipchip, num pins=12, hide numbers, no topmark, external pins width=0](AD){ADALM2000}; + \node [left, font=\small, align=right] at (AD.bpin 12) {V+}; + \node [left, font=\small, align=right] at (AD.bpin 11) {V-}; + \node [left, font=\small, align=right] at (AD.bpin 10) {1+}; + \node [left, font=\small, align=right] at (AD.bpin 9) {1-}; + \node [left, font=\small, align=right] at (AD.bpin 8) {2+}; + \node [left, font=\small, align=right] at (AD.bpin 7) {2-}; + + \draw (AD.bpin 12) -- ++(1,0) to [full led] ++(2,0) to [R={$470 \ \Omega$}] ++(2,0) -- ++($(AD.bpin 11) - (AD.bpin 12)$) -- (AD.bpin 11); + \draw (AD.bpin 10) -- ++(0.5,0) to [short, -*] ++($(AD.bpin 12) - (AD.bpin 10)$); + \draw (AD.bpin 9) -- ++(0.75,0) to [short, -*] ++($(AD.bpin 11) - (AD.bpin 9)$); + \draw (AD.bpin 8) -- ++(3,0) to [short, -*] ++($(AD.bpin 12) - (AD.bpin 8)$); + \draw (AD.bpin 7) -- ++(1,0) to [short, -*] ++($(AD.bpin 11) - (AD.bpin 7)$); + \end{circuitikz} + \caption{Circuit Diagram for Experiments} + \label{fig:cd-exps} +\end{figure} + +\subsection{実験1} + +\begin{enumerate} + \item {ADALM2000を用いて1 Vから7 Vまでの電圧を回路に印加する} + \item {抵抗の電圧降下と回路の電圧を記録する} +\end{enumerate} + +\subsection{実験2} + +\begin{enumerate} + \item {ADALM2000を用いて1 Vから3 Vまでの逆電圧を回路に印加する} + \item {抵抗の電圧降下と回路の電圧を記録する} +\end{enumerate} diff --git a/sections/t-1/exp-result.tex b/sections/t-1/exp-result.tex new file mode 100644 index 0000000..bedd344 --- /dev/null +++ b/sections/t-1/exp-result.tex @@ -0,0 +1,25 @@ +\section{実験結果} + +\subsection{実験1} + +電源電圧とLEDの電圧降下の関係を\cref{fig:exp1-res}に示した. +電源電圧を高くするにつれ, LEDの電圧降下は2 V付近となり, 変化量が少なくなった. + +\begin{figure}[tbh] + \centering + \input{assets/t-1/exp1} + \caption{Supply Voltage v.s. LED Forward Voltage} + \label{fig:exp1-res} +\end{figure} + +\subsection{実験2} + +電源電圧とLEDの逆電圧の関係を\cref{fig:exp2-res}に示した. +抵抗器には電圧が掛からず, 電圧は全てLEDで降下した. + +\begin{figure}[tbh] + \centering + \input{assets/t-1/exp2} + \caption{Reverse Supply Voltage v.s. LED Reverse Voltage} + \label{fig:exp2-res} +\end{figure} diff --git a/sections/t-1/reflection.tex b/sections/t-1/reflection.tex new file mode 100644 index 0000000..f1b87c2 --- /dev/null +++ b/sections/t-1/reflection.tex @@ -0,0 +1,65 @@ +\section{考察} + +\subsection{消費電力と明かるさ} + +\begin{figure}[tbh] + \centering + \input{./assets/t-1/ip} + \caption{Forward Current v.s. Power Usage of LED} + \label{fig:led-current-power} +\end{figure} + +実験中, LEDは2 V未満では点灯せず, 2 Vからは電源電圧を高くするにつれ光が強くなっていった. +LEDの消費電力は\cref{equ:led-power}で算出される. + +\begin{equation}\label{equ:led-power} + \begin{split} + P &= V_{F} I_{F} \\ + I_{F} &= \frac{V_R}{R} + \end{split} +\end{equation} + +ここで$V_{R}$は抵抗器の端子間電圧, $V_{F}$はLEDの順電圧, $R$は抵抗器の抵抗値である. + +\cref{equ:led-power}を今回の実験のパラメータを使用して順電流についてグラフに表したものが\cref{fig:led-current-power}である. + +電流が流れている間の順電圧はほぼ一定なので電力は電流と比例していると言える. +そして, この関係はデータシート\supercite{led-datasheet}の\cref{fig:i-rl-datasheet}で示されたLEDの電流と相対光度の0 \text{mA} - 10 \text{mA}の領域での関係と類似している. +なので, 消費電力が高くなるにつれ明かるさも同じように増していく. + +\begin{figure}[tbh] + \centering + \includegraphics[width=10cm]{./assets/t-1/i-l_datasheet.png} + \caption{Forward Current v.s. Relative Intensitiy from Datasheet\supercite{led-datasheet}} + \label{fig:i-rl-datasheet} +\end{figure} + +\subsection{抵抗の必要性} + +定電圧源をLEDに直接接続すると電源電圧と等しい順電圧が掛かる. +ダイオードは一定の順電圧を超えると半導体が導体のように振る舞い, 急激に電流を流す性質を持っている. +この時, 回路中にLEDしか無い場合, 短絡したような状態となり大電流が流れてしまう. +そして, 順電流が最大定格電流を超えてしまうとLEDが破損してしまう. +なのでLEDにはなにかしら電流を制限する素子を直列に接続する必要がある. + +\subsection{LEDの非線形性} + +LEDのみならず多くの半導体素子は単純な多項式で電流と電圧の関係を表すことができない. +この性質を非線形という. 非線形な関係は変化率が刻々と変わる. +V-I特性の変化率の逆数が微分抵抗となる. +この微分抵抗が大きいと電圧に対する電流の変化が小さく, 微分抵抗が小さいと電圧に対する電流の変化が大きくなる\supercite{intro-electronic:diode}. + +\begin{figure}[tbh] + \centering + \input{./assets/t-1/vi} + \caption{$V_F$ - $I_F$ Characteristic of LED} + \label{fig:led-vi} +\end{figure} + +\cref{fig:led-vi}に実測値とデータシート\supercite{led-datasheet}の値の一部を表示した. +データシートの値と実測値には大きな差が見られた. +これはデータシートでのノミナル値, 順電流$I_F$が20 mAとなる順電圧$V_F$が2.1 Vでのグラフを特性図として表示している. +そしてLEDの順電圧には1.8 Vから2.6 Vの振れ幅がある. +よって, 今回用意したLEDは順電流20 mAに達っする順電圧がノミナル値の2.1 Vより大きい個体を使用したということが推測できる. + +このことを踏まえるとデータシートが掲載しているのは微分抵抗が小さい部分で, 今回の実験で得た値は順電圧1.9 V以下での微分抵抗が高い部分を含んだ結果となった. diff --git a/sections/t-1/theory.tex b/sections/t-1/theory.tex new file mode 100644 index 0000000..7c64bea --- /dev/null +++ b/sections/t-1/theory.tex @@ -0,0 +1,249 @@ +\section{理論} + +\subsection{ダイオード} + +ダイオードとは半導体の接合による電子の移動方向を制限する素子である. + +多くの場合, 単にダイオードと呼ばれるものは, 2種類の半導体を接合したpn接合ダイオードのことである. +pn接合ダイオードとは正孔を多くもつp形半導体と自由電子が多いn形半導体を組み合わせたダイオードである. +これら半導体を接合すると接合面と呼ぶ境界線で少数のn形半導体内の自由電子がp形半導体の正孔を埋める. この移動を拡散と言い, 電子が正孔を埋めることを再結合と言う. +そして, 接合面には空乏層と呼ばれる電気的に中立で絶縁体の振舞いをする層が形成される\supercite{intro-electronic:pn-junction}. + +\begin{figure}[tbh] + \centering + \begin{minipage}[h]{0.3\linewidth} + \centering + \vspace{2.65em} + \begin{tikzpicture}[scale=0.5] + \filldraw[fill=blue!45] (0,0) rectangle ++(3,2); + \filldraw[fill=blue!90] (3,0) rectangle ++(3,2); + \draw (1.5,0) node[below] {p-Type}; + \draw (4.5,0) node[below] {n-Type}; + \pgfmathsetseed{7} + \foreach \i in {1,2,3,4,5} { + \draw + let + \n1 = {0.25 + random(1,10) * 3/15}, + \n2 = {0.125 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle] {+}; + }; + \pgfmathsetseed{8} + \draw ({random(1,10) * 3/15}, rnd * 2) node[text=white,circle] {-}; + \draw ({random(1,10) * 3/15 + 3}, rnd * 2) node[text=white,circle] {+}; + \pgfmathsetseed{7} + \foreach \i in {1,2,3,4,5} { + \draw + let + \n1 = {5.75 - random(1,10) * 3/15}, + \n2 = {0.125 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle] {-}; + }; + \end{tikzpicture} + \subcaption{Structure} + \label{fig:pn-junction:structure} + \end{minipage} + \begin{minipage}[h]{0.3\linewidth} + \centering + \vspace{2.65em} + \begin{tikzpicture}[scale=0.5] + \filldraw[fill=blue!45] (0,0) rectangle ++(3,2); + \filldraw[fill=blue!90] (3,0) rectangle ++(3,2); + \draw (1.5,0) node[below] {p-Type}; + \draw (4.5,0) node[below] {n-Type}; + \pgfmathsetseed{7} + \foreach \i in {1,2,3,4,5} { + \draw + let + \n1 = {0.25 + random(1,10) * 3/15}, + \n2 = {0.125 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle](p\i) {+}; + }; + \pgfmathsetseed{8} + \draw ({random(1,10) * 3/15}, rnd * 2) node[text=white,circle] {-}; + \draw ({random(1,10) * 3/15 + 3}, rnd * 2) node[text=white,circle] {+}; + \pgfmathsetseed{7} + \foreach \i in {1,2,3,4,5} { + \draw + let + \n1 = {5.75 - random(1,10) * 3/15}, + \n2 = {0.125 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle](n\i) {-}; + }; + + \draw[-{Stealth},thick,draw=red!80] (p1.center) -- ++(0.75,0); + \draw[-{Stealth},thick,draw=red!80] (p2.center) -- ++(0.75,0); + \draw[-{Stealth},thick,draw=red!80] (p5.center) -- ++(0.75,0); + \draw[-{Stealth},thick,draw=red!80] (n1.center) -- ++(-0.75,0); + \draw[-{Stealth},thick,draw=red!80] (n2.center) -- ++(-0.75,0); + \draw[-{Stealth},thick,draw=red!80] (n5.center) -- ++(-0.75,0); + \end{tikzpicture} + \subcaption{Diffusion} + \label{fig:pn-junction:diffusion} + \end{minipage} + \begin{minipage}[h]{0.3\linewidth} + \centering + \begin{tikzpicture}[scale=0.5] + \def\seed{13} + \filldraw[fill=blue!45] (0,0) rectangle ++(2,2); + \filldraw[fill=blue!90] (4,0) rectangle ++(2,2); + \draw (2,0) rectangle ++(1,2); + \draw (3,0) rectangle ++(1,2); + \draw (1,0) node[below] {p-Type}; + \draw (5,0) node[below] {n-Type}; + \draw (3, 2.75) node[above](dl) {Depletion Layer}; + \draw[-{Stealth},thick] ($(dl.south) + (0,0.2)$) -- (3,2.2); + \pgfmathsetseed{\seed} + \foreach \i in {1,2} { + \draw + let + \n1 = {0.25 + random(1,10) * 2/15}, + \n2 = {0.25 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle] {+}; + }; + \draw ({random(1,10) * 2/15}, rnd * 2) node[text=white,circle] {-}; + \draw ({random(1,10) * 2/10 + 3}, rnd * 2) node[text=white,circle] {+}; + \pgfmathsetseed{\seed} + \foreach \i in {1,2} { + \draw + let + \n1 = {5.75 - random(1,10) * 2/15}, + \n2 = {0.25 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle] {-}; + }; + \end{tikzpicture} + \subcaption{Depletion Layer} + \label{fig:pn-junction:depletion-layer} + \end{minipage} + \caption{pn-Junction} + \label{fig:pn-junction} +\end{figure} + +この接合に電圧を印加する時, 極性の違いで以下の状態となる: + +\begin{itemize} + \item {電圧がn形半導体に電子を, p形半導体に正孔を供給し, 空乏層を消失させる(\cref{fig:pn-junction-voltage:forward})} + \item {電圧がn形半導体の電子を, p形半導体の正孔を外側へ引き寄せ, 空乏層をさらに広げる(\cref{fig:pn-junction-voltage:reverse})} +\end{itemize} + +そして, 電流はそれぞれの状態で導通, 遮断となる. これがダイオードの性質の一つである整流作用である\supercite{intro-electronic:diode}. + +\begin{figure}[tbh] + \centering + \begin{minipage}[h]{0.45\linewidth} + \centering + \begin{circuitikz}[scale=0.5] + \filldraw[fill=blue!45] (0,0) rectangle ++(3,2); + \filldraw[fill=blue!90] (3,0) rectangle ++(3,2); + \draw (1.5,0) node[below] {p-Type}; + \draw (4.5,0) node[below] {n-Type}; + \pgfmathsetseed{7} + \foreach \i in {1,2,3,4,5} { + \draw + let + \n1 = {0.25 + random(1,10) * 3/15}, + \n2 = {0.125 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle](p\i) {+}; + \draw[-{Stealth},thick,draw=red!80] (p\i.center) -- ++(0.75,0); + }; + \pgfmathsetseed{8} + \draw ({random(1,10) * 3/15}, rnd * 2) node[text=white,circle] {-}; + \draw ({random(1,10) * 3/15 + 3}, rnd * 2) node[text=white,circle] {+}; + \pgfmathsetseed{7} + \foreach \i in {1,2,3,4,5} { + \draw + let + \n1 = {5.75 - random(1,10) * 3/15}, + \n2 = {0.125 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle](n\i) {-}; + \draw[-{Stealth},thick,draw=red!80] (n\i.center) -- ++(-0.75,0); + }; + + \draw (-2,-2) to [battery1, l_={$V_F$}, i_={$I_F$}] (8,-2); + \draw (-2,-2) -- (-2,1) -- (0,1) node[above left] {$+$}; + \draw (8,-2) -- (8,1) -- (6,1) node[above right] {$-$}; + \end{circuitikz} + \subcaption{Forward Voltage} + \label{fig:pn-junction-voltage:forward} + \end{minipage} + \begin{minipage}[h]{0.45\linewidth} + \centering + \begin{circuitikz}[scale=0.5] + \def\seed{13} + \filldraw[fill=blue!45] (0,0) rectangle ++(1,2); + \filldraw[fill=blue!90] (5,0) rectangle ++(1,2); + \draw (1,0) rectangle ++(2,2); + \draw (3,0) rectangle ++(2,2); + \draw (0.5,0) node[below] {p-Type}; + \draw (5.5,0) node[below] {n-Type}; + \pgfmathsetseed{\seed} + \foreach \i in {1,2} { + \draw + let + \n1 = {0.2 + random(1,10) * 1/15}, + \n2 = {0.25 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle] {+}; + }; + \draw[-{Stealth},draw=red!80] (0.7, 1.4) node[text=white,circle] {-} -- ++(1,0); + \draw[-{Stealth},draw=red!80] (5.4, 1.5) node[text=white,circle] {+} -- ++(-1,0); + \pgfmathsetseed{\seed} + \foreach \i in {1,2} { + \draw + let + \n1 = {5.8 - random(1,10) * 1/15}, + \n2 = {0.25 + random(1,10) * 2/15} + in + (\n1, \n2) node[text=white,circle] {-}; + }; + + \draw (8,-2) to [battery1,l={$V_R$}, i={$I_R \lll I_F$}] (-2,-2); + \draw (-2,-2) -- (-2,1) -- (0,1) node[above left] {$-$}; + \draw (8,-2) -- (8,1) -- (6,1) node[above right] {$+$}; + \end{circuitikz} + \subcaption{Reverse Voltage} + \label{fig:pn-junction-voltage:reverse} + \end{minipage} + \caption{Applying Voltage across pn-Junction} + \label{fig:pn-junction-voltage} +\end{figure} + +ダイオードには極性があり, p形半導体の方をアノード, n形半導体の方をカソードと呼ぶ. +これらダイオードは電流を流し始めるまでに一定電圧以上を掛ける必要がある. この電圧を順電圧と呼ぶ. +一般的なシリコンダイオードの順電圧は0.6 V程度である. +また, 順電圧に至るまで電流が流れない領域のことを不感領域と言う\supercite{intro-electronic:diode}. +順電圧を増加させると順電流が急激に増加する, これがダイオードの非線形性である. +半導体素子の多くは単純なオームの法則に従わない. 回路計算する際にはテブナンの定理などを駆使していく必要がある\supercite{intro-electronic:diode-circuit}. + +\begin{figure}[tbh] + \centering + \begin{circuitikz} + \draw (0,0) node[above]{Anode} to [D*, o-o] ++(3,0) node[above]{Cathode}; + \end{circuitikz} + \caption{Circuit Diagram of Diode} + \label{fig:diode} +\end{figure} + +\subsection{発光ダイオード} + +発光ダイオード(LED)とは, 順電圧を掛ける時に光を放つダイオードである. +主に低電力・高効率な照明や表示灯に使用されている. +光は電子と正孔が再結合し消滅する時に発生する. この明かるさは電流に比例する. + +LEDの順電圧はシリコンダイオードよりも高く, 2 V以上の物が多い\supercite{intro-electronic:led}. + +\begin{figure}[tbh] + \centering + \begin{circuitikz} + \draw (0,0) node[above]{Anode} to [full led, o-o] ++(3,0) node[above]{Cathode}; + \end{circuitikz} + \caption{Circuit Diagram of LED} +\end{figure} + diff --git a/tex/depD-format.sty b/tex/depD-format.sty new file mode 100644 index 0000000..961cd12 --- /dev/null +++ b/tex/depD-format.sty @@ -0,0 +1,25 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{depD-format} + +\usepackage{cleveref} + +\renewcommand\figurename{Fig. } +\renewcommand\tablename{Table } +\renewcommand\theequation{\thesection-\arabic{equation}} +\renewcommand\thefigure{\thesection-\arabic{figure}} +\renewcommand\thetable{\thesection-\arabic{table}} + +\crefdefaultlabelformat{#1} +\crefname{figure}{Fig.}{Fig.} +\Crefname{figure}{Fig.}{Fig.} +\crefname{table}{Table}{Tables} +\Crefname{table}{Table}{Tables} +\crefname{equation}{Eq.}{Eq.} +\Crefname{equation}{Eq.}{Eq.} +\creflabelformat{equation}{(#1)} + +\newcommand\resetrefcounter{ + \setcounter{equation}{0} + \setcounter{figure}{0} + \setcounter{table}{0} +}