├── _config.yml ├── favicon.ico ├── icons ├── X red.png ├── grid.eps ├── grid.png ├── X black.png ├── grid ppt.png ├── rotate.png ├── rotate90.png ├── spacer.png ├── Green check.png ├── grid thin ppt.png ├── rotate90_18.png ├── X black 18 x 18.png ├── grid ppt 18x18.png ├── grid thin ppt 18x18.png ├── green check ppt 18x13.png ├── green check ppt 24x18.png ├── 18px-Cut_font_awesome.svg.png ├── 18px-Ok_font_awesome.svg.png ├── 200px-Ok_font_awesome.svg.png ├── Reorder_font_awesome.svg.png ├── 18px-Copy_font_awesome.svg.png ├── 18px-Paste_font_awesome.svg.png ├── 18px-Remove_font_awesome.svg.png ├── Icons for Circuit Sandbox.pptx ├── Align_justify_font_awesome.svg.png ├── 18px-Question_sign_font_awesome.svg.png ├── rotate90_18.svg ├── grid.svg └── make_icon_uri.html ├── Circuit-Sandbox.pptx ├── images ├── 42image_1.png └── 42image_2.png ├── Translation-table.docx ├── font-awesome-4.6.3 ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── less │ ├── fixed-width.less │ ├── screen-reader.less │ ├── larger.less │ ├── list.less │ ├── core.less │ ├── stacked.less │ ├── font-awesome.less │ ├── bordered-pulled.less │ ├── rotated-flipped.less │ ├── path.less │ ├── animated.less │ ├── mixins.less │ └── variables.less ├── scss │ ├── _fixed-width.scss │ ├── _screen-reader.scss │ ├── _larger.scss │ ├── _list.scss │ ├── _core.scss │ ├── font-awesome.scss │ ├── _stacked.scss │ ├── _bordered-pulled.scss │ ├── _rotated-flipped.scss │ ├── _path.scss │ ├── _animated.scss │ ├── _mixins.scss │ └── _variables.scss └── HELP-US-OUT.txt ├── README.md ├── sandbox.css ├── index-fr.html ├── index-es.html ├── index-it.html ├── index-mobile.html ├── index-pt.html ├── index-hu.html ├── index-ja.html ├── index-en.html ├── index-hi.html ├── js ├── language.js ├── zh-CN.js ├── ja.js ├── download.js ├── cz.js ├── en-US.js ├── hi.js ├── hu.js ├── it.js ├── pt.js ├── fr.js ├── es.js ├── fet_vsparms.js ├── fet_vsp.js └── hammer.min.js ├── index_bjt.html ├── index.html └── index-lang.html /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/favicon.ico -------------------------------------------------------------------------------- /icons/X red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/X red.png -------------------------------------------------------------------------------- /icons/grid.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid.eps -------------------------------------------------------------------------------- /icons/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid.png -------------------------------------------------------------------------------- /icons/X black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/X black.png -------------------------------------------------------------------------------- /icons/grid ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid ppt.png -------------------------------------------------------------------------------- /icons/rotate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/rotate.png -------------------------------------------------------------------------------- /icons/rotate90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/rotate90.png -------------------------------------------------------------------------------- /icons/spacer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/spacer.png -------------------------------------------------------------------------------- /Circuit-Sandbox.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/Circuit-Sandbox.pptx -------------------------------------------------------------------------------- /images/42image_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/images/42image_1.png -------------------------------------------------------------------------------- /images/42image_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/images/42image_2.png -------------------------------------------------------------------------------- /Translation-table.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/Translation-table.docx -------------------------------------------------------------------------------- /icons/Green check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/Green check.png -------------------------------------------------------------------------------- /icons/grid thin ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid thin ppt.png -------------------------------------------------------------------------------- /icons/rotate90_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/rotate90_18.png -------------------------------------------------------------------------------- /icons/X black 18 x 18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/X black 18 x 18.png -------------------------------------------------------------------------------- /icons/grid ppt 18x18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid ppt 18x18.png -------------------------------------------------------------------------------- /icons/grid thin ppt 18x18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid thin ppt 18x18.png -------------------------------------------------------------------------------- /icons/green check ppt 18x13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/green check ppt 18x13.png -------------------------------------------------------------------------------- /icons/green check ppt 24x18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/green check ppt 24x18.png -------------------------------------------------------------------------------- /icons/18px-Cut_font_awesome.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Cut_font_awesome.svg.png -------------------------------------------------------------------------------- /icons/18px-Ok_font_awesome.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Ok_font_awesome.svg.png -------------------------------------------------------------------------------- /icons/200px-Ok_font_awesome.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/200px-Ok_font_awesome.svg.png -------------------------------------------------------------------------------- /icons/Reorder_font_awesome.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/Reorder_font_awesome.svg.png -------------------------------------------------------------------------------- /icons/18px-Copy_font_awesome.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Copy_font_awesome.svg.png -------------------------------------------------------------------------------- /icons/18px-Paste_font_awesome.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Paste_font_awesome.svg.png -------------------------------------------------------------------------------- /icons/18px-Remove_font_awesome.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Remove_font_awesome.svg.png -------------------------------------------------------------------------------- /icons/Icons for Circuit Sandbox.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/Icons for Circuit Sandbox.pptx -------------------------------------------------------------------------------- /font-awesome-4.6.3/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /icons/Align_justify_font_awesome.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/Align_justify_font_awesome.svg.png -------------------------------------------------------------------------------- /icons/18px-Question_sign_font_awesome.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Question_sign_font_awesome.svg.png -------------------------------------------------------------------------------- /font-awesome-4.6.3/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /font-awesome-4.6.3/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /font-awesome-4.6.3/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /font-awesome-4.6.3/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/screen-reader.less: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { .sr-only(); } 5 | .sr-only-focusable { .sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { @include sr-only(); } 5 | .sr-only-focusable { @include sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/HELP-US-OUT.txt: -------------------------------------------------------------------------------- 1 | I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, 2 | Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, 3 | comprehensive icon sets or copy and paste your own. 4 | 5 | Please. Check it out. 6 | 7 | -Dave Gandy 8 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | @import "screen-reader"; 19 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | @import "screen-reader.less"; 19 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .@{fa-css-prefix}-pull-left { float: left; } 11 | .@{fa-css-prefix}-pull-right { float: right; } 12 | 13 | .@{fa-css-prefix} { 14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .@{fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .#{$fa-css-prefix}-pull-left { float: left; } 11 | .#{$fa-css-prefix}-pull-right { float: right; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .#{$fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), 9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .@{fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /icons/rotate90_18.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | R 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Circuit Sandbox 2 | 3 | A simulator for experimenting with circuits, written entirely in Javascript. 4 | 5 | Click... draw... simulate. There's no installation. 6 | 7 | A teaching tool for [spinningnumbers.org](https://spinningnumbers.org). 8 | 9 | Circuit Sandbox is available in, 10 | * English, 11 | * Spanish, (courtesy of Khan Academy volunteer translators) 12 | * Simplified Chinese, (courtesy of GitHub user Zhu Hao) 13 | * Japanese, (courtesy of my friend Leslie Shiozaki, a professional translator) 14 | * Hindi, (courtesy of Aniruddh Pratap Singh, a 12th grade student who wants to become an engineer.) 15 | * Portuguese, (courtesy of Luís F. V. Peres, graduando em engenharia elétrica de Universidade de São Paulo) 16 | * Hungarian, (courtesy of Török Attila) 17 | * French, (contributed by Laurent Defoy, Institute De La Providence Herve, Belgium) 18 | * Italian, (contributed by Paolo Giarrusso) 19 | 20 | [Circuit Sandbox documentation](https://spinningnumbers.org/a/circuit-sandbox.html) 21 | 22 | [Circuit Sandbox simulator](https://spinningnumbers.org/circuit-sandbox/index.html) -------------------------------------------------------------------------------- /sandbox.css: -------------------------------------------------------------------------------- 1 | * {font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;} 2 | 3 | html { 4 | --background-color: #fdfdfd; 5 | --text-color: #000; 6 | --select-background: #F6F7F7; 7 | --select-border: 1px solid #D6D8DA; // KA gray85 D6D8DA 8 | height: 100%; 9 | } 10 | @media (prefers-color-scheme: dark) { 11 | html { 12 | --background-color: #353535; 13 | --text-color: #BABEC2; 14 | --select-background: #353535; // $grey-color-darkish 15 | --select-border: 1px solid #D6D8DA; // KA gray85 D6D8DA 16 | } 17 | } 18 | 19 | body {background-color:var(--background-color); 20 | height: 100%; 21 | margin: 0.5em; 22 | display: flex; 23 | align-items: center; 24 | justify-content: center; 25 | flex-direction: column; 26 | } 27 | 28 | p {color:var(--text-color);} 29 | 30 | select { 31 | font-size: 15px; 32 | color: var(--text-color); 33 | border: var(--select-border); 34 | background: var(--select-background); 35 | border-radius: 4px; 36 | } 37 | 38 | a { color: #3C91E5; text-decoration: none; } 39 | a:hover { text-decoration: underline; } -------------------------------------------------------------------------------- /icons/grid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 18 | -------------------------------------------------------------------------------- /index-fr.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Circuit Sandbox 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Circuit Sandbox en français

27 |

From spinningnumbers.org... page d'aide (help)

28 |

schematic.js © 2017-2021 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

29 | 30 | -------------------------------------------------------------------------------- /index-es.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Circuit Sandbox 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Circuit Sandbox en español

27 |

From spinningnumbers.org... página de ayuda (help)

28 |

schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

29 | 30 | -------------------------------------------------------------------------------- /index-it.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Circuit Sandbox 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Circuit Sandbox in italiano

27 |

From spinningnumbers.org... página de ayuda (help)

28 |

schematic.js © 2017-2023 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

29 | 30 | -------------------------------------------------------------------------------- /index-mobile.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Circuit Sandbox 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Circuit Sandbox simulator

27 |

From spinningnumbers.org... help page

28 |

schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

29 | 30 | 31 | -------------------------------------------------------------------------------- /index-pt.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Circuit Sandbox 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Circuit Sandbox em português

27 |

From spinningnumbers.org... página de ajuda (help)

28 |

schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

29 | 30 | -------------------------------------------------------------------------------- /index-hu.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Áramköri homokozó 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Áramköri Homokozó magyarul (Circuit Sandbox in Hungarian)

27 |

From spinningnumbers.org... Súgó oldal (help)

28 |

schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

29 | 30 | -------------------------------------------------------------------------------- /index-ja.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | サーキットサンドボックスの Circuit Sandbox 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Circuit Sandbox simulator 日本語で (Japanese)

27 |

From spinningnumbers.org... サーキットサンドボックスのヘルプ (help)

28 |

schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

29 | 30 | -------------------------------------------------------------------------------- /index-en.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Circuit Sandbox 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Circuit Sandbox simulator from spinningnumbers.orghelpgithub

27 |

© 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

28 | 29 | -------------------------------------------------------------------------------- /index-hi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | सर्किट सैंडबॉक्स (Circuit Sandbox) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Circuit Sandbox simulator हिंदी में (Hindi)

27 |

From spinningnumbers.org... सर्किट सैंडबॉक्स मदद पृष्ठ (help)

28 |

schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

29 | 30 | -------------------------------------------------------------------------------- /js/language.js: -------------------------------------------------------------------------------- 1 | function switchLanguage(_lang) { 2 | // Source the proper translation table (i18n) based on lang 3 | var head = document.getElementsByTagName('head')[0]; 4 | var script = document.createElement('script'); 5 | script.type = 'text/javascript'; 6 | switch (_lang) { 7 | case 'es': 8 | script.src = 'js/es.js'; 9 | break; 10 | case 'fr': 11 | script.src = 'js/fr.js'; 12 | break; 13 | case 'it': 14 | script.src = 'js/it.js'; 15 | break; 16 | case 'ja': 17 | script.src = 'js/ja.js'; 18 | break; 19 | case 'hu': 20 | script.src = 'js/hu.js'; 21 | break; 22 | case 'hi': 23 | script.src = 'js/hi.js'; 24 | break; 25 | case 'pt': 26 | case 'pt-BR': 27 | case 'pt-PT': 28 | script.src = 'js/pt.js'; 29 | break; 30 | case 'zh': 31 | case 'zh-CN': 32 | script.src = 'js/zh-CN.js'; 33 | break; 34 | case 'cz': 35 | script.src = 'js/cz.js'; 36 | break; 37 | default: 38 | script.src = 'js/en-US.js'; 39 | } 40 | document.head.appendChild(script); 41 | } 42 | 43 | var browserLang = navigator.language; // detect browser language 44 | var userLang = window.localStorage.getItem('language'); // detect language preference saved in the browser's localStorage 45 | var lang = userLang ? userLang : browserLang; // lang is also used in index.html to set the dropdown box value. 46 | switchLanguage(lang); // select the proper translation table i18n variable 47 | // lang is also used by index.html to set the dropdown box value. 48 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | .fa-icon-rotate(@degrees, @rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; 16 | -webkit-transform: rotate(@degrees); 17 | -ms-transform: rotate(@degrees); 18 | transform: rotate(@degrees); 19 | } 20 | 21 | .fa-icon-flip(@horiz, @vert, @rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; 23 | -webkit-transform: scale(@horiz, @vert); 24 | -ms-transform: scale(@horiz, @vert); 25 | transform: scale(@horiz, @vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | .sr-only() { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | .sr-only-focusable() { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /font-awesome-4.6.3/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | @mixin fa-icon-rotate($degrees, $rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; 16 | -webkit-transform: rotate($degrees); 17 | -ms-transform: rotate($degrees); 18 | transform: rotate($degrees); 19 | } 20 | 21 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; 23 | -webkit-transform: scale($horiz, $vert); 24 | -ms-transform: scale($horiz, $vert); 25 | transform: scale($horiz, $vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | @mixin sr-only { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | @mixin sr-only-focusable { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /icons/make_icon_uri.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Make an icon 4 | 5 | 6 | 7 |

How to make an icon uri for Circuit Sandbox

8 | 9 |

PNG images are created in PowerPoint file "Illustration Fodder.ppt", in the Circuit Siulator icons/ folder 10 | 11 |

Icons with PowerPoint 12 |

17 |

Icons with Adobe Illustrator 18 |

23 | 24 |

31 | 32 |

These instructions come from: 33 |

https://www.abeautifulsite.net/convert-an-image-to-a-data-uri-with-your-browser/ 34 | 35 | 36 | 37 | 38 |

39 | 40 |

spacer icon

41 | 42 | 43 | 44 |

45 | 46 | 47 | 48 | 49 | 50 |

51 |

52 | 53 |

54 | 55 | 56 |

57 | 58 |

59 | 60 |

61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /index_bjt.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Circuit Sandbox 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

Circuit Sandbox simulator

27 |

From spinningnumbers.org... help page

28 |

schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS

29 | 30 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | Circuit Sandbox 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |

35 | Circuit Sandbox simulator         36 | spinningnumbers.org ⁓ 37 | help ⁓ 38 | github         39 | 40 | 52 |

53 | 63 | 64 |

© 2011, 2018 MIT EECS, © 2012 EdX, © 2016-2024 Spinning Numbers

65 | 66 | 67 | -------------------------------------------------------------------------------- /index-lang.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | Circuit Sandbox 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 60 | 61 | 68 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 |

84 | Circuit Sandbox simulator         85 | spinningnumbers.org ⁓ 86 | help ⁓ 87 | github         88 | 89 | 99 |

100 | 110 | 111 |

© 2016-2021 Willy McAllister, © 2012 EdX, © 2011, 2018 MIT EECS

112 | 113 | 114 | -------------------------------------------------------------------------------- /js/zh-CN.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | error1: '抱歉,启动原理图工具时出现浏览器错误。我们建议使用最新版本的Firefox和Chrome。', 3 | Ground_connection: '接地连接', 4 | Node_label: '节点标签', 5 | Voltage_source: '电压源', 6 | Current_source: '电流源', 7 | Resistor: '电阻', 8 | Capacitor: '电容', 9 | Inductor: '电感', 10 | Op_Amp: '运算放大器', 11 | Diode: '二极管', 12 | NFet: 'N沟道MOS管', 13 | PFet: 'P沟道MOS管', 14 | NPN: 'NPN', 15 | PNP: 'PNP', 16 | Voltage_probe: '电压探头', 17 | Current_probe: '电流探头', 18 | drag_onto_diagram: ': 拖动或点击插入', 19 | Help: '帮助:显示帮助页面', 20 | Grid: '网格:切换网格显示', 21 | Link_tip: '链接:分享电路的链接', 22 | Cut: '剪切选定的组件到剪贴板', 23 | Copy:'将选定的组件复制到剪贴板', 24 | Paste:'将剪贴板粘贴到原理图上', 25 | Delete:'删除选定的组件', 26 | Rotate:'旋转选定的组件', 27 | Save_netlist: '保存网表', 28 | Open_netlist: '打开网表', 29 | Select_netlist: '选择网表', 30 | Perform_DC_Analysis: '执行直流分析', 31 | DC_Analysis: '直流分析', 32 | Perform_AC_Analysis: '执行交流小信号分析', 33 | Perform_Transient_Analysis: '执行瞬态分析', 34 | Transient_Analysis: '瞬态分析', 35 | Edit_Properties: '编辑属性', 36 | Link: '链接', 37 | Sharable_Link: '分享链接', 38 | 39 | points_per_decade: 'Number of points/decade', 40 | Starting_frequency: '开始频率 (Hz)', 41 | Ending_frequency: '结束频率 (Hz)', 42 | source_for_ac: '需要交流分析的电压或电流源的名字', 43 | AC_Analysis_add_a_voltage_probe: '交流分析:在电路图中添加一个电压探头!', 44 | AC_Analysis: '交流分析', 45 | Zero_ac_response: '交流响应为0,DB尺度上为负无穷', 46 | Near_zero_ac_response: '接近零交流响应, 删除 ', 47 | probe: ' 探针', 48 | 49 | // Alerts and warnings from the circuit simulator 50 | Alert: '警告', 51 | ckt_alert1: '警告!电路有电压源回路或电源短路或电流探头短路,请移除导致短路的电源或导线。', 52 | ckt_alert2: '警告!模拟器可能会产生无意义的结果,或者由于非法电路没有结果。', 53 | ckt_warning1: '警告!两个电路元件共享相同的名称', 54 | ckt_alert3: '请至少连接一个接地线。', 55 | ckt_alert4: '牛顿法失败了,你电流源是否有接地?', 56 | ckt_alert5: '牛顿法失败了,它可能是你的电路,也可能是我们的模拟器出错了。', 57 | ckt_alert6: 'DC分析失败,尝试从零开始进行瞬态分析。', 58 | ckt_alert7: 'AC 指向未知的源 ', 59 | ckt_alert8: 'AC 分析失败, 未知源', 60 | 61 | //ckt_error1: 'M行不匹配b或列与x不匹配。', 62 | //ckt_error2: 'A的行或列对B太大', 63 | //ckt_error3: 'A的行或列对于C来说太大', 64 | //ckt_error4: '标量a和标量b必须是标量或数组', 65 | //ckt_error5: '行或列 > dest的行或列', 66 | //ckt_error6: '行或列 > dest的列或行', 67 | 68 | log_Frequency: 'log10(频率单位 Hz)', 69 | degrees: 'degrees', 70 | AC_Phase: 'AC 相位', 71 | AC_Magnitude: 'AC 幅度', 72 | 73 | Minimum_number_of_timepoints: '最少数量的时间点', 74 | Stop_time_seconds: '停止时间 (seconds)', 75 | tstop_lbl: '停止时间', 76 | Transient_Analysis_add_a_probe: '瞬态分析:为图表添加一个探针!', 77 | 78 | //Use creating phrasing to get this right: 79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ' which is not an actual circuit node'); 80 | The: '这个 ', 81 | probe_is_connected_to_node: ' 探针被链接到节点 ', 82 | which_is_not_an_actual_circuit_node: ' 不是一个真实的电路节点', 83 | 84 | Voltage: '电压', 85 | Current: '电流', 86 | Time: '时间', 87 | Node_has_two_conflicting_labels: '节点有两个相互冲突的标签: ', 88 | 89 | DC_value: '直流值', 90 | 91 | impulse: '冲激信号', 92 | Height: '高度', 93 | Width: '宽度 (secs)', 94 | 95 | step: '阶跃信号', 96 | Initial_value: '初始值', 97 | Plateau_value: '稳态值', 98 | Delay_until_step: '延迟到阶跃发生 (secs)', 99 | Rise_time: '上升时间 (secs)', 100 | 101 | square: '方波信号', 102 | Frequency: '频率 (Hz)', 103 | Duty_cycle: '占空比 (%)', 104 | 105 | triangle: '三角波', 106 | ramp: '坡道', 107 | Slope: '坡 (伏/秒)', 108 | 109 | pwl: '分段线性', 110 | pwl_repeating: '分段线性 (重复)', 111 | Comma_separated_list: '逗号分隔的交替时间和值的列表', 112 | 113 | pulse: '脉冲信号', 114 | Delay_until_pulse: '延迟到脉冲发生 (secs)', 115 | Time_for_first_transition: '第一次跳变时间 (secs)', 116 | Time_for_second_transition: '第二次跳变时间 (secs)', 117 | Pulse_width: '脉冲宽度 (secs)', 118 | Period: '间隔 (secs)', 119 | 120 | sin: '正弦信号', 121 | Offset_value: '偏移值', 122 | Amplitude: '振幅', 123 | Delay_until_sin_starts: '延迟到正弦开始 (secs)', 124 | Phase_offset_degrees: '相位偏移 (degrees)', 125 | 126 | Circuit_Sandbox_Help: 'CIRCUIT SANDBOX 帮助', 127 | name: '名字', 128 | value: '值', 129 | label: '标签', 130 | r: 'R', 131 | c: 'C', 132 | l: 'L', 133 | color: '颜色', 134 | offset: '偏移', 135 | area: 'Area', 136 | type: '类型', 137 | normal: 'normal', 138 | ideal: 'ideal', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: 'W/L', 142 | lambda: 'λ', 143 | A: 'A', 144 | Plot_color: '绘制颜色', 145 | Plot_offset: '绘图偏移', 146 | dc: 'dc', 147 | 148 | Gain: 'A', 149 | Rin: 'Rin', 150 | Rout: 'Rout', 151 | 152 | red: '红色', 153 | green: '绿色', 154 | blue: '蓝色', 155 | cyan: '青色', 156 | magenta: '品红色', 157 | yellow: '黄色', 158 | orange: '橙色', 159 | black: '黑色', 160 | xaxis: 'x 轴', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: '𝛼F', 165 | alphaR: '𝛼R', 166 | 167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.", 168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.", 169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.", 170 | delete_ctl: "Delete component. Also try 'Del'.", 171 | 172 | last_line: '最后一行,没有逗号' 173 | }; 174 | 175 | var strSHelp = "CIRCUIT SANDBOX 帮助\n\n"; //embedded Help 176 | var strAddC = "添加元件:点击零件箱中的零件,然后放置到原理图来添加零件。\n\n"; 177 | var strAddW = "添加导线:导线从连接点开始(空心圆圈)。触摸连接以开始连线,拖动和释放。\n\n"; 178 | var strSel = "选择:使用按住鼠标按键拖动产生的矩形选择组件。 \n(桌面:)按住Shift键单击以包含其他组件。\n\n"; 179 | var strMove = "移动:触摸并拖动到新的位置。\n\n"; 180 | var strDel = "删除:点击选择,然后点击X图标或点击退格。\n\n"; 181 | var strRot = "旋转/镜像:单击以选择,然后单击旋转图标或键入字母 \"r\" 来旋转90度. 重复更多的旋转和镜像(共8个)。\n\n"; 182 | var strView = ""; 183 | var strProp = "属性:双击组件可以改变属性,如电阻或电压。\n\n"; 184 | var strNum = "可以使用工程符号输入数字:\n\ 185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\ 186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15"; 187 | -------------------------------------------------------------------------------- /js/ja.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | error1: '回路図ツールの開始にあたってブラウザのエラーがありました。最新バージョンの Firefox および Chrome の使用をお勧めします。', 3 | Ground_connection: 'アース接続', 4 | Node_label: 'ノードラベル', 5 | Voltage_source: '電圧源', 6 | Current_source: '電流源', 7 | Resistor: '抵抗器', 8 | Capacitor: 'コンデンサ', 9 | Inductor: 'インダクタ', 10 | Op_Amp: 'オペアンプ', 11 | Diode: 'ダイオード', 12 | NFet: 'NFet', 13 | PFet: 'PFet', 14 | NPN: 'NPN', 15 | PNP: 'PNP', 16 | Voltage_probe: '電圧プローブ', 17 | Current_probe: '電流プローブ', 18 | drag_onto_diagram: ': ドラッグまたはタップして挿入する', 19 | Help: 'ヘルプ: ヘルプページを表示する', 20 | Grid: 'グリッド: グリッド表示を切り替える', 21 | Link_tip: 'リンク: 回路へのリンクを共有する', 22 | Cut: '選択したコンポーネントをクリップボードにカットする', 23 | Copy:'選択したコンポーネントをクリップボードにコピーする', 24 | Paste:'クリップボードを回路図に貼り付ける', 25 | Delete:'選択したコンポーネントを削除する', 26 | Rotate:'選択したコンポーネントを回転させる', 27 | Save_netlist: 'ネットリストを保存する', 28 | Open_netlist: 'ネットリストを開く', 29 | Select_netlist: 'ネットリストを選択する', 30 | Perform_DC_Analysis: 'DC 解析を実行する', 31 | DC_Analysis: 'DC 解析', 32 | Perform_AC_Analysis: 'AC 小信号解析を実行する', 33 | Perform_Transient_Analysis: '過渡解析を実行する', 34 | Transient_Analysis: '過渡解析', 35 | Edit_Properties: 'プロパティを編集する', 36 | Link: 'リンク', 37 | Sharable_Link: '共有可能なリンク', 38 | 39 | points_per_decade: 'ポイント数/ディケード', 40 | Starting_frequency: '開始周波数 (Hz) ', 41 | Ending_frequency: '終了周波数 (Hz)', 42 | source_for_ac: 'AC の V または I ソース名', 43 | AC_Analysis_add_a_voltage_probe: 'AC 解析: 電圧プローブを図に追加してください!', 44 | AC_Analysis: 'AC 解析', 45 | Zero_ac_response: 'AC 応答ゼロ、dB スケールで無限大', 46 | Near_zero_ac_response: 'AC 応答がゼロに近い、取り除く', 47 | probe: ' プローブ', 48 | 49 | // Alerts and warnings from the circuit simulator 50 | Alert: '警報', 51 | ckt_alert1: '警告! 回路に電圧源ループがある、あるいは電源または電流プローブがワイヤで短絡しています。短絡の原因となっている電源またはワイヤを取り除いてください。', 52 | ckt_alert2: '警告! シミュレータが無意味な結果をもたらす、または不正回路が原因で結果が得られないことがあります。', 53 | ckt_warning1: '警告! 2つの回路要素が同じ名前を共有しています。', 54 | ckt_alert3: '少なくとも1つはアース接続してください。', 55 | ckt_alert4: 'ニュートン法に失敗しました。電流源には接地への導電性パスがありますか?', 56 | ckt_alert5: 'ニュートン法に失敗しました。あなたの回路またはこちらのシミュレータに問題があるかもしれません。', 57 | ckt_alert6: 'DC に失敗しました。過渡解析をゼロから始めてください。', 58 | ckt_alert7: 'AC 解析が未知のソースに言及しています: ', 59 | ckt_alert8: 'AC 解析に失敗しました。未知のソース。', 60 | 61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.', 62 | //ckt_error2: 'Row or columns of A too large for B', 63 | //ckt_error3: 'Row or columns of A too large for C', 64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays', 65 | //ckt_error5: 'Rows or cols > rows or cols of dest', 66 | //ckt_error6: 'Rows or cols > cols or rows of dest', 67 | 68 | log_Frequency: 'ログ10(周波数 Hz)', 69 | degrees: '度', 70 | AC_Phase: '交流位相', 71 | AC_Magnitude: 'AC の大きさ', 72 | 73 | Minimum_number_of_timepoints: '時点の最小数', 74 | Stop_time_seconds: '停止時間 (秒)', 75 | tstop_lbl: '停止時間', 76 | Transient_Analysis_add_a_probe: '過渡解析: プローブを図に追加してください!', 77 | 78 | //Use creating phrasing to get this right: 79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ' which is not an actual circuit node'); 80 | The: ' ', 81 | probe_is_connected_to_node: ' プローブは、実際の回路ノードでない ', 82 | which_is_not_an_actual_circuit_node: ' ノードに接続されている', 83 | 84 | Voltage: '電圧', 85 | Current: '電流', 86 | Time: '時間', 87 | Node_has_two_conflicting_labels: 'ノードには2つの相反するラベルがついている: ', 88 | 89 | DC_value: 'DC 値', 90 | 91 | impulse: 'インパルス', 92 | Height: '高さ', 93 | Width: '幅 (秒)', 94 | 95 | step: 'ステップ', 96 | Initial_value: '初期値', 97 | Plateau_value: 'プラトー値', 98 | Delay_until_step: 'ステップまで遅らせる (秒)', 99 | Rise_time: '立ち上がり時間 (秒)', 100 | 101 | square: '四角', 102 | Frequency: '周波数 (Hz)', 103 | Duty_cycle: 'デューティサイクル (%)', 104 | 105 | triangle: '三角', 106 | ramp: 'ランプ', 107 | Slope: 'スロープ (ボルト/秒)', 108 | 109 | pwl: 'pwl', 110 | pwl_repeating: 'pwl (反復)', 111 | Comma_separated_list: '時間と値が交互になったコンマ分離リスト', 112 | 113 | pulse: 'パルス', 114 | Delay_until_pulse: 'パルスまで遅らせる (秒)', 115 | Time_for_first_transition: '最初の移行までの時間 (秒)', 116 | Time_for_second_transition: '2番目の移行までの時間 (秒)', 117 | Pulse_width: 'パルス幅 (秒)', 118 | Period: '期間 (秒)', 119 | 120 | sin: 'サイン', 121 | Offset_value: 'オフセット値', 122 | Amplitude: '振幅', 123 | Delay_until_sin_starts: 'サイン開始まで遅らせる (秒)', 124 | Phase_offset_degrees: 'フェーズオフセット (度)', 125 | 126 | Circuit_Sandbox_Help: 'サーキットサンドボックスのヘルプ', 127 | name: '名称', 128 | value: '値', 129 | label: 'ラベル', 130 | r: 'R', 131 | c: 'C', 132 | l: 'L', 133 | color: 'カラー', 134 | offset: 'オフセット', 135 | area: 'エリア', 136 | type: 'Type', 137 | normal: '標準', 138 | ideal: '理想的', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: '幅/長さ', 142 | lambda: 'λ', 143 | A: 'A', 144 | Plot_color: 'プロットカラー', 145 | Plot_offset: 'プロットオフセット', 146 | dc: 'dc', 147 | 148 | Gain: 'A', 149 | Rin: 'Rin', 150 | Rout: 'Rout', 151 | 152 | red: 'レッド', 153 | green: 'グリーン', 154 | blue: 'ブルー', 155 | cyan: 'シアン', 156 | magenta: 'マゼンタ', 157 | yellow: 'イエロー', 158 | orange: 'オレンジ', 159 | black: 'ブラック', 160 | xaxis: 'x 軸', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: '𝛼F', 165 | alphaR: '𝛼R', 166 | 167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.", 168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.", 169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.", 170 | delete_ctl: "Delete component. Also try 'Del'.", 171 | 172 | last_line: '最後の行、コンマ無し' 173 | }; 174 | 175 | var strSHelp = "サーキットサンドボックスのヘルプ \n\n"; //embedded Help 176 | var strAddC = "コンポーネントを追加する: パーツビンのパーツをタップし、次に回路図をタップする。\n\n"; 177 | var strAddW = "ワイヤを追加する: 接続ポイント (白丸) にタッチして始める。ドラッグする。リリースする。\n\n"; 178 | var strSel = "選択する: 長方形をドラッグしてコンポーネントを選ぶ。 \n(デスクトップ:) 別のコンポーネントも含めるには、シフトクリックする。\n\n"; 179 | var strMove = "動かす: タッチして新しい場所にドラッグする。\n\n"; 180 | var strDel = "削除する: タップして選び、次に X アイコンをタップするまたはバックスペースキーを押す。\n\n"; 181 | var strRot = "回転/反転させる: クリックして選び、次に回転アイコンをクリックするか、90度回転の場合は r のキーをタイプする。さらに回転/反転させたい場合は繰り返す (最高8回まで)。\n\n"; 182 | var strView = ""; 183 | var strProp = "プロパティー: プロパティーを変えるにはコンポーネントをタップする。\n\n"; 184 | var strNum = "エンジニアリング表記法を使って数字を入れることもできる。\n\ 185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\ 186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15"; 187 | -------------------------------------------------------------------------------- /js/download.js: -------------------------------------------------------------------------------- 1 | //download.js v4.2, by dandavis; 2008-2016. [CCBY2] see http://danml.com/download.html for tests/usage 2 | // v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime 3 | // v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs 4 | // v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling. 5 | // v4 adds AMD/UMD, commonJS, and plain browser support 6 | // v4.1 adds url download capability via solo URL argument (same domain/CORS only) 7 | // v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors 8 | // https://github.com/rndme/download 9 | 10 | (function (root, factory) { 11 | if (typeof define === 'function' && define.amd) { 12 | // AMD. Register as an anonymous module. 13 | define([], factory); 14 | } else if (typeof exports === 'object') { 15 | // Node. Does not work with strict CommonJS, but 16 | // only CommonJS-like environments that support module.exports, 17 | // like Node. 18 | module.exports = factory(); 19 | } else { 20 | // Browser globals (root is window) 21 | root.download = factory(); 22 | } 23 | }(this, function () { 24 | 25 | return function download(data, strFileName, strMimeType) { 26 | 27 | var self = window, // this script is only for browsers anyway... 28 | defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads 29 | mimeType = strMimeType || defaultMime, 30 | payload = data, 31 | url = !strFileName && !strMimeType && payload, 32 | anchor = document.createElement("a"), 33 | toString = function(a){return String(a);}, 34 | myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString), 35 | fileName = strFileName || "download", 36 | blob, 37 | reader; 38 | myBlob= myBlob.call ? myBlob.bind(self) : Blob ; 39 | 40 | if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback 41 | payload=[payload, mimeType]; 42 | mimeType=payload[0]; 43 | payload=payload[1]; 44 | } 45 | 46 | 47 | if(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument 48 | fileName = url.split("/").pop().split("?")[0]; 49 | anchor.href = url; // assign href prop to temp anchor 50 | if(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path: 51 | var ajax=new XMLHttpRequest(); 52 | ajax.open( "GET", url, true); 53 | ajax.responseType = 'blob'; 54 | ajax.onload= function(e){ 55 | download(e.target.response, fileName, defaultMime); 56 | }; 57 | setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return: 58 | return ajax; 59 | } // end if valid url? 60 | } // end if url? 61 | 62 | 63 | //go ahead and download dataURLs right away 64 | if(/^data\:[\w+\-]+\/[\w+\-]+[,;]/.test(payload)){ 65 | 66 | if(payload.length > (1024*1024*1.999) && myBlob !== toString ){ 67 | payload=dataUrlToBlob(payload); 68 | mimeType=payload.type || defaultMime; 69 | }else{ 70 | return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs: 71 | navigator.msSaveBlob(dataUrlToBlob(payload), fileName) : 72 | saver(payload) ; // everyone else can save dataURLs un-processed 73 | } 74 | 75 | }//end if dataURL passed? 76 | 77 | blob = payload instanceof myBlob ? 78 | payload : 79 | new myBlob([payload], {type: mimeType}) ; 80 | 81 | 82 | function dataUrlToBlob(strUrl) { 83 | var parts= strUrl.split(/[:;,]/), 84 | type= parts[1], 85 | decoder= parts[2] == "base64" ? atob : decodeURIComponent, 86 | binData= decoder( parts.pop() ), 87 | mx= binData.length, 88 | i= 0, 89 | uiArr= new Uint8Array(mx); 90 | 91 | for(i;i rows or cols of dest', 66 | //ckt_error6: 'Rows or cols > cols or rows of dest', 67 | 68 | log_Frequency: 'log(Frekvence v Hz)', 69 | degrees: 'stupně', 70 | AC_Phase: 'AC Fáze', 71 | AC_Magnitude: 'AC Amplituda', 72 | 73 | Minimum_number_of_timepoints: 'Minimální počet časových bodů', 74 | Stop_time_seconds: 'Čas zastavení (s)', 75 | tstop_lbl: 'čas zastavení', 76 | Transient_Analysis_add_a_probe: 'Přechodová analýza: přidejte sondu do schématu!', 77 | 78 | //Use creative phrasing to get this sentence to come out right: 79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node'); 80 | The: '', 81 | probe_is_connected_to_node: 'Sonda je připojená k uzlu ', 82 | which_is_not_an_actual_circuit_node: ', který není uzlem obvodu.', 83 | 84 | Voltage: 'Napětí', 85 | Current: 'Proud', 86 | Time: 'Čas', 87 | Node_has_two_conflicting_labels: 'Uzel má dvě konfliktní označení: ', 88 | 89 | DC_value: 'Stejnosměrná hodnota', 90 | 91 | impulse: 'Impuls', 92 | Height: 'Výška', 93 | Width: 'Šířka (s)', 94 | 95 | step: 'skok', 96 | Initial_value: 'Počáteční hodnota', 97 | Plateau_value: 'Hodnota plató', 98 | Delay_until_step: 'Zpoždění do kroku (s)', 99 | Rise_time: 'Doba náběhu (s)', 100 | 101 | square: 'obdélník', 102 | Frequency: 'Frekvence (Hz)', 103 | Duty_cycle: 'Střída (%)', 104 | 105 | triangle: 'trojúhelník', 106 | ramp: 'rampa', 107 | Slope: 'Sklon (V/s)', 108 | 109 | pwl: 'po částech lineární', 110 | pwl_repeating: 'po částech lineární (opakující se)', 111 | Comma_separated_list: 'Seznam časů a hodnot oddělený čárkami', 112 | 113 | pulse: 'puls', 114 | Delay_until_pulse: 'Zpoždění do pulsu (s)', 115 | Time_for_first_transition: 'Čas pro první přechod (s)', 116 | Time_for_second_transition: 'Čas pro druhý přechod (s)', 117 | Pulse_width: 'Šířka pulsu (s)', 118 | Period: 'Perioda (s)', 119 | 120 | sin: 'sin', 121 | Offset_value: 'Hodnota offsetu', 122 | Amplitude: 'Amplituda', 123 | Delay_until_sin_starts: 'Zpoždění do začátku sinu (s)', 124 | Phase_offset_degrees: 'Fázový posun (stupně)', 125 | 126 | Circuit_Sandbox_Help: 'NÁPOVĚDA CIRCUIT SANDBOX', 127 | name: 'Název', 128 | value: 'Hodnota', 129 | label: 'Označení', 130 | r: 'R', 131 | c: 'C', 132 | l: 'L', 133 | color: 'Barva', 134 | offset: 'Offset', 135 | area: 'Plocha', 136 | type: 'Typ', 137 | normal: 'Normální', 138 | ideal: 'Ideální', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: 'W/L', 142 | lambda: 'λ', 143 | A: 'A', 144 | Plot_color: 'Barva grafu', 145 | Plot_offset: 'Offset grafu', 146 | dc: 'dc', 147 | 148 | Gain: 'A', 149 | Rin: 'Rin', 150 | Rout: 'Rout', 151 | 152 | red: 'červená', 153 | green: 'zelená', 154 | blue: 'modrá', 155 | cyan: 'azurová', 156 | magenta: 'purpurová', 157 | yellow: 'žlutá', 158 | orange: 'oranžová', 159 | black: 'černá', 160 | xaxis: 'osa x', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: '𝛼F', 165 | alphaR: '𝛼R', 166 | last_line: 'poslední řádka, bez čárky' 167 | }; 168 | 169 | var strSHelp = "NÁPOVĚDA CIRCUIT SANDBOX\n\n"; //embedded Help 170 | var strAddC = "Přidat součást: Klepněte na součást v přihrádce součástí a poté klepněte na schéma.\n\n"; 171 | var strAddW = "Přidat vodič: Začněte dotykem na bod připojení (otevřená kružnice). Táhněte a uvolněte.\n\n"; 172 | var strSel = "Vybrat: Přetažením obdélníku vyberte součásti. \n(plocha:) Klepnutím se stisknutou klávesou Shift zahrnete další komponentu.\n\n"; 173 | var strMove = "Přesunout: Dotkněte se a přetáhněte na nové místo.\n\n"; 174 | var strDel = "Smazat: Klepnutím vyberte a poté klepněte na ikonu X nebo stiskněte BACKSPACE.\n\n"; 175 | var strRot = "Rotace/Zrcadlení: Klepnutím vyberte a poté klikněte na ikonu rotace nebo stiskněte písmeno \„r\“ pro otočení o 90. Opakujte pro další rotace a zrcadlení (celkem 8).\n\n"; 176 | var strProp = "Vlastnosti: Dvojitým klepnutím na součást změníte její vlastnosti.\n\n"; 177 | var strNum = "Čísla lze zadávat pomocí inženýrského zápisu, T = 10^12, G = 10^9, M = 10^6, k = 10^3, m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15"; 178 | -------------------------------------------------------------------------------- /js/en-US.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | error1: 'Sorry, there was a browser error in starting the schematic tool. We recommend using the latest versions of Firefox and Chrome.', 3 | Ground_connection: 'Ground connection', 4 | Node_label: 'Node label', 5 | Voltage_source: 'Voltage source', 6 | Current_source: 'Current source', 7 | Resistor: 'Resistor', 8 | Capacitor: 'Capacitor', 9 | Inductor: 'Inductor', 10 | Op_Amp: 'Op Amp', 11 | Diode: 'Diode', 12 | NFet: 'NFet', 13 | PFet: 'PFet', 14 | NPN: 'NPN', 15 | PNP: 'PNP', 16 | Voltage_probe: 'Voltage probe', 17 | Current_probe: 'Current probe', 18 | drag_onto_diagram: ': drag or tap to insert', 19 | Help: 'Help: display the help page', 20 | Grid: 'Grid: toggle grid display', 21 | Link_tip: 'Link: share a link to the circuit', 22 | Cut: 'Cut selected components to the clipboard', 23 | Copy:'Copy selected components to the clipboard', 24 | Paste:'Paste clipboard to the schematic', 25 | Delete:'Delete selected components', 26 | Rotate:'Rotate selected component', 27 | Save_netlist: 'Save netlist', 28 | Open_netlist: 'Open netlist', 29 | Select_netlist: 'Select netlist', 30 | Perform_DC_Analysis: 'Perform DC Analysis', 31 | DC_Analysis: 'DC Analysis', 32 | Perform_AC_Analysis: 'Perform AC Small-Signal Analysis', 33 | Perform_Transient_Analysis: 'Perform Transient Analysis', 34 | Transient_Analysis: 'Transient Analysis', 35 | Edit_Properties: 'Edit Properties', 36 | Link: 'Link', 37 | Sharable_Link: 'Sharable link', 38 | 39 | points_per_decade: 'Number of points/decade', 40 | Starting_frequency: 'Starting frequency (Hz)', 41 | Ending_frequency: 'Ending frequency (Hz)', 42 | source_for_ac: 'Name of V or I source for ac', 43 | AC_Analysis_add_a_voltage_probe: 'AC Analysis: add a voltage probe to the diagram!', 44 | AC_Analysis: 'AC Analysis', 45 | Zero_ac_response: 'Zero ac response, -infinity on dB scale.', 46 | Near_zero_ac_response: 'Near zero ac response, remove ', 47 | probe: ' probe', 48 | 49 | // Alerts and warnings from the circuit simulator 50 | Alert: 'Alert', 51 | ckt_alert1: 'Warning! Circuit has a voltage source loop or a source or current probe shorted by a wire, please remove the source or the wire causing the short.', 52 | ckt_alert2: 'Warning! Simulator might produce meaningless results or no result with illegal circuits.', 53 | ckt_warning1: 'Warning! Two circuit elements share the same name ', 54 | ckt_alert3: 'Please make at least one connection to ground.', 55 | ckt_alert4: 'Newton Method failed, do your current sources have a conductive path to ground?', 56 | ckt_alert5: 'Newton Method failed, it may be your circuit or it may be our simulator.', 57 | ckt_alert6: 'DC failed, trying transient analysis from zero.', 58 | ckt_alert7: 'AC analysis refers to an unknown source, ', 59 | ckt_alert8: 'AC analysis failed, unknown source.', 60 | 61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.', 62 | //ckt_error2: 'Row or columns of A too large for B', 63 | //ckt_error3: 'Row or columns of A too large for C', 64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays', 65 | //ckt_error5: 'Rows or cols > rows or cols of dest', 66 | //ckt_error6: 'Rows or cols > cols or rows of dest', 67 | 68 | log_Frequency: 'log10(Frequency in Hz)', 69 | degrees: 'degrees', 70 | AC_Phase: 'AC Phase', 71 | AC_Magnitude: 'AC Magnitude', 72 | 73 | Minimum_number_of_timepoints: 'Minimum number of time points', 74 | Stop_time_seconds: 'Stop time (seconds)', 75 | tstop_lbl: 'stop time', 76 | Transient_Analysis_add_a_probe: 'Transient Analysis: add a probe to the diagram!', 77 | 78 | //Use creative phrasing to get this sentence to come out right: 79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node'); 80 | The: 'The ', 81 | probe_is_connected_to_node: ' probe is connected to node ', 82 | which_is_not_an_actual_circuit_node: ', which is not an actual circuit node.', 83 | 84 | Voltage: 'Voltage', 85 | Current: 'Current', 86 | Time: 'Time', 87 | Node_has_two_conflicting_labels: 'Node has two conflicting labels: ', 88 | 89 | DC_value: 'DC value', 90 | 91 | impulse: 'impulse', 92 | Height: 'Height', 93 | Width: 'Width (sec)', 94 | 95 | step: 'step', 96 | Initial_value: 'Initial value', 97 | Plateau_value: 'Plateau value', 98 | Delay_until_step: 'Delay until step (sec)', 99 | Rise_time: 'Rise time (sec)', 100 | 101 | square: 'square', 102 | Frequency: 'Frequency (Hz)', 103 | Duty_cycle: 'Duty cycle (%)', 104 | 105 | triangle: 'triangle', 106 | ramp: 'ramp', 107 | Slope: 'Slope (volts/sec)', 108 | 109 | pwl: 'pwl', 110 | pwl_repeating: 'pwl (repeating)', 111 | Comma_separated_list: 'Comma-separated list of alternating times and values', 112 | 113 | pulse: 'pulse', 114 | Delay_until_pulse: 'Delay until pulse (sec)', 115 | Time_for_first_transition: 'Time for first transition (sec)', 116 | Time_for_second_transition: 'Time for second transition (sec)', 117 | Pulse_width: 'Pulse width (sec)', 118 | Period: 'Period (sec)', 119 | 120 | sin: 'sin', 121 | Offset_value: 'Offset value', 122 | Amplitude: 'Amplitude', 123 | Delay_until_sin_starts: 'Delay until sin starts (sec)', 124 | Phase_offset_degrees: 'Phase offset (degrees)', 125 | 126 | Circuit_Sandbox_Help: 'CIRCUIT SANDBOX HELP', 127 | name: 'Name', 128 | value: 'Value', 129 | label: 'Label', 130 | r: 'R', 131 | c: 'C', 132 | l: 'L', 133 | color: 'Color', 134 | offset: 'Offset', 135 | area: 'Area', 136 | type: 'Type', 137 | normal: 'normal', 138 | ideal: 'ideal', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: 'W/L', 142 | lambda: 'λ', 143 | A: 'A', 144 | Plot_color: 'Plot color', 145 | Plot_offset: 'Plot offset', 146 | dc: 'dc', 147 | 148 | Gain: 'A', 149 | Rin: 'Rin', 150 | Rout: 'Rout', 151 | 152 | red: 'red', 153 | green: 'green', 154 | blue: 'blue', 155 | cyan: 'cyan', 156 | magenta: 'magenta', 157 | yellow: 'yellow', 158 | orange: 'orange', 159 | black: 'black', 160 | xaxis: 'x axis', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: '𝛼F', 165 | alphaR: '𝛼R', 166 | 167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.", 168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.", 169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.", 170 | delete_ctl: "Delete component. Also try 'Del'.", 171 | 172 | last_line: 'last line, no comma' 173 | }; 174 | 175 | var strSHelp = "CIRCUIT SANDBOX HELP\n\n"; //embedded Help 176 | var strAddC = "Add component: Tap on a part in the parts bin, then tap on the schematic.\n\n"; 177 | var strAddW = "Add wire: Touch on a connection point (open circle). Drag. Release.\n\n"; 178 | var strSel = "Select: Drag a rectangle to select components. \n(desktop:) Shift-click to include another component.\n\n"; 179 | var strMove = "Move: Touch and drag to a new location.\n\n"; 180 | var strDel = "Delete: Tap to select, then tap the X icon or hit BACKSPACE.\n\n"; 181 | var strRot = "Rotate/Reflect: Click to select, then click on the rotation icon or type the letter \"r\" to rotate 90. Repeat for more rotations and reflections (8 total).\n\n"; 182 | var strView = "Zoom using a scroll wheel or trackpad\nPan the schematic using Alt-drag\n\n"; 183 | var strProp = "Properties: Double tap on a component to change its properties.\n\n"; 184 | var strNum = "Numbers may be entered using engineering notation,\n\ 185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\ 186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15"; 187 | -------------------------------------------------------------------------------- /js/hi.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | error1: 'क्षमा करें, योजनाबद्ध टूल को शुरू करने में एक ब्राउज़र त्रुटि थी। हम फ़ायरफ़ॉक्स और क्रोम के नवीनतम संस्करणों का उपयोग करने की सलाह देते हैं', 3 | Ground_connection: 'जमीनी कनेक्शन', 4 | Node_label: 'नोड लेबल', 5 | Voltage_source: 'वोल्टेज स्रोत', 6 | Current_source: 'विद्युत धारा स्रोत', 7 | Resistor: 'प्रतिरोधक', 8 | Capacitor: 'संधारित्र', 9 | Inductor: 'प्रेरक', 10 | Op_Amp: 'आपरेशनल एम्पलीफायर', 11 | Diode: 'डायोड', 12 | NFet: 'ऐनफेट', 13 | PFet: 'पीफेट', 14 | NPN: 'ऐनपीऐन', 15 | PNP: 'पीऐनपी', 16 | Voltage_probe: 'वोल्टेज की जांच', 17 | Current_probe: 'विद्युत धारा जांच', 18 | drag_onto_diagram: ': डालने के लिए खींचें या टैप करें', 19 | Help: 'सहायता: सहायता पृष्ठ प्रदर्शित करें', 20 | Grid: 'ग्रिड: ग्रिड प्रदर्शन टॉगल करें', 21 | Link_tip: 'लिंक: सर्किट का लिंक साझा करें', 22 | Cut: 'चयनित घटकों को क्लिपबोर्ड पर काटें', 23 | Copy:'चयनित घटकों को क्लिपबोर्ड पर कॉपी करें', 24 | Paste:'योजनाबद्ध के लिए क्लिपबोर्ड पेस्ट करें', 25 | Delete:'चयनित घटकों को हटाएं', 26 | Rotate:'चयनित घटक को घुमाएं', 27 | Save_netlist: 'नेटलिस्ट बचाओ', 28 | Open_netlist: 'नेटलिस्ट खोलें', 29 | Select_netlist: 'नेटलिस्ट का चयन करें', 30 | Perform_DC_Analysis: 'एक डीसी विश्लेषण करें', 31 | DC_Analysis: 'डीसी विश्लेषण', 32 | Perform_AC_Analysis: 'एक एसी लघु-संकेत विश्लेषण करें', 33 | Perform_Transient_Analysis: 'एक क्षणिक विश्लेषण करें', 34 | Transient_Analysis: 'क्षणिक विश्लेषण', 35 | Edit_Properties: 'गुण संपादित करें', 36 | Link: 'संपर्क', 37 | Sharable_Link: 'साझा करने योग्य लिंक', 38 | 39 | points_per_decade: 'अंकों की संख्या / दशक', 40 | Starting_frequency: 'प्रारंभ आवृत्ति (हर्ट्ज)', 41 | Ending_frequency: 'समाप्ति की आवृत्ति (हर्ट्ज)', 42 | source_for_ac: 'एसी के लिए वी या वी स्रोत का नाम', 43 | AC_Analysis_add_a_voltage_probe: 'एसी विश्लेषण: आरेख में एक वोल्टेज जांच जोड़ें!', 44 | AC_Analysis: 'एसी विश्लेषण', 45 | Zero_ac_response: 'शून्य एसी प्रतिक्रिया, -Bf पैमाने पर dB पैमाने पर।', 46 | Near_zero_ac_response: 'शून्य एसी प्रतिक्रिया के पास, निकालें ', 47 | probe: ' जांच', 48 | 49 | // Alerts and warnings from the circuit simulator 50 | Alert: 'चेतावनी', 51 | ckt_alert1: 'चेतावनी! सर्किट में एक वोल्टेज स्रोत लूप या एक तार से छोटा एक स्रोत या विद्युत धारा जांच है, कृपया स्रोत या तार को हटा दें जिससे शॉर्ट हो।', 52 | ckt_alert2: 'चेतावनी! सिम्युलेटर अर्थहीन परिणाम या अवैध सर्किट के साथ कोई परिणाम नहीं दे सकता है', 53 | ckt_warning1: 'चेतावनी! दो सर्किट तत्व एक ही नाम साझा करते हैं। ', 54 | ckt_alert3: 'कृपया जमीन से कम से कम एक संबंध बनाएं।', 55 | ckt_alert4: 'न्यूटन विधि विफल; क्या आपके विद्युत धारा स्रोतों में जमीन तक प्रवाहकीय पथ है?', 56 | ckt_alert5: 'न्यूटन विधि विफल; यह आपका सर्किट हो सकता है या यह हमारा सिम्युलेटर हो सकता है।', 57 | ckt_alert6: 'डीसी विफल रहा, शून्य से क्षणिक विश्लेषण की कोशिश कर रहा है।', 58 | ckt_alert7: 'एसी विश्लेषण अज्ञात स्रोत को संदर्भित करता है ', 59 | ckt_alert8: 'एसी विश्लेषण विफल, अज्ञात स्रोत', 60 | 61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.', 62 | //ckt_error2: 'Row or columns of A too large for B', 63 | //ckt_error3: 'Row or columns of A too large for C', 64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays', 65 | //ckt_error5: 'Rows or cols > rows or cols of dest', 66 | //ckt_error6: 'Rows or cols > cols or rows of dest', 67 | 68 | log_Frequency: 'लॉग10(Hz में फ़्रिक्वेंसी)', 69 | degrees: 'डिग्री', 70 | AC_Phase: 'एसी चरण', 71 | AC_Magnitude: 'एसी परिमाण', 72 | 73 | Minimum_number_of_timepoints: 'न्यूनतम समय बिंदु', 74 | Stop_time_seconds: 'बंद करो समय (सेकंड)', 75 | tstop_lbl: 'रुकने का समय', 76 | Transient_Analysis_add_a_probe: 'क्षणिक विश्लेषण: आरेख में एक जांच जोड़ें!', 77 | 78 | //Use creative phrasing to get this sentence to come out right: 79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node'); 80 | The: '', 81 | probe_is_connected_to_node: ' जांच नोड से जुड़ी है ', 82 | which_is_not_an_actual_circuit_node: ', जो एक वास्तविक सर्किट नोड नहीं है', 83 | 84 | Voltage: 'वोल्टेज', 85 | Current: 'विद्युत धारा', 86 | Time: 'समय', 87 | Node_has_two_conflicting_labels: 'नोड के दो परस्पर विरोधी लेबल हैं: ', 88 | 89 | DC_value: 'डीसी मूल्य', 90 | 91 | impulse: 'आवेग', 92 | Height: 'ऊंचाई', 93 | Width: 'चौड़ाई (सेकंड)', 94 | 95 | step: 'कदम', 96 | Initial_value: 'प्रारंभिक मूल्य', 97 | Plateau_value: 'पठार का मूल्य', 98 | Delay_until_step: 'कदम तक देरी (सेकंड)', 99 | Rise_time: 'उदय समय (सेकंड)', 100 | 101 | square: 'वर्ग', 102 | Frequency: 'फ्रीक्वेंसी (हर्ट्ज)', 103 | Duty_cycle: 'साइकिल शुल्क (%)', 104 | 105 | triangle: 'त्रिकोण', 106 | ramp: 'ramp', 107 | Slope: 'Slope (volts/sec)', 108 | 109 | pwl: 'पीडब्लूऐल', 110 | pwl_repeating: 'पीडब्लूऐल(दोहरा)', 111 | Comma_separated_list: 'वैकल्पिक समय और मूल्यों की कोमा-अलग सूची', 112 | 113 | pulse: 'पल्स', 114 | Delay_until_pulse: 'पल्स तक देरी (सेकंड)', 115 | Time_for_first_transition: 'पहले संक्रमण के लिए समय (सेकंड)', 116 | Time_for_second_transition: 'दूसरे संक्रमण के लिए समय (सेकंड)', 117 | Pulse_width: 'पल्स चौड़ाई (सेकंड)', 118 | Period: 'अवधि (सेकंड)', 119 | 120 | sin: 'साइन', 121 | Offset_value: 'ऑफसेट मान', 122 | Amplitude: 'आयाम', 123 | Delay_until_sin_starts: 'विलंब जब तक साइन शुरू होता है (सेकंड)', 124 | Phase_offset_degrees: 'चरण ऑफसेट (डिग्री)', 125 | 126 | Circuit_Sandbox_Help: 'सर्किट सैंडबॉक्स की मदद', 127 | name: 'नाम', 128 | value: 'मूल्य', 129 | label: 'लेबल', 130 | r: 'आर', 131 | c: 'सी', 132 | l: 'एल', 133 | color: 'रंग', 134 | offset: 'ओफ़्सेट', 135 | area: 'क्षेत्र', 136 | type: 'प्रकार', 137 | normal: 'साधारण', 138 | ideal: 'आदर्श', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: 'डब्ल्यू / एल', 142 | lambda: 'λ', 143 | A: 'ए', 144 | Plot_color: 'प्लॉट का रंग', 145 | Plot_offset: 'प्लॉट ऑफसेट', 146 | dc: 'डीसी', 147 | 148 | Gain: 'A', 149 | Rin: 'Rin', 150 | Rout: 'Rout', 151 | 152 | red: 'लाल', 153 | green: 'हरा', 154 | blue: 'नीला', 155 | cyan: 'हरिनील', 156 | magenta: 'मैजेंटा', 157 | yellow: 'पीला', 158 | orange: 'नारंगी', 159 | black: 'काला', 160 | xaxis: 'एक्स अक्ष', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: '𝛼एफ', 165 | alphaR: '𝛼आर', 166 | 167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.", 168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.", 169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.", 170 | delete_ctl: "Delete component. Also try 'Del'.", 171 | 172 | last_line: 'last line, no comma' 173 | }; 174 | 175 | var strSHelp = "सर्किट सैंडबॉक्स की मदद\n\n"; //embedded Help 176 | var strAddC = "घटक जोड़ें: भागों बिन में एक भाग पर टैप करें, फिर योजनाबद्ध पर टैप करें।\n\n"; 177 | var strAddW = "तार जोड़ें: शुरू करने के लिए एक कनेक्शन बिंदु (खुले सर्कल) पर स्पर्श करें। खींचना। छोड़ें।\n\n"; 178 | var strSel = "चयन करें: घटकों का चयन करने के लिए एक आयत खींचें। \n(डेस्कटॉप :) किसी अन्य घटक को शामिल करने के लिए Shift-क्लिक करें।\n\n"; 179 | var strMove = "चाल: स्पर्श करें और एक नए स्थान पर खींचें\n\n"; 180 | var strDel = "हटाएं: चयन करने के लिए टैप करें, फिर एक्स आइकन टैप करें या बैकस्पेस को हिट करें।\n\n"; 181 | var strRot = "घुमाएँ / प्रतिबिंबित करें: चयन करने के लिए क्लिक करें, फिर रोटेशन आइकन पर क्लिक करें या पत्र \"r\" को 90 को घुमाएं। अधिक घुमाव और प्रतिबिंब (8 कुल) के लिए दोहराएं।\n\n"; 182 | var strView = ""; 183 | var strProp = "गुण: इसके गुणों को बदलने के लिए एक घटक पर डबल टैप करें।\n\n"; 184 | var strNum = "इंजीनियरिंग नोटेशन का उपयोग करके नंबर दर्ज किए जा सकते हैं,\n\ 185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\ 186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15"; 187 | -------------------------------------------------------------------------------- /js/hu.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | error1: 'Sajnáljuk, de hiba történt a böngészőben az eszköz indításakor. Javasoljuk a Firefox és a Chrome legújabb verzióinak használatát.', 3 | Ground_connection: 'Földelés', 4 | Node_label: 'Csomópont felirat', 5 | Voltage_source: 'Feszültségforrás', 6 | Current_source: 'Áramforrás', 7 | Resistor: 'Ellenállás', 8 | Capacitor: 'Kondenzátor', 9 | Inductor: 'Tekercs', 10 | Op_Amp: 'Műveleti erősítő', 11 | Diode: 'Dióda', 12 | NFet: 'NFet', 13 | PFet: 'PFet', 14 | NPN: 'NPN', 15 | PNP: 'PNP', 16 | Voltage_probe: 'Feszültség szonda', 17 | Current_probe: 'Ampermérő', 18 | drag_onto_diagram: ': húzza vagy koppintson a beillesztéshez', 19 | Help: 'Súgó: súgó oldal megjelenítése', 20 | Grid: 'Rács: rács megjelenítésének váltása', 21 | Link_tip: 'Link: megosztja az áramkörre mutató linket', 22 | Cut: 'Kiválasztott elemek kivágása vágólapra', 23 | Copy:'Kiválasztott elemek vágólapra másolása', 24 | Paste:'Vágólap beillesztése', 25 | Delete:'Kiválasztott elemek törlése', 26 | Rotate:'Kiválasztott elem forgatása', 27 | Save_netlist: 'Csomóponti lista mentése', 28 | Open_netlist: 'Csomóponti lista megnyitása', 29 | Select_netlist: 'Csomóponti lista kiválasztása', 30 | Perform_DC_Analysis: 'Egyenáram elemzés végrehajtása', 31 | DC_Analysis: 'Egyenáram elemzés', 32 | Perform_AC_Analysis: 'Kis jelű váltóáram elemzés végrehajtása', 33 | Perform_Transient_Analysis: 'Tranziens elemzés végrehajtása', 34 | Transient_Analysis: 'Tranziens elemzés', 35 | Edit_Properties: 'Tulajdonságok szerkesztése', 36 | Link: 'Hivatkozás', 37 | Sharable_Link: 'Megosztható hivatkozás', 38 | 39 | points_per_decade: 'Tizedesek száma', 40 | Starting_frequency: 'Kezdő frekvencia (Hz)', 41 | Ending_frequency: 'Utolsó frekvencia (Hz)', 42 | source_for_ac: 'Feszültség vagy áramforrás neve', 43 | AC_Analysis_add_a_voltage_probe: 'Váltóáram elemzés: adjon egy feszültség szondát az ábrára!', 44 | AC_Analysis: 'Váltóáram elemzés', 45 | Zero_ac_response: 'Nincs váltoáram válasz, -végtelen a dB skálán.', 46 | Near_zero_ac_response: 'Közel nulla váltóáram válasz, eltávolítani ', 47 | probe: ' szonda', 48 | 49 | // Alerts and warnings from the circuit simulator 50 | Alert: 'Figyelmeztetés', 51 | ckt_alert1: 'Figyelem! Az áramkör rövidre van zárva. Kérjük távolítsa el a forrást vagy a vezetéket ami okozza.', 52 | ckt_alert2: 'Figyelem! A szimulátor értelmetlen vagy semmilyen eredményt nem fog létrehozni érvénytelen áramkör esetében.', 53 | ckt_warning1: 'Figyelem! Két áramköri elemnek ugyan az a neve ', 54 | ckt_alert3: 'Kérjük csatlakoztasson legalább egy földelést.', 55 | ckt_alert4: 'Newton módszer sikertelen; az áramforrások földeléshez vannak kötve?', 56 | ckt_alert5: 'Newton módszer sikertelen; lehet hogy az áramkör, lehet hogy a szimulátorunk az oka.', 57 | ckt_alert6: 'DC sikertelen, próbálkozás tranziens elemzéssel nulláról.', 58 | ckt_alert7: 'AC elemzés egy ismeretlen forrásra utal, ', 59 | ckt_alert8: 'AC elemzés sikertelen, ismeretlen forrás.', 60 | 61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.', 62 | //ckt_error2: 'Row or columns of A too large for B', 63 | //ckt_error3: 'Row or columns of A too large for C', 64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays', 65 | //ckt_error5: 'Rows or cols > rows or cols of dest', 66 | //ckt_error6: 'Rows or cols > cols or rows of dest', 67 | 68 | log_Frequency: 'log10(Frekvencia Hz-ben)', 69 | degrees: 'szög', 70 | AC_Phase: 'Váltóáram fázis', 71 | AC_Magnitude: 'Váltóáram nagyság', 72 | 73 | Minimum_number_of_timepoints: 'Az időpontok minimális száma', 74 | Stop_time_seconds: 'Befejező idő (mp)', 75 | tstop_lbl: 'Befejező idő', 76 | Transient_Analysis_add_a_probe: 'Tranziens elemzés: adjon az ábrához egy szondát!', 77 | 78 | //Use creative phrasing to get this sentence to come out right: 79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node'); 80 | The: 'A ', 81 | probe_is_connected_to_node: ' szonda a csomóponthoz van csatlakoztatva ', 82 | which_is_not_an_actual_circuit_node: ', ami nem igazi áramköri csomópont.', 83 | 84 | Voltage: 'Feszültség', 85 | Current: 'Áramerősség', 86 | Time: 'Idő', 87 | Node_has_two_conflicting_labels: 'A csomópontnak két ellentétes címkéje van: ', 88 | 89 | DC_value: 'Egyenáram érték', 90 | 91 | impulse: 'impulzus', 92 | Height: 'Magasság', 93 | Width: 'Szélesség (mp)', 94 | 95 | step: 'lépcső', 96 | Initial_value: 'Kezdő érték', 97 | Plateau_value: 'Tetőző érték', 98 | Delay_until_step: 'Késleltetés (mp)', 99 | Rise_time: 'Növekedési idő (mp)', 100 | 101 | square: 'négyszög', 102 | Frequency: 'Frekvencia (Hz)', 103 | Duty_cycle: 'Munka ciklus (%)', 104 | 105 | triangle: 'háromszög', 106 | ramp: 'rámpa', 107 | Slope: 'Lejtő (volt/mp)', 108 | 109 | pwl: 'szakaszosan lineáris', 110 | pwl_repeating: 'szak-lin (ismétlődő)', 111 | Comma_separated_list: 'Vesszővel elválasztott váltakozó idők és értékek listája', 112 | 113 | pulse: 'lüktetés', 114 | Delay_until_pulse: 'Késleltetés lüktetésig (mp)', 115 | Time_for_first_transition: 'Első átmenet ideje (mp)', 116 | Time_for_second_transition: 'Második átmenet ideje (mp)', 117 | Pulse_width: 'Lüktetés szélesség (mp)', 118 | Period: 'Periódus (mp)', 119 | 120 | sin: 'szinusz', 121 | Offset_value: 'Eltolás mértéke', 122 | Amplitude: 'Amplitúdó', 123 | Delay_until_sin_starts: 'Késleltetés ideje (mp)', 124 | Phase_offset_degrees: 'Fázistolás (szög)', 125 | 126 | Circuit_Sandbox_Help: 'Áramköri homokozó súgó', 127 | name: 'Név', 128 | value: 'Érték', 129 | label: 'Címke', 130 | r: 'E', 131 | c: 'K', 132 | l: 'T', 133 | color: 'Szín', 134 | offset: 'Eltolás', 135 | area: 'Terület', 136 | type: 'Típus', 137 | normal: 'normál', 138 | ideal: 'ideális', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: 'SZ/H', 142 | lambda: 'λ', 143 | A: 'A', 144 | Plot_color: 'Grafikon színe', 145 | Plot_offset: 'Grafikon kitérése', 146 | dc: 'dc', 147 | 148 | Gain: 'A', 149 | Rin: 'Rin', 150 | Rout: 'Rout', 151 | 152 | red: 'piros', 153 | green: 'zöld', 154 | blue: 'kék', 155 | cyan: 'cián', 156 | magenta: 'magenta', 157 | yellow: 'sárga', 158 | orange: 'narancssárga', 159 | black: 'fekete', 160 | xaxis: 'x tengely', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: '𝛼F', 165 | alphaR: '𝛼R', 166 | 167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.", 168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.", 169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.", 170 | delete_ctl: "Delete component. Also try 'Del'.", 171 | 172 | last_line: 'Utolsó sor, nincs vessző' 173 | }; 174 | 175 | var strSHelp = "Áramköri Homokozó Súgó\n\n"; //embedded Help 176 | var strAddC = "Alkotóelem hozzáadása: Érintse meg az elemet, majd érintse meg a vázlatot.\n\n"; 177 | var strAddW = "Vezeték hozzáadása: A kezdéshez érintse meg a csatlakozási pontot (üres kör). Húzza. Elengedés.\n\n"; 178 | var strSel = "Kiválasztás: Húzzon egy téglalapot az elemek kiválasztásához. \n(Asztal :) Shift-kattintás egy másik elem hozzáadásához.\n\n"; 179 | var strMove = "Áthelyezés: érintse meg és húzza egy új helyre.\n\n"; 180 | var strDel = "Törlés: Koppintson a kiválasztásra, majd koppintson az X ikonra, vagy nyomja meg a BACKSPACE billentyűt.\n\n"; 181 | var strRot = "Forgatás/Invertálás: Válassza ki, majd kattintson a forgatás ikonra, vagy nyomja meg az \„r\" gombot a 90-es elforgatáshoz. Ismételje meg a további forgatásokat (összesen 8-at).\n\n"; 182 | var strView = ""; 183 | var strProp = "Tulajdonságok: Koppintson duplán egy elemre annak tulajdonságainak megváltoztatásához.\n\n"; 184 | var strNum = "A számokat műszaki jelöléssel is be lehet írni, T = 10^12, G = 10^9, M = 10^6, k = 10^3, m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15"; 185 | -------------------------------------------------------------------------------- /js/it.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | error1: 'Sorry, there was a browser error in starting the schematic tool. We recommend using the latest versions of Firefox and Chrome.', 3 | Ground_connection: 'Messa a terra', 4 | Node_label: 'Nodo di riferimento', 5 | Voltage_source: 'Alimentatore di tensione', 6 | Current_source: 'Alimentatore di corrente', 7 | Resistor: 'Resistore', 8 | Capacitor: 'Capacitore', 9 | Inductor: 'Induttore', 10 | Op_Amp: 'Amplificatore operazionale', 11 | Diode: 'Diodo', 12 | NFet: 'NFet', 13 | PFet: 'PFet', 14 | NPN: 'NPN', 15 | PNP: 'PNP', 16 | Voltage_probe: 'Sonda di tensione', 17 | Current_probe: 'Sonda di corrente', 18 | drag_onto_diagram: ': trascina o clicca per inserire', 19 | Help: 'Aiuto: mostra la pagina di aiuto', 20 | Grid: 'Griglia: attiva/disattiva la griglia dello schermo', 21 | Link_tip: 'Collegamento: condividi un collegamento al circuito', 22 | Cut: 'Taglia i component selezionati nella barra degli appunti', 23 | Copy:'Copia i component selezionati nella barra degli appunti', 24 | Paste:'Incolla gli appunti nello schema', 25 | Delete:'Elimina i componenti selezionati', 26 | Rotate:'Ruota il componente selezionato', 27 | Save_netlist: 'Salva netlist', 28 | Open_netlist: 'Apri netlist', 29 | Select_netlist: 'Seleziona netlist', 30 | Perform_DC_Analysis: 'Avvia analisi DC', 31 | DC_Analysis: 'Analisi DC', 32 | Perform_AC_Analysis: 'Avvia analisi di piccoli segnali in AC', 33 | Perform_Transient_Analysis: 'Avvia analisi in regime transitorio', 34 | Transient_Analysis: 'Analisi in regime transitorio', 35 | Edit_Properties: 'Modifica proprietà', 36 | Link: 'Collegamento', 37 | Sharable_Link: 'Collegamento condivisibile', 38 | 39 | points_per_decade: 'Numero di punti/decade', 40 | Starting_frequency: 'Frequenza iniziale (Hz)', 41 | Ending_frequency: 'Frequenza finale (Hz)', 42 | source_for_ac: 'Nome della sorgente di V o I per AC', 43 | AC_Analysis_add_a_voltage_probe: 'Analisi AC: aggiungere una sonda di tensione al diagramma!', 44 | AC_Analysis: 'Analisi AC', 45 | Zero_ac_response: 'Risposta zero in AC, -infinito su scala dB.', 46 | Near_zero_ac_response: 'Risposta prossima a zero in AC, rimuovere ', 47 | probe: ' sonda', 48 | 49 | // Alerts and warnings from the circuit simulator 50 | Alert: 'Avviso', 51 | ckt_alert1: 'Attenzione! Il circuito ha un generatore di tensione in loop oppure la sonda di corrente è in cortocircuito con un filo, per favore rimuovere il generatore o il filo che produce il cortociruito.', 52 | ckt_alert2: 'Attenzione! Il simulatore potrebbe produrre risultati insignificanti o non produrre risultati con circuiti illegali.', 53 | ckt_warning1: 'Attenzione! Due elementi del circuito hanno lo stesso nome ', 54 | ckt_alert3: 'Per favore effettuare almeno un collegamento a terra.', 55 | ckt_alert4: 'Il metodo di Newton non è applicabile: le tue sorgenti di corrente hanno un collegamento a terra?', 56 | ckt_alert5: 'Il metodo di Newton non è applicabile: può essere un problema del tuo circuito o del simulatore.', 57 | ckt_alert6: 'DC fallita, prova l’analisi in transitorio da zero.', 58 | ckt_alert7: 'L’analisi AC si riferisce ad un generatore sconosciuto, ', 59 | ckt_alert8: 'Analisi AC fallita, generatore sconosciuto.', 60 | 61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.', 62 | //ckt_error2: 'Row or columns of A too large for B', 63 | //ckt_error3: 'Row or columns of A too large for C', 64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays', 65 | //ckt_error5: 'Rows or cols > rows or cols of dest', 66 | //ckt_error6: 'Rows or cols > cols or rows of dest', 67 | 68 | log_Frequency: 'Log (frequenza in Hz)', 69 | degrees: 'gradi', 70 | AC_Phase: 'Fase in AC', 71 | AC_Magnitude: 'Modulo/Ampiezza in AC', 72 | 73 | Minimum_number_of_timepoints: 'Numero minimo di punti temporali', 74 | Stop_time_seconds: 'Tempo di arresto (sec)', 75 | tstop_lbl: 'tempo di arresto', 76 | Transient_Analysis_add_a_probe: 'Analisi in transitorio: aggiungere una sonda al diagramma!', 77 | 78 | //Use creative phrasing to get this sentence to come out right: 79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node'); 80 | The: 'La ', 81 | probe_is_connected_to_node: ' sonda è collegata al nodo ', 82 | which_is_not_an_actual_circuit_node: ', che non è un nodo effettivo del circuito.', 83 | 84 | Voltage: 'Tensione', 85 | Current: 'Corrente', 86 | Time: 'Tempo', 87 | Node_has_two_conflicting_labels: 'Il nodo ha due riferimenti diversi: ', 88 | 89 | DC_value: 'Valore DC', 90 | 91 | impulse: 'impulso', 92 | Height: 'Altezza', 93 | Width: 'Larghezza (sec)', 94 | 95 | step: 'gradino', 96 | Initial_value: 'Valore iniziale', 97 | Plateau_value: 'Valore di paragone', 98 | Delay_until_step: 'Ritardo fino al gradino (sec)', 99 | Rise_time: 'Tempo di risalita (sec)', 100 | 101 | square: 'radice', 102 | Frequency: 'Frequenza (Hz)', 103 | Duty_cycle: 'Ciclo di lavoro (%)', 104 | 105 | triangle: 'triangolo', 106 | ramp: 'rampa', 107 | Slope: 'Pendenza (Volt/sec)', 108 | 109 | pwl: 'pwl', 110 | pwl_repeating: 'pwl (ripetuto)', 111 | Comma_separated_list: 'Elenco separato da virgule relativo a tempi e valori', 112 | 113 | pulse: 'impulso', 114 | Delay_until_pulse: 'Ritardo fino all’impulso (sec)', 115 | Time_for_first_transition: 'Tempo di prima transizione (sec)', 116 | Time_for_second_transition: 'Tempo di seconda transizione (sec)', 117 | Pulse_width: 'Larghezza di impulse (sec)', 118 | Period: 'Periodo (sec)', 119 | 120 | sin: 'sin', 121 | Offset_value: 'Valore di deviazione', 122 | Amplitude: 'Ampiezza/Modulo', 123 | Delay_until_sin_starts: 'Ritardo fino all’inzio della funzione sin (sec)', 124 | Phase_offset_degrees: 'Sfasamento (gradi)', 125 | 126 | Circuit_Sandbox_Help: 'CIRCUIT SANDBOX AIUTO', 127 | name: 'Nome', 128 | value: 'Valore', 129 | label: 'Etichetta', 130 | r: 'R', 131 | c: 'C', 132 | l: 'L', 133 | color: 'Colore', 134 | offset: 'Deviazione', 135 | area: 'Area', 136 | type: 'Tipo', 137 | normal: 'normale', 138 | ideal: 'ideale', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: 'W/L', 142 | lambda: 'λ', 143 | A: 'A', 144 | Plot_color: 'Colore trama', 145 | Plot_offset: 'Deviazione trama', 146 | dc: 'dc', 147 | 148 | Gain: 'A', 149 | Rin: 'Rin', 150 | Rout: 'Rout', 151 | 152 | red: 'rosso', 153 | green: 'verde', 154 | blue: 'blu', 155 | cyan: 'ciano', 156 | magenta: 'magenta', 157 | yellow: 'giallo', 158 | orange: 'arancione', 159 | black: 'nero', 160 | xaxis: 'asse x', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: '𝛼F', 165 | alphaR: '𝛼R', 166 | last_line: 'last line, no comma' 167 | }; 168 | 169 | var strSHelp = "🇮🇹 CIRCUIT SANDBOX AIUTO\n"; //embedded Help 170 | var strAddC = "Aggiungere componente: clicca un elemento sulla sezione dei componenti, quindi clicca sullo schema.\n\n"; 171 | var strAddW = "Aggiungere filo: seleziona su un punto di contatto (cerchio aperto) per iniziare. Rilascia.\n\n"; 172 | var strSel = "Seleziona: trascina un rettangolo per selezionare i componenti. \n(desktop: ) premi Shift-click per inserire un altro componente.\n\n"; 173 | var strMove = "Muovi: tocca e trascina in una nuova posizione.\n\n"; 174 | var strDel = "Cancella: clicca per selezionare, dopo clicca sull’icona X o premi il tasto BACKSPACE.\n\n"; 175 | var strRot = "Ruota/Ribalta: clicca per selezionare, dopo clicca sull’icona di rotazione o premi il tasto \"r\" per ruotare di 90°. Ripetere per ulteriori rotazioni e ribaltamenti (8 totali).\n\n"; 176 | var strProp = "Proprietà: doppio click su un componente per cambiare le sue proprietà.\n\n"; 177 | var strNum = "I numeri si possono inserire con la notazione ingegneristica,\n\ 178 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\ 179 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15"; 180 | -------------------------------------------------------------------------------- /js/pt.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | error1: 'Desculpe-nos, houve um erro na inicialização da ferramenta de esquemático. Nós recomendamos utilizar as últimas versões de Firefox e Chrome.', 3 | Ground_connection: 'Conexão Terra', 4 | Node_label: 'Rótulo do nó', 5 | Voltage_source: 'Fonte de tensão', 6 | Current_source: 'Fonte de corrente', 7 | Resistor: 'Resistor', 8 | Capacitor: 'Capacitor', 9 | Inductor: 'Indutor', 10 | Op_Amp: 'Amp Op', 11 | Diode: 'Diodo', 12 | NFet: 'NFet', 13 | PFet: 'PFet', 14 | NPN: 'NPN', 15 | PNP: 'PNP', 16 | Voltage_probe: 'Ponta de prova de tensão', 17 | Current_probe: 'Ponta de prova de corrente', 18 | drag_onto_diagram: ': arraste ou clique para inserir', 19 | Help: 'Ajuda: Mostrar página de ajuda', 20 | Grid: 'Grade: Alternar visualização', 21 | Link_tip: 'Link: Compartilhe um link para o circuito', 22 | Cut: 'Cortar os componentes selecionados para a área de transferência', 23 | Copy: 'Copiar os componentes selecionados para a área de transferência', 24 | Paste: 'Colar no esquemático', 25 | Delete: 'Deletar componentes selecionados', 26 | Rotate: 'Girar componente selecionado', 27 | Save_netlist: 'Salvar netlist', 28 | Open_netlist: 'Abrir netlist', 29 | Select_netlist: 'Selecionar netlist', 30 | Perform_DC_Analysis: 'Realizar análise DC', 31 | DC_Analysis: 'Análise DC', 32 | Perform_AC_Analysis: 'Realizar análise AC para pequenos sinais', 33 | Perform_Transient_Analysis: 'Realizar Análise Transitória', 34 | Transient_Analysis: 'Análise Transitória', 35 | Edit_Properties: 'Editar propriedades', 36 | Link: 'Link', 37 | Sharable_Link: 'Link compartilhável', 38 | 39 | points_per_decade: 'Número de pontos/década', 40 | Starting_frequency: 'Frequência inicial', 41 | Ending_frequency: 'Frequência final', 42 | source_for_ac: 'Nome de fonte V ou I para AC', 43 | AC_Analysis_add_a_voltage_probe: 'Análise AC: adicionar ponta de prova de tensão ao diagrama!', 44 | AC_Analysis: 'Análise AC', 45 | Zero_ac_response: 'Resposta AC zero, -infinito em escala dB.', 46 | Near_zero_ac_response: 'Resposta AC próxima de zero, remover ', 47 | probe: ' ponta de prova', 48 | 49 | // Alerts and warnings from the circuit simulator 50 | Alert: 'Alerta', 51 | ckt_alert1: 'Aviso! O circuito tem uma malha de tensão, fonte ou ponta de prova de corrente curto-circuitada por um fio, favor remover a fonte ou fio causando o curto.', 52 | ckt_alert2: 'Aviso! O simulador pode obter resultados sem sentido ou resultado nenhum com circuitos inválidos.', 53 | ckt_warning1: 'Aviso! Dois elementos de circuito possuem o mesmo nome ', 54 | ckt_alert3: 'Por favor, faça pelo menos uma conexão ao Terra.', 55 | ckt_alert4: 'O Método de Newton falhou; suas fontes de corrente estão conectadas ao terra?', 56 | ckt_alert5: 'O Método de Newton falhou; pode ser seu circuito ou o nosso simulador.', 57 | ckt_alert6: 'A DC falhou, tentando Análise Transitória do zero.', 58 | ckt_alert7: 'A Análise AC aponta para uma fonte desconhecida, ', 59 | ckt_alert8: 'A análise AC falhou, fonte desconhecida.', 60 | 61 | //ckt_error1: 'Linhas de M incompatíveis com b ou colunas incompatíveis com x.', 62 | //ckt_error2: 'Linhas ou colunas de A muito grandes para B', 63 | //ckt_error3: 'Linhas ou colunas de A muito grandes para C', 64 | //ckt_error4: 'scalea e scaleb devem ser escalares ou vetores', 65 | //ckt_error5: 'Linhas ou colunas > linhas ou colunas do dest', 66 | //ckt_error6: 'Linhas ou colunas > colunas ou linhas de dest', 67 | 68 | log_Frequency: 'log10(Frequência em Hz)', 69 | degrees: 'graus', 70 | AC_Phase: 'Ângulo de fase AC', 71 | AC_Magnitude: 'Magnitude AC', 72 | 73 | Minimum_number_of_timepoints: 'Número mínimo de pontos no tempo', 74 | Stop_time_seconds: 'Tempo de parada (segundos)', 75 | tstop_lbl: 'tempo de parada', 76 | Transient_Analysis_add_a_probe: 'Análise Transitória: adicione uma ponta de prova ao diagrama!', 77 | 78 | //Use creative phrasing to get this sentence to come out right: 79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node'); 80 | The: 'A ', 81 | probe_is_connected_to_node: ' ponta de prova está conectada ao nó ', 82 | which_is_not_an_actual_circuit_node: ', que não é um nó válido no circuito.', 83 | 84 | Voltage: 'Tensão', 85 | Current: 'Corrente', 86 | Time: 'Tempo', 87 | Node_has_two_conflicting_labels: 'O nó tem dois rótulos em conflito: ', 88 | 89 | DC_value: 'Valor DC', 90 | 91 | impulse: 'impulso', 92 | Height: 'Altura', 93 | Width: 'Largura (s)', 94 | 95 | step: 'passo', 96 | Initial_value: 'Valor inicial', 97 | Plateau_value: 'Valor de Plateau', 98 | Delay_until_step: 'Atraso até o passo (s)', 99 | Rise_time: 'Tempo de subida (s)', 100 | 101 | square: 'quadrada', 102 | Frequency: 'Frequência (Hz)', 103 | Duty_cycle: 'Ciclo de trabalho (%)', 104 | 105 | triangle: 'triangular', 106 | ramp: 'rampa', 107 | Slope: 'Declive (volts/s)', 108 | 109 | pwl: 'Piecewise Linear (PWL)', 110 | pwl_repeating: 'PWL (repetir)', 111 | Comma_separated_list: 'Lista, separada por vírgulas, de tempos e valores alternados', 112 | 113 | pulse: 'pulso', 114 | Delay_until_pulse: 'Atraso até o pulso (s)', 115 | Time_for_first_transition: 'Tempo para a primeira transição (s)', 116 | Time_for_second_transition: 'Tempo para a segunda transição (s)', 117 | Pulse_width: 'Lagura de pulso (s)', 118 | Period: 'Período (s)', 119 | 120 | sin: 'sen', 121 | Offset_value: 'Valor de deslocamento', 122 | Amplitude: 'Amplitude', 123 | Delay_until_sin_starts: 'Atraso até o sen começar (s)', 124 | Phase_offset_degrees: 'Deslocamento de fase (graus)', 125 | 126 | Circuit_Sandbox_Help: 'AJUDA DO CIRCUIT SANDBOX', 127 | name: 'Nome', 128 | value: 'Valor', 129 | label: 'Rótulo', 130 | r: 'R', 131 | c: 'C', 132 | l: 'L', 133 | color: 'Cor', 134 | offset: 'Deslocamento', 135 | area: 'Área', 136 | type: 'Tipo', 137 | normal: 'normal', 138 | ideal: 'ideal', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: 'Largura / Comprimento', 142 | lambda: 'λ', 143 | A: 'A', 144 | Plot_color: 'Cor do gráfico', 145 | Plot_offset: 'Deslocamento do gráfico', 146 | dc: 'dc', 147 | 148 | Gain: 'A', 149 | Rin: 'Rin', 150 | Rout: 'Rout', 151 | 152 | red: 'vermelho', 153 | green: 'verde', 154 | blue: 'azul', 155 | cyan: 'ciano', 156 | magenta: 'magenta', 157 | yellow: 'amarelo', 158 | orange: 'laranja', 159 | black: 'preto', 160 | xaxis: 'eixo x', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: 'αF', 165 | alphaR: 'αR', 166 | 167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.", 168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.", 169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.", 170 | delete_ctl: "Delete component. Also try 'Del'.", 171 | 172 | last_line: 'última linha, sem vírgula' 173 | }; 174 | 175 | var strSHelp = "AJUDA DO CIRCUIT SANDBOX\n\n"; //embedded Help 176 | var strAddC = "Adicionar componente: clique em uma parte no caixote de peças, em seguida, clique no esquema.\n\n"; 177 | var strAddW = "Adicionar fio: Clique num ponto de conexão (círculo aberto) Arrastar. Soltar.\n\n"; 178 | var strSel = "Selecionar: Arraste um retângulo para selecionar componentes. \n(desktop:) Shift-click para incluir outro componente.\n\n"; 179 | var strMove = "Mover: Toque e arraste para outro local.\n\n"; 180 | var strDel = "Deletar: Clique para selecionar, depois clique no X ou pressione BACKSPACE.\n\n"; 181 | var strRot = "Rodar/Refletir: Clique para selecionar, e depois clique no ícone de rotação ou aperte \"r\" para rodar 90. Repetir para mais rotações e reflexões (8 total).\n\n"; 182 | var strView = ""; 183 | var strProp = "Propriedades: Clique duas vezes num componente para alterar suas propriedades.\n\n"; 184 | var strNum = "Números podem ser inseridos utilizando a notação de engenharia,\n\ 185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\ 186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15"; 187 | -------------------------------------------------------------------------------- /js/fr.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | error1: "Désolé, une erreur de navigateur s'est produite lors du démarrage de l'outil de schéma. Nous vous recommandons d'utiliser les dernières versions de Firefox et Chrome.", 3 | Ground_connection: 'Connexion à la terre', 4 | Node_label: 'Étiquette de nœud', 5 | Voltage_source: 'Source de tension', 6 | Current_source: 'Source de courant', 7 | Resistor: 'Résistance', 8 | Capacitor: 'Capacité', 9 | Inductor: 'Inductance', 10 | Op_Amp: 'Ampli Op', 11 | Diode: 'Diode', 12 | NFet: 'NFet', 13 | PFet: 'PFet', 14 | NPN: 'NPN', 15 | PNP: 'PNP', 16 | Voltage_probe: 'Ampli Op', 17 | Current_probe: 'Sonde de courant', 18 | drag_onto_diagram: ': faites glisser ou appuyez pour insérer', 19 | Help: "Aide: afficher la page d'aide", 20 | Grid: "Grille: basculer l'affichage de la grille", 21 | Link_tip: 'Lien: partager un lien vers le circuit', 22 | Cut: 'Couper les composants sélectionnés dans le presse-papiers', 23 | Copy:'Copier les composants sélectionnés dans le presse-papiers', 24 | Paste:'Coller le presse-papiers dans le schéma', 25 | Delete:'Supprimer les composants sélectionnés', 26 | Rotate:'Faire pivoter le composant sélectionné', 27 | Save_netlist: 'Enregistrer le schéma', 28 | Open_netlist: 'Ouvrir le schéma', 29 | Select_netlist: 'Selectionner le schéma', 30 | Perform_DC_Analysis: 'Effectuer une analyse en DC', 31 | DC_Analysis: 'Analyse en DC', 32 | Perform_AC_Analysis: 'Effectuer une analyse des petits signaux AC', 33 | Perform_Transient_Analysis: 'Effectuer une analyse transitoire', 34 | Transient_Analysis: 'Analyse transitoire', 35 | Edit_Properties: 'Modifier les propriétés', 36 | Link: 'Lien', 37 | Sharable_Link: 'Lien partageable', 38 | 39 | points_per_decade: 'Nombre de points / décade', 40 | Starting_frequency: 'Fréquence de démarrage (Hz)', 41 | Ending_frequency: 'Fréquence de fin (Hz)', 42 | source_for_ac: 'Nom de la source (V) ou (I) pour l’AC', 43 | AC_Analysis_add_a_voltage_probe: 'Analyse AC: ajoutez une sonde de tension au diagramme!', 44 | AC_Analysis: 'Analyse AC', 45 | Zero_ac_response: "Réponse zéro AC, -infini sur l'échelle dB.", 46 | Near_zero_ac_response: 'Réponse quasi nulle en courant alternatif, supprimer ', 47 | probe: ' sonde', 48 | 49 | // Alerts and warnings from the circuit simulator 50 | Alert: 'Alerte', 51 | ckt_alert1: 'Avertissement! Le circuit a une boucle de source de tension ou une source ou une sonde de courant court-circuitée par un fil, veuillez retirer la source ou le fil causant le court-circuit.', 52 | ckt_alert2: 'Avertissement! Le simulateur peut produire des résultats dénués de sens ou aucun résultat avec des circuits illégaux.', 53 | ckt_warning1: 'Avertissement! Deux éléments de circuit partagent le même nom ', 54 | ckt_alert3: 'Veuillez effectuer au moins une connexion à la terre.', 55 | ckt_alert4: 'La méthode Newton a échoué; vos sources de courant ont-elles un chemin conducteur vers la terre?', 56 | ckt_alert5: 'La méthode Newton a échoué; ce peut être votre circuit ou notre simulateur.', 57 | ckt_alert6: 'DC a échoué, en essayant une analyse transitoire à partir de zéro.', 58 | ckt_alert7: "L'analyse AC fait référence à une source inconnue, ", 59 | ckt_alert8: "L'analyse AC a échoué, source inconnue.", 60 | 61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.', 62 | //ckt_error2: 'Row or columns of A too large for B', 63 | //ckt_error3: 'Row or columns of A too large for C', 64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays', 65 | //ckt_error5: 'Rows or cols > rows or cols of dest', 66 | //ckt_error6: 'Rows or cols > cols or rows of dest', 67 | 68 | log_Frequency: 'log10(fréquence en Hz)', 69 | degrees: 'degrés', 70 | AC_Phase: 'Phase AC', 71 | AC_Magnitude: 'Amplitude AC', 72 | 73 | Minimum_number_of_timepoints: 'Nombre minimum de points temporels', 74 | Stop_time_seconds: "Temps d'arrêt (sec)", 75 | tstop_lbl: "temps d'arrêt", 76 | Transient_Analysis_add_a_probe: 'Analyse des transitoires: ajoutez une sonde au diagramme!', 77 | 78 | //Use creative phrasing to get this sentence to come out right: 79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node'); 80 | The: 'Le ', 81 | probe_is_connected_to_node: ' la sonde est connectée au nœud ', 82 | which_is_not_an_actual_circuit_node: ", qui n'est pas un nœud de circuit réel", 83 | 84 | Voltage: 'Tension', 85 | Current: 'Courant', 86 | Time: 'Temps', 87 | Node_has_two_conflicting_labels: 'Le nœud a deux étiquettes en conflit: ', 88 | 89 | DC_value: 'Valeur DC', 90 | 91 | impulse: 'impulsion', 92 | Height: 'Hauteur', 93 | Width: 'Largeur (sec)', 94 | 95 | step: 'étape', 96 | Initial_value: 'Valeur initiale', 97 | Plateau_value: 'Valeur du palier', 98 | Delay_until_step: "Délai jusqu'à l'étape (sec)", 99 | Rise_time: 'Temps de montée (sec)', 100 | 101 | square: 'carrée', 102 | Frequency: 'Fréquence (Hz)', 103 | Duty_cycle: 'Cycle de service (%)', 104 | 105 | triangle: 'triangle', 106 | ramp: 'rampe', 107 | Slope: 'Pente (volts / sec)', 108 | 109 | pwl: 'pwl', 110 | pwl_repeating: 'pwl (répétition)', 111 | Comma_separated_list: "Liste séparée par des virgules d'heures et de valeurs en alternance", 112 | 113 | pulse: 'impulsion', 114 | Delay_until_pulse: 'Délai avant impulsion (sec)', 115 | Time_for_first_transition: 'Temps de première transition (sec)', 116 | Time_for_second_transition: 'Temps pour la deuxième transition (sec)', 117 | Pulse_width: "Largeur d'impulsion (sec)", 118 | Period: 'Période (sec)', 119 | 120 | sin: 'sin', 121 | Offset_value: 'Valeur de décalage', 122 | Amplitude: 'Amplitude', 123 | Delay_until_sin_starts: "Délai jusqu'à ce que le sin commence (sec)", 124 | Phase_offset_degrees: 'Déphasage (degrés)', 125 | 126 | Circuit_Sandbox_Help: 'AIDE DU CIRCUIT SANDBOX', 127 | name: 'Nom', 128 | value: 'Valeur', 129 | label: 'Étiquette', 130 | r: 'R', 131 | c: 'C', 132 | l: 'L', 133 | color: 'Couleur', 134 | offset: 'Décalage', 135 | area: 'Aire', 136 | type: 'Type', 137 | normal: 'normal', 138 | ideal: 'idéal', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: 'W/L', 142 | lambda: 'λ', 143 | A: 'A', 144 | Plot_color: 'Couleur du tracé', 145 | Plot_offset: 'Décalage du tracé', 146 | dc: 'dc', 147 | 148 | Gain: 'A', 149 | Rin: 'Rentrée', 150 | Rout: 'Rsortie', 151 | 152 | red: 'rouge', 153 | green: 'vert', 154 | blue: 'bleu', 155 | cyan: 'cyan', 156 | magenta: 'magenta', 157 | yellow: 'jaune', 158 | orange: 'orange', 159 | black: 'noir', 160 | xaxis: 'axe x', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: '𝛼F', 165 | alphaR: '𝛼R', 166 | 167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.", 168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.", 169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.", 170 | delete_ctl: "Delete component. Also try 'Del'.", 171 | 172 | last_line: 'dernière ligne, pas de virgule' 173 | }; 174 | 175 | var strSHelp = "AIDE DU CIRCUIT SANDBOX\n"; //embedded Help 176 | var strAddC = "Ajouter un composant: appuyez sur une pièce dans le bac de pièces, puis appuyez sur le schéma.\n\n"; 177 | var strAddW = "Ajouter un fil: appuyez sur un point de connexion (cercle ouvert) pour commencer. Glisser. Libérer.\n\n"; 178 | var strSel = "Sélectionner: faites glisser un rectangle pour sélectionner des composants. (bureau :) Cliquez en maintenant la touche Maj enfoncée pour inclure un autre composant.\n\n"; 179 | var strMove = "Déplacer: touchez et faites glisser vers un nouvel emplacement.\n\n"; 180 | var strDel = "Supprimer: appuyez pour sélectionner, puis appuyez sur l'icône X ou appuyez sur RETOUR ARRIÈRE.\n\n"; 181 | var strRot = "Rotation / Réflexion: Cliquez pour sélectionner, puis cliquez sur l'icône de rotation ou tapez la lettre «r» pour faire pivoter 90. Répétez pour plus de rotations et de réflexions (8 au total).\n\n"; 182 | var strView = ""; 183 | var strProp = "Propriétés: appuyez deux fois pour modifier ses propriétés.\n\n"; 184 | var strNum = "Les nombres peuvent être saisis en notation technique,\n\ 185 | T 10^12, G 10^9, M 10^6, k 10^3, m 10^-3, u 10^-6, n 10^-9, p 10^-12, f 10^-15"; 186 | -------------------------------------------------------------------------------- /js/es.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | error1: 'Lo sentimos, hay un error del navegador al iniciar la herramienta esquemática. Recomendamos el uso de las versiones más nuevas de Firefox y Chrome.', 3 | Ground_connection: 'Conexión a tierra', 4 | Node_label: 'Etiqueta para nodo', 5 | Voltage_source: 'Fuente de voltaje', 6 | Current_source: 'Fuente de corriente', 7 | Resistor: 'Resistor', 8 | Capacitor: 'Condensador', 9 | Inductor: 'Inductor', 10 | Op_Amp: 'Amp Op', 11 | Diode: 'Diodo', 12 | NFet: 'NFet', 13 | PFet: 'PFet', 14 | NPN: 'NPN', 15 | PNP: 'PNP', 16 | Voltage_probe: 'Sensor de voltaje', 17 | Current_probe: 'Sensor de corriente', 18 | drag_onto_diagram: ': arrastre o pulse para insertar', 19 | Help: 'Ayuda: página de ayuda', 20 | Grid: 'Rejilla: Mostrar/ocultar rejilla', 21 | Link_tip: 'Link: Compartir un enlace al circuito', 22 | Cut: 'Cortar componentes seleccionados al portapapeles', 23 | Copy:'Copiar componentes seleccionados al portapapeles', 24 | Paste:'Pegar portapapeles al esquema', 25 | Delete:'Borrar componentes seleccionados', 26 | Rotate:'Rotar componente seleccionado', 27 | Save_netlist: 'Guardar la lista de conexiones', 28 | Open_netlist: 'Abrir la lista de conexiones', 29 | Select_netlist: 'Seleccionar netlist', 30 | Perform_DC_Analysis: 'Realizar análisis DC', 31 | DC_Analysis: 'Análisis DC', 32 | Perform_AC_Analysis: 'Realizar análisis AC de pequeña-señal', 33 | Perform_Transient_Analysis: 'Realizar Análisis transitorio', 34 | Transient_Analysis: 'Análisis transitorio', 35 | Edit_Properties: 'Editar Propiedades', 36 | Link: 'Enlace', 37 | Sharable_Link: 'Compartir enlace', 38 | 39 | points_per_decade: 'Número de puntos/década', 40 | Starting_frequency: 'Frecuencia inicial (Hz)', 41 | Ending_frequency: 'Frecuencia final (Hz)', 42 | source_for_ac: 'Nombre de fuente V o I para ac', 43 | AC_Analysis_add_a_voltage_probe: "Análisis AC: ¡añadir un sensor de voltaje al diagrama!", 44 | AC_Analysis: 'Análisis AC', 45 | Zero_ac_response: 'Respuesta cero de ac, -infinito en la escala dB.', 46 | Near_zero_ac_response: 'Cerca de respuesta cero de ac, expulsar ', 47 | probe: ' sensor', 48 | 49 | // Alerts and warnings from the circuit simulator 50 | Alert: '¡Alerta!', 51 | ckt_alert1: '¡Advertencia! El circuito tiene bucle en la fuente de voltaje o o una fuente o sensor de corriente haciendo cortocircuito en un cable, favor de quitar la fuente o el cable que causa el corto.', 52 | ckt_alert2: '¡Advertencia! El simulador podría producir resultados sin sentido o sin resultados con circuitos ilegales.', 53 | ckt_warning1: '¡Advertencia! Dos elementos del circuito comparten el mismo nombre ', 54 | ckt_alert3: 'Por favor, haga al menos una conexión a tierra.', 55 | ckt_alert4: 'El método de Newton falló. ¿Sus fuentes de corriente tienen una conexión a tierra?', 56 | ckt_alert5: 'El método de Newton falló, puede ser su circuito o puede ser nuestro simulador.', 57 | ckt_alert6: 'DC falló, tratando análisis transitorio de cero.', 58 | ckt_alert7: 'Análisis AC refiere a una fuente desconocida, ', 59 | ckt_alert8: 'Análisis AC falló, fuente desconocida.', 60 | 61 | //ckt_error1: 'Los renglones M no coinciden con b o hay un desajuste con las columnas x.', 62 | //ckt_error2: 'Renglones o columnas de A demasiado grandes para B', 63 | //ckt_error3: 'Renglones o columnas de A demasiado grande para C', 64 | //ckt_error4: 'scalea y scaleb deben ser escalares o Arreglos', 65 | //ckt_error5: 'Renglones o columnas > renglones o columnas de destino', 66 | //ckt_error6: 'Renglones o columnas > columnas o renglones de destino', 67 | 68 | log_Frequency: 'log10(Frecuencia en Hz)', 69 | degrees: 'grados', 70 | AC_Phase: 'Fase AC', 71 | AC_Magnitude: 'Magnitud de AC', 72 | 73 | Minimum_number_of_timepoints: 'Número mínimo de puntos de tiempo', 74 | Stop_time_seconds: 'Detener en el tiempo (segundos)', 75 | tstop_lbl: 'tiempo final', 76 | Transient_Analysis_add_a_probe: 'Análisis transitorio: ¡añadir un sensor al diagrama!', 77 | 78 | //Use creating phrasing to get this right: 79 | // alert('El sensor ' + color + ' está conectado al nodo ' + '"' + label + '"' + ' que no es un nodo del circuito en este momento'); 80 | The: 'El sensor ', 81 | probe_is_connected_to_node: ' está conectado al nodo ', 82 | which_is_not_an_actual_circuit_node: ' que no es un nodo del circuito en este momento', 83 | 84 | Voltage: 'Voltaje', 85 | Current: 'Corriente', 86 | Time: 'Tiempo', 87 | Node_has_two_conflicting_labels: 'Nodo tiene dos etiquetas en conflicto: ', 88 | 89 | DC_value: 'Valor DC', 90 | 91 | impulse: 'impulso', 92 | Height: 'Altura', 93 | Width: 'Ancho (segundos)', 94 | 95 | step: 'paso', 96 | Initial_value: 'Valor inicial', 97 | Plateau_value: 'Valor meseta', 98 | Delay_until_step: 'Retardo hasta el paso (seg)', 99 | Rise_time: 'Tiempo de subida (seg)', 100 | 101 | square: 'cuadrado', 102 | Frequency: 'Frecuencia (Hz)', 103 | Duty_cycle: 'Ciclo de trabajo (%)', 104 | 105 | triangle: 'triángulo', 106 | ramp: 'rampa', 107 | Slope: 'Pendiente (voltios/seg)', 108 | 109 | pwl: 'pwl', 110 | pwl_repeating: 'pwl (repitiendo)', 111 | Comma_separated_list: 'Lista separada por comas de los tiempos y valores alternos', 112 | 113 | pulse: 'pulso', 114 | Delay_until_pulse: 'Retardo hasta el pulso (seg)', 115 | Time_for_first_transition: 'Tiempo para la primera transición (seg)', 116 | Time_for_second_transition: 'Tiempo para la segunda transición (seg)', 117 | Pulse_width: 'Ancho de pulso (segundos)', 118 | Period: 'Período (seg)', 119 | 120 | sin: 'seno', 121 | Offset_value: 'Valor de desplazamiento', 122 | Amplitude: 'Amplitud', 123 | Delay_until_sin_starts: 'Retardo hasta el inicio del seno (seg)', 124 | Phase_offset_degrees: 'Desplazamiento de fase (grados)', 125 | 126 | Circuit_Sandbox_Help: 'AYUDA PARA PRUEBAS', 127 | name: 'Nombre', 128 | value: 'Valor', 129 | label: 'Etiqueta', 130 | r: 'R', 131 | c: 'C', 132 | l: 'L', 133 | color: 'Color', 134 | offset: 'Compensar', 135 | area: 'Área', 136 | type: 'Tipo', 137 | normal: 'normal', 138 | ideal: 'ideal', 139 | is: 'Is', 140 | Vt: 'Vt', 141 | WL: 'W/L', 142 | lambda: 'λ', 143 | A: 'A', 144 | Plot_color: 'Color del gráfico', 145 | Plot_offset: 'Compensar gráfica', 146 | dc: 'dc', 147 | 148 | Gain: 'A', 149 | Rin: 'Rin', 150 | Rout: 'Rout', 151 | 152 | red: 'rojo', 153 | green: 'verde', 154 | blue: 'azul', 155 | cyan: 'cian', 156 | magenta: 'magenta', 157 | yellow: 'amarillo', 158 | orange: 'naranja', 159 | black: 'negro', 160 | xaxis: 'eje x', 161 | 162 | Ics: 'Ics', 163 | Ies: 'Ies', 164 | alphaF: '𝛼F', 165 | alphaR: '𝛼R', 166 | 167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.", 168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.", 169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.", 170 | delete_ctl: "Delete component. Also try 'Del'.", 171 | 172 | last_line: 'última líena, sin coma' 173 | }; 174 | 175 | var strSHelp = "AYUDA DEL CIRCUITO DE PRUEBAS \n\n"; // Ayuda incrustado 176 | var strAddC = "Añadir componente: Haga clic en una parte en la papelera y a continuación haga clic en el esquema para añadir. \n\n"; 177 | var strAddW = "Añadir cable: los cables comienzan a partir de los puntos de conexión (círculos abiertos). Haga clic en una conexión para iniciar un cable, arrastre y suelte. \n\n"; 178 | var strSel = "Seleccionar: Arrastre en rectángulo para seleccionar los componentes. Shift clic para incluir otro componente. \n\n"; 179 | var strMove = "Mover: Haga clic para seleccionar y a continuación arrastre a una nueva ubicación. \n\n"; 180 | var strDel = "Borrar: Seleccionar y a continuación haga clic en el icono X o presione RETROCESO. \n\n"; 181 | var strRot = "Rotar/Reflejar: Haga clic para seleccionar, a continuación, haga clic en el icono de rotación o presione la letra \"r\" para girar 90. Repetir para más rotaciones y reflexiones. \n\n"; 182 | var strView = ""; 183 | var strProp = "Propiedades: Haga doble clic en un componente para cambiar los valores. \n\n"; 184 | var strNum = "Sufijos numéricos se pueden introducir con notación de ingeniería: \n\ 185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\ 186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15"; 187 | -------------------------------------------------------------------------------- /js/fet_vsparms.js: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Circuit simulator fet_vs parameters and parameter initialization 4 | // 5 | ////////////////////////////////////////////////////////////////////////////// 6 | 7 | // Copyright (C) 2012 Massachusetts Institute of Technology 8 | 9 | function Fet_vs_parms() { 10 | // this.finalize(undefined); 11 | this.finalize(undefined); 12 | } 13 | 14 | Fet_vs_parms.prototype.vs_display_default = " { \ 15 | \"nT\": 22, \"pT\": 22, \ 16 | \"nLg\": 38e-7, \"pLg\": 38e-7, \ 17 | \"ndLg\": 8e-7, \"pdLg\": 8e-7, \ 18 | \"netov\": 1.38e-7, \"petov\": 1.34e-7, \ 19 | \"nCg\": 2.50e-6, \"pCg\": 2.57e-6, \ 20 | \"nS0\": 0.095, \"pS0\": 0.089, \ 21 | \"ndelta\": 0.122, \"pdelta\": 0.145, \ 22 | \"nVt0\": 0.470, \"pVt0\": 0.554, \ 23 | \ 24 | \"nvxo\": 0.985e7, \"pvxo\": 0.754e7, \ 25 | \"nmu\": 195, \"pmu\": 166, \ 26 | \"nRx\":71, \"pRx\": 73, \ 27 | \"nRy\":71, \"pRy\": 73, \ 28 | \ 29 | \"nCif\": 1.5e-12, \"pCif\": 1.38e-12, \ 30 | \"nCof\": 1.84e-12, \"pCof\": 1.47e-12 }"; 31 | 32 | Fet_vs_parms.prototype.vs_parm_default = " { \ 33 | \"nT\": 22, \"pT\": 22, \ 34 | \"nWscale\": 1.0, \"pWscale\": 1.0, \ 35 | \"nLg\": 38e-7, \"pLg\": 38e-7, \ 36 | \"ndLg\": 8e-7, \"pdLg\": 8e-7, \ 37 | \"nCg\": 2.50e-6, \"pCg\": 2.57e-6, \ 38 | \"netov\": 1.38e-7, \"petov\": 1.34e-7, \ 39 | \"ndelta\": 0.122, \"pdelta\": 0.145, \ 40 | \"nS0\": 0.095, \"pS0\": 0.089, \ 41 | \"nnd\": 0.0, \"pnd\": 0.0, \ 42 | \"nRx\":71, \"pRx\": 73, \ 43 | \"nRy\":71, \"pRy\": 73, \ 44 | \"nCif\": 1.5e-12, \"pCif\": 1.38e-12, \ 45 | \"nCof\": 1.84e-12, \"pCof\": 1.47e-12, \ 46 | \"nvxo\": 0.985e7, \"pvxo\": 0.754e7, \ 47 | \"nrv\": 1, \"prv\": 1, \ 48 | \"nzeta\": 1, \"pzeta\": 1.0, \ 49 | \"nmu\": 195, \"pmu\": 166, \ 50 | \"nbeta\": 1.8, \"pbeta\": 1.8, \ 51 | \"nbetaq\": 1.8, \"pbetaq\": 1.8, \ 52 | \"nalpha\": 3.5, \"palpha\": 3.5, \ 53 | \"nphib\": 0.9, \"pphib\": 0.9, \ 54 | \"ngamma\": 0.24, \"pgamma\": 0.16, \ 55 | \"nVt0\": 0.470, \"pVt0\": 0.554, \ 56 | \"nVdA\": 1.0, \"pVdA\": 1.0 }"; 57 | 58 | // VS Model adapted from Matlab (Lan Wei and Dimitri Antoniadis). 59 | 60 | function Fet_vs_parms_type(type_sign) { 61 | //alert('in device with type ' + type_sign); 62 | this.T=27; // Temperature in degrees C 63 | this.Wscale=1.0; // Scales all the devices 64 | this.Lg = 30e-7; // Gate length [cm] 65 | this.dLg= 9e-7; // dLg=L_g-L_c (default 0.3xLg_nom) 66 | this.Cg=2.65e-6; // Gate cap [F/cm^2] 67 | this.etov = 1.2e-7; // Eqv. dielec. thick at S/D-G overlap [cm] 68 | this.delta=0.125; // DIBL [V/V] 69 | this.S0=0.098; // Subthresh swing at T=27C & Vd=VdA [V/decade] 70 | this.nd=0; // Punchthrough Factor typically none (nd=0) or 0-> 4. 71 | 72 | // Series R for "x" terminal [ohm-micron] (Rs) 73 | if (this.type_sign > 0) this.Rx=55; // [ohm-microns], n < p? 74 | else this.Rx = 75; 75 | 76 | this.Ry=this.Rx; // Series R for "y" (Typically assume Rs=Rd) 77 | this.Cif = 1e-12; // Inner fringing S or D capacitance [F/cm] 78 | this.Cof = 2e-13; // Outer fringing S or D capacitance [F/cm] 79 | 80 | // Virtual src velocity [cm/s] 81 | if (this.type_sign > 0) this.vxo=1.45*1e7; 82 | else this.vxo=1.07*1e7; 83 | 84 | this.rv=1.0; // Ratio vxo(strong inv)/vxo(weak inv) 85 | this.zeta=1; // Sets transition Vg for vxo, do not set=0! 86 | // If rv=1, vxo=constant, zeta irrelevant 87 | this.mu=230; // Mobility [cm^2/V.s] 88 | this.beta=1.8; // Saturation factor. Typ. nFET=1.8, pFET=1.6 89 | this.betaq = 1.8; // Beta in the charge model 90 | this.alpha=3.5; 91 | 92 | this.phib=0.9; // ~abs(2*phif)>0 [V] 93 | this.gamma=0.3; // Body factor [sqrt(V)] 94 | 95 | if (this.type_sign > 0) this.Vt0=0.5286; 96 | else this.Vt0=0.5323; // Nominal threshold voltage 97 | 98 | this.VdA=1.0; // Vd [V] corresponding to IdA if given. 99 | 100 | 101 | this.perturbv = 1.0e-6; //dV for f-D deriv, not too small, not too large. 102 | } 103 | 104 | Fet_vs_parms_type.prototype.postproc = function() { 105 | // Derived physical parameters 106 | this.phit = 8.617e-5*(273+this.T); // kT/q 107 | this.St=this.S0*(this.T+273.0)/300.0; 108 | this.nint = this.St/(Math.log(10.0)*this.phit); 109 | this.n0=this.nint - this.nd*this.VdA; 110 | // Intrinsic swing n-factor at T 111 | 112 | // Derived non-physical parameters. 113 | this.LgmdLg = this.Lg-this.dLg; 114 | this.vel2v = this.LgmdLg/this.mu; 115 | this.aphit = this.alpha*this.phit; 116 | this.sqrtphib = Math.sqrt(this.phib); 117 | this.vxofrac = this.vxo * (this.rv-1.0)/this.rv; 118 | this.dvgstdvds = this.delta; 119 | this.Rx *= 1.0e-4; // Rx, Ry ohm-u -> ohm-cm 120 | this.Ry *= 1.0e-4; 121 | this.Cov=(0.345e-12/this.etov)*this.dLg/2 + this.Cof; 122 | this.Cgso = this.Cov; // Gate to source overlap cap [f/cm] 123 | this.Cgdo = this.Cov; // Gate to drain overlap cap [f/cm] 124 | } 125 | 126 | function niceDisp(obj) { 127 | var strObj = JSON.stringify(obj); 128 | strObj = strObj.replace(/,/g,",\n"); 129 | strObj = strObj.slice(1,-1); 130 | return(strObj); 131 | } 132 | 133 | function niceDispCourse(n,p) { 134 | var parmsList = 135 | ["T","Lg","etov","Cg","S0","delta", 136 | "Vt0","vxo","mu","Rx","Ry","Cif","Cof"]; 137 | var retStr = ""; 138 | for (var i = 0; i < parmsList.length; i++) { 139 | retStr += "\"" + "n" + parmsList[i] + "\"" + ":" 140 | + n[parmsList[i]].toExponential(2) 141 | + "," + " \t" 142 | + "\"" + "p" + parmsList[i] + "\"" + ":" 143 | + p[parmsList[i]].toExponential(2); 144 | if (i < (parmsList.length - 1)) retStr += "," + "\n"; 145 | else retStr += "\n"; 146 | } 147 | return(retStr); 148 | } 149 | 150 | // Get standard parameters for the n and p-type devices. 151 | Fet_vs_parms.prototype.p = new Fet_vs_parms_type(-1); 152 | Fet_vs_parms.prototype.n = new Fet_vs_parms_type(1); 153 | 154 | 155 | // 1) Extract Parameters from text in JSON format in to Fet prototypes, 156 | // so that all FET's are affected. 157 | Fet_vs_parms.prototype.parse = function(fileString) { 158 | if (fileString.length == 0) { 159 | var fetObj = null; 160 | } else { 161 | try { 162 | var fetObj = JSON.parse(fileString); 163 | } 164 | catch(e) { 165 | // JSON Format error in string, try to find it. 166 | fetObj = null; 167 | var commaInd = 0, foundit = false; 168 | for (var rs = fileString.slice(1,-1); // remove { and } 169 | rs.length > 0; 170 | rs = rs.slice(commaInd+1,rs.length)) { 171 | commaInd = rs.indexOf(","); 172 | commaInd = (commaInd > 0) ? commaInd : rs.length; 173 | var rss = "{" + rs.slice(0,commaInd) + "}"; 174 | try { 175 | var fetObjt = JSON.parse(rss); 176 | } 177 | catch(e) { 178 | alert("Syntax error near " + rss + 179 | "\n Format for parm file: key colon val comma" + 180 | "\n Any missing colons or commas?"); 181 | foundit = true; 182 | break; 183 | } 184 | } 185 | if (foundit == false) 186 | alert("Could not find the syntax error in " + fileString 187 | + "\n Format for parameter file: key colon val comma" 188 | + "\n Any missing colons or commas?"); 189 | } 190 | } 191 | var updateParm = new Object(); updateParm.n = 0; updateParm.p = 0; 192 | for (var keystr in fetObj) { 193 | var k1 = keystr.substring(0,1); 194 | var krest = keystr.substring(1,keystr.length); 195 | var val = fetObj[keystr]; 196 | if ((k1 == "n") || (k1 == "p")) { 197 | if (Fet_vs_parms.prototype[k1][krest] == undefined) { 198 | alert("unknown parameter name " + krest); 199 | } else { 200 | updateParm[k1] += 1; 201 | Fet_vs_parms.prototype[k1][krest] = val; 202 | } 203 | } else { 204 | alert("unknown model type " + k1); 205 | } 206 | } 207 | return(updateParm); 208 | } 209 | 210 | // 1) Extract Parameters from text in JSON format if it exists. 211 | // 2) Post process the parameters. 212 | Fet_vs_parms.prototype.finalize = function(fileString) { 213 | 214 | // First put in the default parameters. 215 | var defaultP = Fet_vs_parms.prototype.vs_parm_default; 216 | var updateParm = Fet_vs_parms.prototype.parse(defaultP); 217 | 218 | // If there is a fileString passed in, process it to update 219 | // the prototype parameters. 220 | if (fileString != undefined) { 221 | updateParm = Fet_vs_parms.prototype.parse(fileString); 222 | //var dispN = niceDisp(Fet_vs_parms.prototype.n); 223 | //var dispP = niceDisp(Fet_vs_parms.prototype.p); 224 | var dispText = niceDispCourse(Fet_vs_parms.prototype.n, 225 | Fet_vs_parms.prototype.p); 226 | alert( updateParm["n"] + " VS N-Fet" + " \t" 227 | + updateParm["p"] + " VS P-Fet\n" 228 | + "Updated " + " \t" + "Updated\n" 229 | + "Parameters" + " \t" + "Parameters\n" 230 | + "\n" 231 | + dispText); 232 | } 233 | 234 | Fet_vs_parms.prototype.p.postproc(); 235 | Fet_vs_parms.prototype.n.postproc(); 236 | } 237 | 238 | // Uses javascript file API in html5 to read local file 239 | function rdFetF(eventt) { 240 | 241 | // Helper function, Process the file data given as a string 242 | function procFileStr(fileString) { 243 | if (fileString.length > 0) { 244 | // Get rid of end of line characters 245 | fileString = fileString.replace(/(\r\n|\n|\r)/gm,""); 246 | // Show results 247 | //alert( "Fet Parameters Received\n" + fileString); 248 | } 249 | // Put in curly braces for JSON. 250 | fileString = "{" + fileString + "}"; 251 | 252 | // Modify the prototype so that all fets are affected. 253 | Fet_vs_parms.prototype.finalize(fileString); 254 | } 255 | 256 | // Get file from event, event might be new file name or reload 257 | var fetFile = null; 258 | if (eventt.target.files != null) { 259 | fetFile = eventt.target.files[0]; 260 | } else { 261 | var tempf = document.getElementById('fetParms'); 262 | if (tempf == undefined) fetFile = undefined; 263 | else fetFile = tempf.files[0]; 264 | } 265 | 266 | // Check for undefined file and process null string. 267 | if (fetFile == undefined) { 268 | alert("No Parameter File Name Specified."); 269 | procFileStr(""); 270 | } 271 | // Else read the file and process. 272 | else { 273 | var freader = new FileReader(); 274 | freader.onload = function(ff) { 275 | var fileString = ff.target.result; 276 | procFileStr(fileString); 277 | } 278 | freader.readAsText(fetFile); 279 | } 280 | } 281 | 282 | //document.querySelector('.fet_reload').addEventListener('click',rdFetF,false); 283 | 284 | 285 | -------------------------------------------------------------------------------- /js/fet_vsp.js: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Circuit simulator fet_vs equations with analytic derivatives 4 | // 5 | ////////////////////////////////////////////////////////////////////////////// 6 | 7 | // Copyright (C) 2012 Massachusetts Institute of Technology 8 | 9 | 10 | // VS Model adapted from Matlab (Lan Wei and Dimitri Antoniadis). 11 | 12 | // Note, evaluate as if an N-type intrinsic device with Vds > 0, type and 13 | // Ids direction correction handled in calling routine. 14 | // Smoothsqrt is used to avoid arg near zero (infinite slope) or neg (complex). 15 | function Fet_vs_idsq(device, V, doq) { 16 | 17 | // Vgs-vt, vt increased by body effect, decreased by dibl. 18 | // Body effect (e.g. SH. Shichman, D. A. Hodges, Modeling and 19 | // Simulation of Insulated-Gate Field-Effect Transistor Circuits, 20 | // IEEE J. of Solid-State Circuits, vol. SC-3, no. 3, Sept. 1968. 21 | // Dibl effect, Khakifirooz (3). 22 | var D=device.D, G=device.G, B=device.B, S=device.S; 23 | var Vt0p = device.parms.Vt0 + device.dVt; 24 | 25 | with(device.parms) { 26 | var Vds = V[D]; 27 | var Vgs = V[G]; 28 | var Vbs = V[B]; 29 | var fdf = device.smoothsqrt(phib-Vbs,true); // Ask for deriv 30 | var sqrtpmv = fdf[0]; 31 | var dsqrtpmvdarg = fdf[1]; 32 | var Vt0bs = Vt0p + gamma*(sqrtpmv-sqrtphib) 33 | var vgst = Vgs - (Vt0bs - dvgstdvds*Vds); 34 | var dsqrtpmvdvbs = -dsqrtpmvdarg; 35 | var dvgstdvbs = -gamma * dsqrtpmvdvbs; 36 | // dvgstdvgs = 1 37 | 38 | // Carrier vel with transition from weak inversion (vxo/rv) 39 | // to strong (vxo) (reference needed). If rv=1, vx0/rv = vxo, no 40 | // velocity adjustment 41 | var expetafv = Math.exp((vgst - 0.5*zeta*zeta*phit)/(zeta*phit)); 42 | var FFv=1 / (1+expetafv); 43 | var vx0 = vxo - vxofrac * FFv; 44 | 45 | var dvx0dvgs = (vxofrac/(zeta*phit))*expetafv*(FFv*FFv); 46 | // dvx0dvgs = dvx0vgst 47 | var dvx0dvds = dvx0dvgs * dvgstdvds; 48 | var dvx0dvbs = dvx0dvgs * dvgstdvbs; 49 | 50 | // Fsub drops from 1->0 as vgst rises from below zero to just 51 | // above (subthresh) Fsub is ~1 vgs-vt << -aphit/2 and 52 | // is ~0 vgs-vt >> aphit/2, Khakifirooz, (4) 53 | var expetafs = Math.exp((vgst + 0.5*aphit)/aphit); 54 | var Fsub = 1/(1+expetafs); 55 | 56 | var dFsubdvgst = -expetafs*(Fsub*Fsub)/aphit; 57 | 58 | // Source chg/unit w, eta and Qinv from Khakifirooz (2), 59 | // Vds variation of n needs ref. Note if nd=0, nphit = n0*phit. 60 | var n = (n0 + nd*Vds); 61 | var nphit = n*phit; // Reference needed 62 | var eta = (vgst + Fsub*aphit)/nphit; 63 | var expeta = Math.exp(eta); 64 | var logexpeta = Math.log(1+expeta); 65 | var Qinv = Cg*nphit*logexpeta; 66 | 67 | var dnphitdvds = nd*phit; 68 | var dlogexpetadeta = expeta / (1 + expeta); 69 | var dQinvdeta = Cg * nphit * dlogexpetadeta; 70 | var detadvgst = (1+aphit*dFsubdvgst)/nphit; 71 | var detadvds = detadvgst*dvgstdvds - dnphitdvds * eta / nphit; 72 | var dQinvdvgs = dQinvdeta*detadvgst; 73 | var dQinvdvbs = dQinvdvgs*dvgstdvbs; 74 | var dQinvdvds = dQinvdeta* detadvds + Cg * logexpeta * dnphitdvds; 75 | 76 | // Fsat models saturation effects, ~1 when 77 | // vds >> vdsat, ->0 as vds -> 0. 78 | // Khakifirooz, (8), (9), (10) (and post eqn text), then (6). 79 | var vdsat = vel2v * vx0 * (1-Fsub) + phit*Fsub; 80 | var vsratio = Vds/vdsat; 81 | var vsbeta = 1+Math.pow(vsratio,beta); 82 | var vsbetabeta = Math.pow(vsbeta,(1/beta)); 83 | var Fsat = vsratio/vsbetabeta; 84 | 85 | var dFsatdv_r = 1/(vsbetabeta*vsbeta); 86 | var dv_rdvgst = (vel2v*vx0-phit)*(vsratio/vdsat)*dFsubdvgst; 87 | var dFsatdvgs = dFsatdv_r * dv_rdvgst; 88 | var dFsatdvbs = dFsatdv_r * dv_rdvgst * dvgstdvbs; 89 | var dFsatdvds = dFsatdv_r*(Vds*dv_rdvgst*dvgstdvds + 1.0/vdsat); 90 | 91 | // Ids is width * (src chg/unit width) * vel * Fsat, where 92 | // velocity (vx0) and q/width (Qinv) are complicated functions 93 | // of terminal v's. Khakifirooz, (5) 94 | var Ids = device.W*Qinv*vx0*Fsat; 95 | var dIdsdvds = device.W 96 | * (Qinv*vx0*dFsatdvds + Qinv*dvx0dvds*Fsat +dQinvdvds*vx0*Fsat); 97 | var dIdsdvgs = device.W 98 | * (Qinv*vx0*dFsatdvgs + Qinv*dvx0dvgs*Fsat + dQinvdvgs*vx0*Fsat); 99 | var dIdsdvbs = device.W 100 | * (Qinv*vx0*dFsatdvbs + Qinv*dvx0dvbs*Fsat + dQinvdvbs*vx0*Fsat); 101 | 102 | if (doq == true) { 103 | // Pass back Qd, Qg, and Qb with sensitivities to vds,vgs and vbs. 104 | // Nonlinear Charge calculation. Intrinsic charges adapted from 105 | // classical expressions for Qs and Qd [E.g. Tsividis Book] 106 | var sag = sqrtpmv + 0.5*gamma; 107 | var scale = sqrtpmv / sag; 108 | var Va = nphit * logexpeta * scale; 109 | var Vsatq = Math.sqrt(9*phit*phit + Va * Va); // arg > 0 always 110 | var Vdr = Vds / Vsatq; 111 | var vdrbq = (1+ Math.pow(Vdr,betaq)); 112 | var vdrbqbq = Math.pow(vdrbq,(1/betaq)); 113 | var x = 1 - Vdr /vdrbqbq; 114 | 115 | var dvadvds = scale 116 | * (dnphitdvds*logexpeta + nphit*dlogexpetadeta*detadvds); 117 | var dvadvgst = nphit*scale*dlogexpetadeta*detadvgst; 118 | var dvadsqrtpmv = 0.5*gamma*(nphit*logexpeta)/(sag*sag); 119 | var dvadvbs = dvadvgst*dvgstdvbs + dvadsqrtpmv*dsqrtpmvdvbs; 120 | 121 | var dvdrdva = -(Vdr/Vsatq)*(Va/Vsatq); 122 | var dvdrdvds = 1/Vsatq + dvdrdva*dvadvds; 123 | var dxdvdr = -1/(vdrbqbq*vdrbq); 124 | var dxdvds = dxdvdr*dvdrdvds; 125 | var dxdvgs = dxdvdr*dvdrdva*dvadvgst; 126 | var dxdvbs = dxdvdr*dvdrdva*dvadvbs; 127 | 128 | ////// original qs, qd model, from Tsividis 129 | // qi=2/3*(1+x+x.^2)./(1+x); 130 | var den=15*((1+x)*(1+x)); 131 | var qs = (((4*x+8)*x+12)*x+6)/den; 132 | var qdp = (((6*x+12)*x+8)*x+4)/den; 133 | var ddz = den * (x+1); 134 | var dqsdx = 4.0/15.0-(8*x+4)/ddz; 135 | var dqdpdx = 0.4-(2*x+6)/ddz; 136 | 137 | 138 | // DIBL effect on drain charge. Calculate dQinv at virtual source 139 | // due to DIBL only. Then correct the qd factor to reflect this 140 | // change in channel charge change due to Vd 141 | //logexpetai = log(1+exp((Vgs - Vt0bs + Fsub*aphit)./nphit)); 142 | var deta = -(dvgstdvds*Vds)/nphit; 143 | var expdeta = Math.exp(deta); 144 | var logexpetai = Math.log(1+expeta*expdeta); 145 | var etaetair = 1 - logexpetai / logexpeta; 146 | var qd = qdp + x * (qs+qdp) * (Fsub-1) * etaetair; 147 | 148 | var ddetadvds = (-deta*dnphitdvds - dvgstdvds)/nphit; 149 | var dlogexpetaiddeta = (expeta*expdeta)/(1+expeta*expdeta); 150 | var dlogexpetaideta = dlogexpetaiddeta; 151 | var detaetairdeta = ((logexpetai/logexpeta)*dlogexpetadeta 152 | - dlogexpetaideta)/logexpeta; 153 | var detaetairddeta = -dlogexpetaiddeta/logexpeta; 154 | 155 | var dqddx = dqdpdx + (x*(dqsdx+dqdpdx)+(qs+qdp))*(Fsub-1)*etaetair; 156 | var dqddFsub = x * (qs+qdp) * etaetair; 157 | var dqddetaetair = x * (qs+qdp) * (Fsub-1); 158 | 159 | var dqddvds = dqddx*dxdvds + dqddFsub*dFsubdvgst*dvgstdvds 160 | + dqddetaetair*(detaetairddeta*ddetadvds+detaetairdeta*detadvds); 161 | var dqddvgs = dqddx*dxdvgs + dqddFsub*dFsubdvgst 162 | + dqddetaetair*detaetairdeta*detadvgst; 163 | var dqddvbs = dqddx*dxdvbs + dqddFsub*dFsubdvgst*dvgstdvbs 164 | + dqddetaetair*detaetairdeta*detadvgst*dvgstdvbs; 165 | 166 | // Inversion charge partitioning to internal terminals s and d 167 | var Qinvs = LgmdLg * Qinv * qs; 168 | var Qinvd = LgmdLg * Qinv * qd; 169 | 170 | var dQinvsdvds = LgmdLg*(dQinvdvds * qs + Qinv * dqsdx * dxdvds); 171 | var dQinvsdvgs = LgmdLg*(dQinvdvgs * qs + Qinv * dqsdx * dxdvgs); 172 | var dQinvsdvbs = LgmdLg*(dQinvdvbs * qs + Qinv * dqsdx * dxdvbs); 173 | 174 | var dQinvddvds = LgmdLg * (dQinvdvds * qd + Qinv * dqddvds); 175 | var dQinvddvgs = LgmdLg * (dQinvdvgs * qd + Qinv * dqddvgs); 176 | var dQinvddvbs = LgmdLg * (dQinvdvbs * qd + Qinv * dqddvbs); 177 | 178 | // Yet another nonlinear charge 179 | var fdf = device.smoothsqrt(phib-(Vbs-Vds),true); 180 | var sqrtpmvbd = fdf[0]; 181 | var dsqrtpmvbddvbs = -fdf[1]; 182 | var dsqrtpmvbddvds = fdf[1]; 183 | 184 | var Vt0bd = Vt0p + gamma*(sqrtpmvbd-sqrtphib); 185 | var Voff = Vds * dvgstdvds * (1-x) + 0.5*aphit; 186 | var nphits = 1.1 * nphit; 187 | var dnphitsdvds = 1.1*dnphitdvds; 188 | var Vgd = Vgs - Vds; // Voltages referred to the drain 189 | var etas = (Vgs+Voff-Vt0bs)/nphits; 190 | var etad = (Vgd+Voff-Vt0bd)/nphits; 191 | var expetas = Math.exp(etas); 192 | var expetad = Math.exp(etad); 193 | var logexpetas = Math.log(1+expetas); 194 | var logexpetad = Math.log(1+expetad); 195 | var vgsmFF = nphit*logexpetas; 196 | var vgdmFF = nphit*logexpetad; 197 | var CC=3e-13; // Temporary - allows Vg dep of Cif before screening 198 | 199 | var Qsif = CC * Vgs * Vgs - (Cif + CC*Vgs) * vgsmFF; 200 | var Qdif = CC * Vgd * Vgd - (Cif + CC*Vgd) * vgdmFF; 201 | 202 | var dvoffdvbs = -Vds*dvgstdvds*dxdvbs; 203 | var dvoffdvgs = -Vds*dvgstdvds*dxdvgs; 204 | var dvoffdvds = dvgstdvds*(1-x) - Vds*dvgstdvds*dxdvds; 205 | 206 | var detasdvds = (dvoffdvds - dnphitsdvds*etas)/nphits; 207 | var detasdvgs = (1 + dvoffdvgs)/nphits; 208 | var detasdvbs = (dvgstdvbs + dvoffdvbs)/nphits; 209 | 210 | var dvgsmFFdetas = nphit * (expetas/(expetas + 1)); 211 | var dvgsmFFdvds = dvgsmFFdetas*detasdvds + dnphitdvds*logexpetas; 212 | 213 | var dvgsmFFdvgs = dvgsmFFdetas * detasdvgs; 214 | var dvgsmFFdvbs = dvgsmFFdetas * detasdvbs; 215 | 216 | var dQsifdvds = -(Cif + CC*Vgs) * dvgsmFFdvds; 217 | var dQsifdvgs = 2.0*CC*Vgs - CC*vgsmFF - (Cif+CC*Vgs)*dvgsmFFdvgs; 218 | var dQsifdvbs = -(Cif + CC*Vgs) * dvgsmFFdvbs; 219 | 220 | //etad = (Vgd + Voff - Vt0bd)/nphits; 221 | var detaddvds =(dvoffdvds-1.0-gamma*dsqrtpmvbddvds 222 | -dnphitsdvds*etad) / nphits; 223 | var detaddvgs = (1.0+dvoffdvgs)/nphits; 224 | var detaddvbs = (dvoffdvbs-gamma*dsqrtpmvbddvbs)/nphits; 225 | 226 | var dvgdmFFdetad = nphit*(expetad/(expetad+1)); 227 | var dvgdmFFdvds = dvgdmFFdetad*detaddvds + dnphitdvds*logexpetad; 228 | var dvgdmFFdvgs = dvgdmFFdetad*detaddvgs; 229 | var dvgdmFFdvbs = dvgdmFFdetad*detaddvbs; 230 | 231 | var dQdifdvds = -2.0*CC*Vgd + CC*vgdmFF -(Cif + CC*Vgd)*dvgdmFFdvds; 232 | var dQdifdvgs = 2.0*CC*Vgd - CC*vgdmFF - (Cif + CC*Vgd)*dvgdmFFdvgs; 233 | var dQdifdvbs = -(Cif + CC*Vgd)*dvgdmFFdvbs; 234 | 235 | // Body charge based on approximate surface potential (psis). 236 | var fdf = device.smoothsqrt(phib+aphit+phit*Math.log(logexpeta) - Vbs,true); 237 | var spsis = fdf[0]; 238 | var dspsisdarg = fdf[1]; 239 | var Qbqi = (1-(qs+qd))/(2*sqrtpmv+gamma); 240 | var qbf = device.W*LgmdLg*gamma; 241 | var Qb = -qbf*(Cg * spsis + Qinv*Qbqi); 242 | 243 | var dspsisdlogexpeta = dspsisdarg*phit/logexpeta; 244 | var dspsisdeta = dspsisdlogexpeta*dlogexpetadeta; 245 | var dspsisdvds = dspsisdeta*detadvds; 246 | var dspsisdvgs = dspsisdeta*detadvgst; 247 | var dspsisdvbs = dspsisdvgs*dvgstdvbs - dspsisdarg; 248 | 249 | var spg = (2*sqrtpmv+gamma); 250 | var dQbqidvds = -(dqsdx*dxdvds + dqddvds)/spg; 251 | var dQbqidvgs = -(dqsdx*dxdvgs + dqddvgs)/spg; 252 | var dQbqidvbs = (-(dqsdx*dxdvbs+dqddvbs)+2*Qbqi*dsqrtpmvdvbs)/spg; 253 | 254 | var dQbdvds = -qbf*(Cg*dspsisdvds+Qinv*dQbqidvds+dQinvdvds*Qbqi); 255 | var dQbdvgs = -qbf*(Cg*dspsisdvgs+Qinv*dQbqidvgs+dQinvdvgs*Qbqi); 256 | var dQbdvbs = -qbf*(Cg*dspsisdvbs+Qinv*dQbqidvbs+dQinvdvbs*Qbqi); 257 | 258 | // Linear caps treated externally with Cgdo and Cgso 259 | // Linear q from G-S and G-D overlap & outer fringe (linear part) 260 | // var Qsov = (Cov + Cif) * Vgs; 261 | // var Qdov = (Cov + Cif) * Vgd; // Vgd = Vgs - Vds 262 | // Put Cif linear part back in to instrinsic model 263 | var Qsov = Cif * Vgs; 264 | var Qdov = Cif * Vgd; // Vgd = Vgs - Vds 265 | 266 | // Total charge at internal terminals x and y. 267 | // var Qs = -W*(Qinvs+Qsov+Qsif); Qsov handled by Cgso 268 | //device.Qd = -W*(Qinvd+Qdov+Qdif); Qdov handled by Cgdo 269 | var Qs = -device.W*(Qinvs + Qsov + Qsif); 270 | var Qd = -device.W*(Qinvd + Qdov + Qdif); 271 | 272 | //var dQddvds = -W*(dQinvddvds - (Cov+Cif) + dQdifdvds); 273 | //var dQddvgs = -W*(dQinvddvgs + (Cov+Cif) + dQdifdvgs); 274 | //var.dQsdvgs = -device.W*(dQinvsdvgs + (Cov+Cif) + dQsifdvgs); 275 | var dQddvds = -device.W*(dQinvddvds - Cif + dQdifdvds); 276 | var dQddvgs = -device.W*(dQinvddvgs + Cif + dQdifdvgs); 277 | var dQddvbs = -device.W*(dQinvddvbs + dQdifdvbs); 278 | 279 | var dQsdvds = -device.W*(dQinvsdvds + dQsifdvds); 280 | var dQsdvgs = -device.W*(dQinvsdvgs + Cif + dQsifdvgs); 281 | var dQsdvbs = -device.W*(dQinvsdvbs + dQsifdvbs); 282 | 283 | // Final charge balance 284 | var Qg = -(Qs+Qd+Qb); 285 | var dQgdvds = -(dQsdvds + dQddvds + dQbdvds); 286 | var dQgdvgs = -(dQsdvgs + dQddvgs + dQbdvgs); 287 | var dQgdvbs = -(dQsdvbs + dQddvbs + dQbdvbs); 288 | } 289 | 290 | if (doq == false) { // Pass back matrix of Ids and derivs. 291 | var R = new Array(1); 292 | R[0] = new Array(4); 293 | R[0][0] = Ids; 294 | R[0][D+1] = dIdsdvds; 295 | R[0][G+1] = dIdsdvgs; 296 | R[0][B+1] = dIdsdvbs; 297 | } else { // Pass back Ids, Qd, Qg, Qb, Qs and derivatives. 298 | var R = new Array(5); 299 | for (var i = R.length-1; i >= 0; i--) 300 | R[i] = new Array(4); 301 | var Rr = R[0]; // first row used for crnt. 302 | Rr[0] = Ids; Rr[D+1]=dIdsdvds; Rr[G+1]=dIdsdvgs; Rr[B+1]=dIdsdvbs; 303 | Rr = R[D+1]; // Drain chg. 304 | Rr[0] = Qd; Rr[D+1]=dQddvds; Rr[G+1]=dQddvgs; Rr[B+1]=dQddvbs; 305 | Rr = R[G+1] // Gate chg. 306 | Rr[0] = Qg; Rr[D+1]=dQgdvds; Rr[G+1]=dQgdvgs; Rr[B+1]=dQgdvbs; 307 | Rr = R[B+1] // Bulk chg. 308 | Rr[0] = Qb; Rr[D+1]=dQbdvds; Rr[G+1]=dQbdvgs; Rr[B+1]=dQbdvbs; 309 | Rr = R[S+1] // Source chg. 310 | Rr[0] = Qs; Rr[D+1]=dQsdvds; Rr[G+1]=dQsdvgs; Rr[B+1]=dQsdvbs; 311 | } 312 | return R; 313 | } 314 | } 315 | -------------------------------------------------------------------------------- /js/hammer.min.js: -------------------------------------------------------------------------------- 1 | /*! Hammer.JS - v2.0.6 - 2016-01-06 2 | * http://hammerjs.github.io/ 3 | * 4 | * Copyright (c) 2016 Jorik Tangelder; 5 | * Licensed under the license */ 6 | !function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(j(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",f=a.console&&(a.console.warn||a.console.log);return f&&f.call(a.console,e,d),b.apply(this,arguments)}}function i(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&ha(d,c)}function j(a,b){return function(){return a.apply(b,arguments)}}function k(a,b){return typeof a==ka?a.apply(b?b[0]||d:d,b):a}function l(a,b){return a===d?b:a}function m(a,b,c){g(q(b),function(b){a.addEventListener(b,c,!1)})}function n(a,b,c){g(q(b),function(b){a.removeEventListener(b,c,!1)})}function o(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function p(a,b){return a.indexOf(b)>-1}function q(a){return a.trim().split(/\s+/g)}function r(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function u(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=na(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY);var j=F(b.deltaTime,b.deltaX,b.deltaY);b.overallVelocityX=j.x,b.overallVelocityY=j.y,b.overallVelocity=ma(j.x)>ma(j.y)?j.x:j.y,b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,b.maxPointers=c.prevInput?b.pointers.length>c.prevInput.maxPointers?b.pointers.length:c.prevInput.maxPointers:b.pointers.length,C(c,b);var k=a.element;o(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===Aa||f.eventType===Ca)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Da&&(i>za||h.velocity===d)){var j=b.deltaX-h.deltaX,k=b.deltaY-h.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=ma(l.x)>ma(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function D(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:la(c/b),y:la(d/b)}}function F(a,b,c){return{x:b/a||0,y:c/a||0}}function G(a,b){return a===b?Ea:ma(a)>=ma(b)?0>a?Fa:Ga:0>b?Ha:Ia}function H(a,b,c){c||(c=Ma);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function I(a,b,c){c||(c=Ma);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function J(a,b){return I(b[1],b[0],Na)+I(a[1],a[0],Na)}function K(a,b){return H(b[0],b[1],Na)/H(a[0],a[1],Na)}function L(){this.evEl=Pa,this.evWin=Qa,this.allow=!0,this.pressed=!1,x.apply(this,arguments)}function M(){this.evEl=Ta,this.evWin=Ua,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function N(){this.evTarget=Wa,this.evWin=Xa,this.started=!1,x.apply(this,arguments)}function O(a,b){var c=s(a.touches),d=s(a.changedTouches);return b&(Ca|Da)&&(c=t(c.concat(d),"identifier",!0)),[c,d]}function P(){this.evTarget=Za,this.targetIds={},x.apply(this,arguments)}function Q(a,b){var c=s(a.touches),d=this.targetIds;if(b&(Aa|Ba)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=s(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return o(a.target,i)}),b===Aa)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Ca|Da)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Va={touchstart:Aa,touchmove:Ba,touchend:Ca,touchcancel:Da},Wa="touchstart",Xa="touchstart touchmove touchend touchcancel";i(N,x,{handler:function(a){var b=Va[a.type];if(b===Aa&&(this.started=!0),this.started){var c=O.call(this,a,b);b&(Ca|Da)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:va,srcEvent:a})}}});var Ya={touchstart:Aa,touchmove:Ba,touchend:Ca,touchcancel:Da},Za="touchstart touchmove touchend touchcancel";i(P,x,{handler:function(a){var b=Ya[a.type],c=Q.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:va,srcEvent:a})}}),i(R,x,{handler:function(a,b,c){var d=c.pointerType==va,e=c.pointerType==xa;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ca|Da)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var $a=u(ja.style,"touchAction"),_a=$a!==d,ab="compute",bb="auto",cb="manipulation",db="none",eb="pan-x",fb="pan-y";S.prototype={set:function(a){a==ab&&(a=this.compute()),_a&&this.manager.element.style&&(this.manager.element.style[$a]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){k(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),T(a.join(" "))},preventDefaults:function(a){if(!_a){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=p(d,db),f=p(d,fb),g=p(d,eb);if(e){var h=1===a.pointers.length,i=a.distance<2,j=a.deltaTime<250;if(h&&i&&j)return}if(!g||!f)return e||f&&c&Ja||g&&c&Ka?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var gb=1,hb=2,ib=4,jb=8,kb=jb,lb=16,mb=32;U.prototype={defaults:{},set:function(a){return ha(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=X(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=X(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=X(a,this),-1===r(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=X(a,this);var b=r(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(b,a)}var c=this,d=this.state;jb>d&&b(c.options.event+V(d)),b(c.options.event),a.additionalEvent&&b(a.additionalEvent),d>=jb&&b(c.options.event+V(d))},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=mb)},canEmit:function(){for(var a=0;af?Fa:Ga,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ea:0>g?Ha:Ia,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Y.prototype.attrTest.call(this,a)&&(this.state&hb||!(this.state&hb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=W(a.direction);b&&(a.additionalEvent=this.options.event+b),this._super.emit.call(this,a)}}),i($,Y,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[db]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&hb)},emit:function(a){if(1!==a.scale){var b=a.scale<1?"in":"out";a.additionalEvent=this.options.event+b}this._super.emit.call(this,a)}}),i(_,U,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[bb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Ca|Da)&&!f)this.reset();else if(a.eventType&Aa)this.reset(),this._timer=e(function(){this.state=kb,this.tryEmit()},b.time,this);else if(a.eventType&Ca)return kb;return mb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===kb&&(a&&a.eventType&Ca?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=na(),this.manager.emit(this.options.event,this._input)))}}),i(aa,Y,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[db]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&hb)}}),i(ba,Y,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Ja|Ka,pointers:1},getTouchAction:function(){return Z.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Ja|Ka)?b=a.overallVelocity:c&Ja?b=a.overallVelocityX:c&Ka&&(b=a.overallVelocityY),this._super.attrTest.call(this,a)&&c&a.offsetDirection&&a.distance>this.options.threshold&&a.maxPointers==this.options.pointers&&ma(b)>this.options.velocity&&a.eventType&Ca},emit:function(a){var b=W(a.offsetDirection);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),i(ca,U,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[cb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance