From 931a2b715aa0ec563a3b4074960e14aad316cf0d Mon Sep 17 00:00:00 2001 From: danwaber Date: Thu, 16 May 2013 11:43:31 -0300 Subject: [PATCH 01/31] Update index.html Page incorrectly indicated (in two places) that the size parameter was ignored by PJS. It is definitely not ignored. --- reference/createFont_/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reference/createFont_/index.html b/reference/createFont_/index.html index a76a2ab..65528a5 100644 --- a/reference/createFont_/index.html +++ b/reference/createFont_/index.html @@ -38,7 +38,7 @@ installed on their computer. Only fonts that can legally be distributed should be included with a sketch.

If you have a @font-face rule in your CSS, you can use it by passing the @font-face name into the name parameter

The size parameter states the font size you want to generate. The smooth parameter specifies if the font should be antialiased or not, - and the charset parameter is an array of chars that specifies the characters to generate. All three parameters are ignored in Processing.js.

+ and the charset parameter is an array of chars that specifies the characters to generate. The smooth and charset parameters are ignored in Processing.js.

@@ -60,7 +60,7 @@ size - float: point size of the font. Ignored by PJS + float: point size of the font. From 63947a9742a554ce738db77dc5d785f440b3d59b Mon Sep 17 00:00:00 2001 From: Pomax Date: Tue, 25 Mar 2014 20:07:08 -0700 Subject: [PATCH 02/31] . --- articles/_posts/2011-12-03-p5QuickStart.html | 18 +++++++++-- articles/_posts/2011-12-04-jsQuickStart.html | 27 ++++++++++++----- ...2-07-31-processing-js-v1-4-0-released.html | 0 ...012-08-08-processing-js-v1-4-1-hotfix.html | 0 .../2014-03-25-processing-js-v1-4-7.html | 22 ++++++++++++++ download/_posts/2014-03-25-v1.4.7.html | 8 +++++ index.html | 30 ++++++++++++------- sync.sh | 0 8 files changed, 85 insertions(+), 20 deletions(-) mode change 100755 => 100644 blog/_posts/2012-07-31-processing-js-v1-4-0-released.html mode change 100755 => 100644 blog/_posts/2012-08-08-processing-js-v1-4-1-hotfix.html create mode 100644 blog/_posts/2014-03-25-processing-js-v1-4-7.html create mode 100644 download/_posts/2014-03-25-v1.4.7.html mode change 100755 => 100644 sync.sh diff --git a/articles/_posts/2011-12-03-p5QuickStart.html b/articles/_posts/2011-12-03-p5QuickStart.html index 3c4d30f..0ad2abf 100644 --- a/articles/_posts/2011-12-03-p5QuickStart.html +++ b/articles/_posts/2011-12-03-p5QuickStart.html @@ -33,6 +33,7 @@

  • Processing.js implements Processing, but not all of Java
  • Processing.js only has two rendering modes
  • Division which is expected to produce an integer might need explicit casting
  • +
  • JavaScript, and as such Processing.js, has no "char" datatype
  • Processing.js has to cheat to simulate Processing's synchronous I/O
  • Processing.js requires more care with variable naming than Processing
  • Processing.js needs your help when overriding overloaded superclass methods
  • @@ -270,6 +271,17 @@

    Division which is expected to produce an integer mig

    See lighthouse bug

    + +

    JavaScript, and as such Processing.js, has no "char" datatype

    +

    JavaScript only knows about numbers, and strings, unlike Java, which also knows about "char" + data types. The char is a 16 bit unsigned integer value, that can also pretend to be a letter + (from the ISO8859-1 codepage for the first 256 numbers, and basically magic after that). + Unfortunately, as JavaScript has no equivalent, relying on char comparisons to be either numbers + or letters is quite likely to cause problems. If you have Processing code where you're comparing + chars, you will either have to perform int casting, or string casting, using the int() + and str() functions, so that you know you're explicitly comparing datatypes that + JavaScript can deal with.

    +

    Processing.js has to cheat to simulate Processing's synchronous I/O

    Processing uses a synchronous I/O model, which means that functions like loadImage() @@ -333,7 +345,7 @@

    Processing.js requires more care with variable na a variable named line might seem reasonable, but it will cause issues with the similarly named line() function built-into Processing and Processing.js. This is equally true for built-in functions and functions you create. A good rule- - of-thumb is: avoid having a variable foo in the same sketch as a function + of-thumb is: avoid having a variable foo in the same sketch as a function foo();.

    Processing.js needs your help when overriding overloaded superclass methods

    @@ -348,7 +360,7 @@

    Processing.js needs your help when overriding overl { ... } - + void doSomething(float x, float y) { ... @@ -361,7 +373,7 @@

    Processing.js needs your help when overriding overl { // different code from compared to the super class } - + // even though we don't override this method, // its signature must be added to prevent Pjs // from getting the method chain wrong: diff --git a/articles/_posts/2011-12-04-jsQuickStart.html b/articles/_posts/2011-12-04-jsQuickStart.html index b4dd3aa..58a5704 100644 --- a/articles/_posts/2011-12-04-jsQuickStart.html +++ b/articles/_posts/2011-12-04-jsQuickStart.html @@ -18,14 +18,14 @@

    1. For the Impatient
    2. Why Processing.js? -
        +
        1. What is Processing?
        2. What does Processing bring to the web?
        3. How much work is it to learn Processing?
      1. Ways to use Processing.js -
          +
          1. Writing Pure Processing Code
          2. Pre-compiling Processing code to JavaScript
          3. Writing JavaScript-only Processing.js code
          4. @@ -42,6 +42,7 @@

            1. Processing.js provides access to various DOM/JavaScript objects via the externals property
            2. Division which is expected to produce an integer might need explicit casting
            3. +
            4. JavaScript, and as such Processing.js, has no "char" datatype
            5. Processing.js has to cheat to simulate Processing's synchronous I/O
            6. Processing.js requires more care with variable naming than Processing
            7. Processing.js needs your help when overriding overloaded superclass methods
            8. @@ -172,7 +173,7 @@

              {% highlight javascript linenos %} // hard-coded Processing code, text from an HTML widget, downloaded text, etc. -var processingCode = "..."; +var processingCode = "..."; var jsCode = Processing.compile(processingCode).sourceCode; {% endhighlight %} @@ -441,8 +442,20 @@

              See lighthouse bug

              -

              - Processing.js has to cheat to simulate Processing's synchronous I/O

              + + +

              JavaScript, and as such Processing.js, has no "char" datatype

              +

              JavaScript only knows about numbers, and strings, unlike Java, which also knows about "char" + data types. The char is a 16 bit unsigned integer value, that can also pretend to be a letter + (from the ISO8859-1 codepage for the first 256 numbers, and basically magic after that). + Unfortunately, as JavaScript has no equivalent, relying on char comparisons to be either numbers + or letters is quite likely to cause problems. If you have Processing code where you're comparing + chars, you will either have to perform int casting, or string casting, using the int() + and str() functions, so that you know you're explicitly comparing datatypes that + JavaScript can deal with.

              + + +

              Processing.js has to cheat to simulate Processing's synchronous I/O

              Processing uses a synchronous I/O model, which means that functions like loadImage() take time to execute, and while they are running, nothing else happens: the program @@ -519,7 +532,7 @@

              { ... } - + void doSomething(float x, float y) { ... @@ -532,7 +545,7 @@

              { // different code from compared to the super class } - + // even though we don't override this method, // its signature must be added to prevent Pjs // from getting the method chain wrong: diff --git a/blog/_posts/2012-07-31-processing-js-v1-4-0-released.html b/blog/_posts/2012-07-31-processing-js-v1-4-0-released.html old mode 100755 new mode 100644 diff --git a/blog/_posts/2012-08-08-processing-js-v1-4-1-hotfix.html b/blog/_posts/2012-08-08-processing-js-v1-4-1-hotfix.html old mode 100755 new mode 100644 diff --git a/blog/_posts/2014-03-25-processing-js-v1-4-7.html b/blog/_posts/2014-03-25-processing-js-v1-4-7.html new file mode 100644 index 0000000..4768c35 --- /dev/null +++ b/blog/_posts/2014-03-25-processing-js-v1-4-7.html @@ -0,0 +1,22 @@ +--- +layout: post +title: Processing.js v1.4.1 released +--- +

              Since our last release, 1.4.1, Processing.js has been given a bit of a source code +overhaul, culminating in a new release: 1.4.7! This release adds in new functionality +that you might already know from Processing 2.0, but was missing in Processing.js such +as new methods in PVector and XML. The release model has also been changed: we're going +to be releasing a new version every time a merge in a patch that either fixes something, +or adds a feature that is still missing. This makes things way easier for us to manage, +and ensures that you don't have to wait months while updates slowly gather dust waiting +for a major release. You can download the new version of Processing.js over on the +download section, and let us know what's still missing!

              + +

              As we're reshuffling the source code, some things are currently not available: the +API-only version of Processing.js was so insignificantly smaller than the regular version +that it will no longer be generated. The difference was about 10kb on 200kb, and the +added complexity of compiling an API-only version was simply not something that could be +taken on. If you want to help bring that back, we'd love to talk to you! We're also +not packaging the examples anymore, as a lot of them are actually incredibly out of date +and do not reflect proper Processing.js or even Processing approaches. Again, if you +want to help create a set of useful example again with us, get in touch!

              \ No newline at end of file diff --git a/download/_posts/2014-03-25-v1.4.7.html b/download/_posts/2014-03-25-v1.4.7.html new file mode 100644 index 0000000..b842fae --- /dev/null +++ b/download/_posts/2014-03-25-v1.4.7.html @@ -0,0 +1,8 @@ +--- +title: Processing.js v1.4.7 +--- +
                +
              • Development - processing.js v1.4.7
              • +
              • Production - processing.min.js v1.4.7
              • +

                Alternatively, install through Bower by using bower install Processing.js

                diff --git a/index.html b/index.html index 4fbffa0..8c928f4 100644 --- a/index.html +++ b/index.html @@ -19,16 +19,26 @@ -

                Processing.js 1.4.1 released!

                +

                Processing.js 1.4.7 released!

                -

                Processing.js 1.4.0! And then Processing 1.4.1! Because there was a really silly but -ruinous regression introduced by 1.4.0! All joking aside, 1.4.1 is a hotfix for 1.4.0, -fixing a bug that prevents sketches from focussing on mouse clicks. That's pretty severe, -because without the globalKeyEvents instruction, Processing.js sketches only receive key -events when they have focus. No focus, no key events. No key events, very limited interaction. -So if you grabbed v1.4.0, quickly grab yourself -a new v1.4.1 and enjoy all the goodness that 1.4.0 introduced, without the lack of -key events this time.

                +

                Since our last release, 1.4.1, Processing.js has been given a bit of a source code +overhaul, culminating in a new release: 1.4.7! This release adds in new functionality +that you might already know from Processing 2.0, but was missing in Processing.js such +as new methods in PVector and XML. The release model has also been changed: we're going +to be releasing a new version every time a merge in a patch that either fixes something, +or adds a feature that is still missing. This makes things way easier for us to manage, +and ensures that you don't have to wait months while updates slowly gather dust waiting +for a major release. You can download the new version of Processing.js over on the +download section, and let us know what's still missing!

                + +

                As we're reshuffling the source code, some things are currently not available: the +API-only version of Processing.js was so insignificantly smaller than the regular version +that it will no longer be generated. The difference was about 10kb on 200kb, and the +added complexity of compiling an API-only version was simply not something that could be +taken on. If you want to help bring that back, we'd love to talk to you! We're also +not packaging the examples anymore, as a lot of them are actually incredibly out of date +and do not reflect proper Processing.js or even Processing approaches. Again, if you +want to help create a set of useful example again with us, get in touch!

                About Processing.js

                @@ -73,7 +83,7 @@

                Processing.js Example

                var explosion = new buzz.sound("sketches/my-life-aquatic/explosion", { formats: [ "ogg", "mp3"] - }); + }); diff --git a/sync.sh b/sync.sh old mode 100755 new mode 100644 From 95843c5ae2e80f4550ebdeb72968a22fa3ec8daa Mon Sep 17 00:00:00 2001 From: Pomax Date: Wed, 26 Mar 2014 10:12:23 -0700 Subject: [PATCH 03/31] new jekyll system --- .gitignore | 1 + Gemfile | 8 +------- Gemfile.lock | 38 -------------------------------------- 3 files changed, 2 insertions(+), 45 deletions(-) delete mode 100644 Gemfile.lock diff --git a/.gitignore b/.gitignore index c8af71c..5499180 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ # Jekyll ignores _site +Gemfile.lock diff --git a/Gemfile b/Gemfile index 1df7a4b..053c27d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,2 @@ source 'https://rubygems.org' - -gem 'jekyll', '=0.12.0' -gem 'liquid', '=2.4.1' -gem 'redcarpet', '=2.1.1' -gem 'maruku', '=0.6.0' -gem 'rdiscount', '=1.6.8' -gem 'RedCloth', '=4.2.9' \ No newline at end of file +gem 'github-pages' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index d2766b7..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,38 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - RedCloth (4.2.9) - classifier (1.3.3) - fast-stemmer (>= 1.0.0) - directory_watcher (1.4.1) - fast-stemmer (1.0.1) - jekyll (0.12.0) - classifier (~> 1.3) - directory_watcher (~> 1.1) - kramdown (~> 0.13.4) - liquid (~> 2.3) - maruku (~> 0.5) - pygments.rb (~> 0.3.2) - kramdown (0.13.8) - liquid (2.4.1) - maruku (0.6.0) - syntax (>= 1.0.0) - posix-spawn (0.3.6) - pygments.rb (0.3.7) - posix-spawn (~> 0.3.6) - yajl-ruby (~> 1.1.0) - rdiscount (1.6.8) - redcarpet (2.1.1) - syntax (1.0.0) - yajl-ruby (1.1.0) - -PLATFORMS - ruby - -DEPENDENCIES - RedCloth (= 4.2.9) - jekyll (= 0.12.0) - liquid (= 2.4.1) - maruku (= 0.6.0) - rdiscount (= 1.6.8) - redcarpet (= 2.1.1) From 7a83f54f6c5b1b583897c2e02fca4e26835eb734 Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Thu, 27 Mar 2014 18:09:45 -0700 Subject: [PATCH 04/31] typo~ --- download/_posts/2014-03-25-v1.4.7.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/download/_posts/2014-03-25-v1.4.7.html b/download/_posts/2014-03-25-v1.4.7.html index b842fae..665074a 100644 --- a/download/_posts/2014-03-25-v1.4.7.html +++ b/download/_posts/2014-03-25-v1.4.7.html @@ -2,7 +2,7 @@ title: Processing.js v1.4.7 ---
                  -
                • Development - processing.js v1.4.7
                • -
                • Production - processing.min.js v1.4.7
                • Development - processing.js v1.4.7 +
                • Production - processing.min.js v1.4.7
                • Alternatively, install through Bower by using bower install Processing.js

                  From c3c8c56de8f13067c72232b2f33879ec0bdcbabd Mon Sep 17 00:00:00 2001 From: Jon Buckley Date: Fri, 28 Mar 2014 12:24:29 -0400 Subject: [PATCH 05/31] Make sync script executable --- sync.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 sync.sh diff --git a/sync.sh b/sync.sh old mode 100644 new mode 100755 From d6193097b88713ae4caf133a0c4f306202048b0a Mon Sep 17 00:00:00 2001 From: Pomax Date: Thu, 17 Apr 2014 13:49:55 -0700 Subject: [PATCH 06/31] v1.4.8 --- .../2014-03-25-processing-js-v1-4-7.html | 2 +- .../2014-03-25-processing-js-v1-4-8.html | 9 + index.html | 32 +- js/processing.min.js | 444 +++++++++++++++++- sync.sh | 0 5 files changed, 455 insertions(+), 32 deletions(-) create mode 100644 blog/_posts/2014-03-25-processing-js-v1-4-8.html mode change 100755 => 100644 sync.sh diff --git a/blog/_posts/2014-03-25-processing-js-v1-4-7.html b/blog/_posts/2014-03-25-processing-js-v1-4-7.html index 4768c35..9341d4e 100644 --- a/blog/_posts/2014-03-25-processing-js-v1-4-7.html +++ b/blog/_posts/2014-03-25-processing-js-v1-4-7.html @@ -1,6 +1,6 @@ --- layout: post -title: Processing.js v1.4.1 released +title: Processing.js v1.4.7 released ---

                  Since our last release, 1.4.1, Processing.js has been given a bit of a source code overhaul, culminating in a new release: 1.4.7! This release adds in new functionality diff --git a/blog/_posts/2014-03-25-processing-js-v1-4-8.html b/blog/_posts/2014-03-25-processing-js-v1-4-8.html new file mode 100644 index 0000000..c6b33c1 --- /dev/null +++ b/blog/_posts/2014-03-25-processing-js-v1-4-8.html @@ -0,0 +1,9 @@ +--- +layout: post +title: Processing.js v1.4.8 released +--- +

                  It's been a few weeks and PRocessing.js got a few PRs merge in, so it's time for a new +release: say hello to 1.4.8! This version has some fixes to PVector's rotate, support for +randomGaussian(), and several unit tests to make sure those fixes pass muster. You +can download the new version of Processing.js over on the download +section, and let us know what's still missing!

                  diff --git a/index.html b/index.html index 8c928f4..e5f0aa3 100644 --- a/index.html +++ b/index.html @@ -19,26 +19,22 @@ -

                  Processing.js 1.4.7 released!

                  +

                  Processing.js 1.4.8 released!

                  -

                  Since our last release, 1.4.1, Processing.js has been given a bit of a source code -overhaul, culminating in a new release: 1.4.7! This release adds in new functionality -that you might already know from Processing 2.0, but was missing in Processing.js such -as new methods in PVector and XML. The release model has also been changed: we're going -to be releasing a new version every time a merge in a patch that either fixes something, -or adds a feature that is still missing. This makes things way easier for us to manage, -and ensures that you don't have to wait months while updates slowly gather dust waiting -for a major release. You can download the new version of Processing.js over on the -download section, and let us know what's still missing!

                  +

                  It's been a few weeks and PRocessing.js got a few PRs merge in, so it's time for a new +release: say hello to 1.4.8! This version has some fixes to PVector's rotate, support for +randomGaussian(), and several unit tests to make sure those fixes pass muster. You +can download the new version of Processing.js over on the download +section, and let us know what's still missing!

                  -

                  As we're reshuffling the source code, some things are currently not available: the -API-only version of Processing.js was so insignificantly smaller than the regular version -that it will no longer be generated. The difference was about 10kb on 200kb, and the -added complexity of compiling an API-only version was simply not something that could be -taken on. If you want to help bring that back, we'd love to talk to you! We're also -not packaging the examples anymore, as a lot of them are actually incredibly out of date -and do not reflect proper Processing.js or even Processing approaches. Again, if you -want to help create a set of useful example again with us, get in touch!

                  +

                  Want to help out?

                  + +

                  We're also happy to get help in the form of pull requests to add functionality to Pjs, +or to simply fix small errors that were found. You don't have to be a code wizard to contribute: +if you simply know of a function or a constant that's missing, feel free to fork the code, +patch what you think needs patching, and file a Pull Request so that we can merge your +improvement in! Don't know where to start? Drop into our IRC channel, #processingjs on +irc.mozilla.org, and we'll be happy to help you get the most out improving Processing.js!

                  About Processing.js

                  diff --git a/js/processing.min.js b/js/processing.min.js index fc5e794..dc52305 100644 --- a/js/processing.min.js +++ b/js/processing.min.js @@ -1,13 +1,431 @@ -/*** - - P R O C E S S I N G . J S - 1.3.6 - a port of the Processing visualization language - - Processing.js is licensed under the MIT License, see LICENSE. - For a list of copyright holders, please refer to AUTHORS. - - http://processingjs.org - -***/ - -(function(B,d,o,r){var E=function(){};var q=function(){if("console" in B){return function(L){B.console.log("Processing.js: "+L)}}return E()}();var u=function(L){var M=new XMLHttpRequest;M.open("GET",L,false);if(M.overrideMimeType){M.overrideMimeType("text/plain")}M.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");M.send(null);if(M.status!==200&&M.status!==0){throw"XMLHttpRequest failed, status code "+M.status}return M.responseText};var l="document" in this&&!("fake" in this.document);d.head=d.head||d.getElementsByTagName("head")[0];function A(L,M){if(L in B){return B[L]}if(typeof B[M]==="function"){return B[M]}return function(O){if(O instanceof Array){return O}if(typeof O==="number"){var N=[];N.length=O;return N}}}var e=A("Float32Array","WebGLFloatArray"),I=A("Int32Array","WebGLIntArray"),w=A("Uint16Array","WebGLUnsignedShortArray"),b=A("Uint8Array","WebGLUnsignedByteArray");var z={X:0,Y:1,Z:2,R:3,G:4,B:5,A:6,U:7,V:8,NX:9,NY:10,NZ:11,EDGE:12,SR:13,SG:14,SB:15,SA:16,SW:17,TX:18,TY:19,TZ:20,VX:21,VY:22,VZ:23,VW:24,AR:25,AG:26,AB:27,DR:3,DG:4,DB:5,DA:6,SPR:28,SPG:29,SPB:30,SHINE:31,ER:32,EG:33,EB:34,BEEN_LIT:35,VERTEX_FIELD_COUNT:36,P2D:1,JAVA2D:1,WEBGL:2,P3D:2,OPENGL:2,PDF:0,DXF:0,OTHER:0,WINDOWS:1,MAXOSX:2,LINUX:3,EPSILON:0.0001,MAX_FLOAT:3.4028235e+38,MIN_FLOAT:-3.4028235e+38,MAX_INT:2147483647,MIN_INT:-2147483648,PI:o.PI,TWO_PI:2*o.PI,HALF_PI:o.PI/2,THIRD_PI:o.PI/3,QUARTER_PI:o.PI/4,DEG_TO_RAD:o.PI/180,RAD_TO_DEG:180/o.PI,WHITESPACE:" \t\n\r\u000c\u00a0",RGB:1,ARGB:2,HSB:3,ALPHA:4,CMYK:5,TIFF:0,TARGA:1,JPEG:2,GIF:3,BLUR:11,GRAY:12,INVERT:13,OPAQUE:14,POSTERIZE:15,THRESHOLD:16,ERODE:17,DILATE:18,REPLACE:0,BLEND:1<<0,ADD:1<<1,SUBTRACT:1<<2,LIGHTEST:1<<3,DARKEST:1<<4,DIFFERENCE:1<<5,EXCLUSION:1<<6,MULTIPLY:1<<7,SCREEN:1<<8,OVERLAY:1<<9,HARD_LIGHT:1<<10,SOFT_LIGHT:1<<11,DODGE:1<<12,BURN:1<<13,ALPHA_MASK:4278190080,RED_MASK:16711680,GREEN_MASK:65280,BLUE_MASK:255,CUSTOM:0,ORTHOGRAPHIC:2,PERSPECTIVE:3,POINT:2,POINTS:2,LINE:4,LINES:4,TRIANGLE:8,TRIANGLES:9,TRIANGLE_STRIP:10,TRIANGLE_FAN:11,QUAD:16,QUADS:16,QUAD_STRIP:17,POLYGON:20,PATH:21,RECT:30,ELLIPSE:31,ARC:32,SPHERE:40,BOX:41,GROUP:0,PRIMITIVE:1,GEOMETRY:3,VERTEX:0,BEZIER_VERTEX:1,CURVE_VERTEX:2,BREAK:3,CLOSESHAPE:4,OPEN:1,CLOSE:2,CORNER:0,CORNERS:1,RADIUS:2,CENTER_RADIUS:2,CENTER:3,DIAMETER:3,CENTER_DIAMETER:3,BASELINE:0,TOP:101,BOTTOM:102,NORMAL:1,NORMALIZED:1,IMAGE:2,MODEL:4,SHAPE:5,SQUARE:"butt",ROUND:"round",PROJECT:"square",MITER:"miter",BEVEL:"bevel",AMBIENT:0,DIRECTIONAL:1,SPOT:3,BACKSPACE:8,TAB:9,ENTER:10,RETURN:13,ESC:27,DELETE:127,CODED:65535,SHIFT:16,CONTROL:17,ALT:18,CAPSLK:20,PGUP:33,PGDN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLK:144,META:157,INSERT:155,ARROW:"default",CROSS:"crosshair",HAND:"pointer",MOVE:"move",TEXT:"text",WAIT:"wait",NOCURSOR:"url('data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='), auto",DISABLE_OPENGL_2X_SMOOTH:1,ENABLE_OPENGL_2X_SMOOTH:-1,ENABLE_OPENGL_4X_SMOOTH:2,ENABLE_NATIVE_FONTS:3,DISABLE_DEPTH_TEST:4,ENABLE_DEPTH_TEST:-4,ENABLE_DEPTH_SORT:5,DISABLE_DEPTH_SORT:-5,DISABLE_OPENGL_ERROR_REPORT:6,ENABLE_OPENGL_ERROR_REPORT:-6,ENABLE_ACCURATE_TEXTURES:7,DISABLE_ACCURATE_TEXTURES:-7,HINT_COUNT:10,SINCOS_LENGTH:720,PRECISIONB:15,PRECISIONF:1<<15,PREC_MAXVAL:(1<<15)-1,PREC_ALPHA_SHIFT:24-15,PREC_RED_SHIFT:16-15,NORMAL_MODE_AUTO:0,NORMAL_MODE_SHAPE:1,NORMAL_MODE_VERTEX:2,MAX_LIGHTS:8};function h(N){if(typeof N==="string"){var M=0;for(var L=0;L0&&typeof arguments[0]!=="number"){N=arguments[0].toArray()}else{N=[];N.length=0|arguments[0]}}this.get=function(O){return N[O]};this.contains=function(O){return this.indexOf(O)>-1};this.indexOf=function(Q){for(var P=0,O=N.length;P=0&&O<=N.length){N.splice(O,0,arguments[1])}else{throw O+" is not a valid index"}}else{throw typeof O+" is not a number"}}else{throw"Please use the proper number of parameters."}}};this.addAll=function(P,O){var Q;if(typeof P==="number"){if(P<0||P>N.length){throw"Index out of bounds for addAll: "+P+" greater or equal than "+N.length}Q=new m(O);while(Q.hasNext()){N.splice(P++,0,Q.next())}}else{Q=new m(P);while(Q.hasNext()){N.push(Q.next())}}};this.set=function(){if(arguments.length===2){var O=arguments[0];if(typeof O==="number"){if(O>=0&&O-1){N.splice(O,1);return true}return false};this.isEmpty=function(){return !N.length};this.clone=function(){return new L(this)};this.toArray=function(){return N.slice(0)};this.iterator=function(){return new M(N)}}return L}();var v=function(){function L(){if(arguments.length===1&&arguments[0] instanceof L){return arguments[0].clone()}var U=arguments.length>0?arguments[0]:16;var V=arguments.length>1?arguments[1]:0.75;var O=[];O.length=U;var Q=0;var M=this;function S(X){var W=h(X)%O.length;return W<0?O.length+W:W}function P(){if(Q<=V*O.length){return}var Z=[];for(var Y=0;Y=O.length){Y=true}else{if(O[W]===r||Z>=O[W].length){Z=-1;++W}else{return}}}}this.hasNext=function(){return !Y};this.next=function(){var ac=aa(O[W][Z]);X();return ac};this.remove=function(){ab(this.next());--Z};X()}function T(W,X,Y){this.clear=function(){M.clear()};this.contains=function(Z){return X(Z)};this.containsAll=function(aa){var Z=aa.iterator();while(Z.hasNext()){if(!this.contains(Z.next())){return false}}return true};this.isEmpty=function(){return M.isEmpty()};this.iterator=function(){return new N(W,Y)};this.remove=function(Z){if(this.contains(Z)){Y(Z);return true}return false};this.removeAll=function(ac){var Z=ac.iterator();var ab=false;while(Z.hasNext()){var aa=Z.next();if(this.contains(aa)){Y(aa);ab=true}}return true};this.retainAll=function(ad){var ab=this.iterator();var aa=[];while(ab.hasNext()){var ac=ab.next();if(!ad.contains(ac)){aa.push(ac)}}for(var Z=0;Z0};this.size=function(){return M.size()};this.toArray=function(){var Z=[];var aa=this.iterator();while(aa.hasNext()){Z.push(aa.next())}return Z}}function R(W){this._isIn=function(X){return X===M&&W.removed===r};this.equals=function(X){return p(W.key,X.getKey())};this.getKey=function(){return W.key};this.getValue=function(){return W.value};this.hashCode=function(X){return h(W.key)};this.setValue=function(Y){var X=W.value;W.value=Y;return X}}this.clear=function(){Q=0;O=[];O.length=U};this.clone=function(){var W=new L;W.putAll(this);return W};this.containsKey=function(Y){var W=S(Y);var Z=O[W];if(Z===r){return false}for(var X=0;X1){aa.splice(X,1)}else{O[W]=r}return Z}}return null};this.removeByValue=function(Y){var aa,X,W,Z;for(aa in O){if(O.hasOwnProperty(aa)){for(X=0,W=O[aa].length;X0){this.div(O)}},limit:function(O){if(this.mag()>O){this.normalize();this.mult(O)}},heading2D:function(){return -o.atan2(-this.y,this.x)},toString:function(){return"["+this.x+", "+this.y+", "+this.z+"]"},array:function(){return[this.x,this.y,this.z]}};function M(O){return function(R,Q){var P=R.get();P[O](Q);return P}}for(var N in L.prototype){if(L.prototype.hasOwnProperty(N)&&!L.hasOwnProperty(N)){L[N]=M(N)}}return L}();function K(){}K.prototype=z;var g=new K;g.ArrayList=f;g.HashMap=v;g.PVector=y;g.ObjectIterator=m;g.PConstants=z;g.defineProperty=function(M,L,N){if("defineProperty" in Object){Object.defineProperty(M,L,N)}else{if(N.hasOwnProperty("get")){M.__defineGetter__(L,N.get)}if(N.hasOwnProperty("set")){M.__defineSetter__(L,N.set)}}};function i(O,N){function P(Q){g.defineProperty(O,Q,{get:function(){return N[Q]},set:function(R){N[Q]=R},enumerable:true})}var M=[];for(var L in N){if(typeof N[L]==="function"){if(!O.hasOwnProperty(L)){O[L]=N[L]}}else{if(L.charAt(0)!=="$"&&!(L in O)){M.push(L)}}}while(M.length>0){P(M.shift())}}g.extendClassChain=function(M){var N=[M];for(var L=M.$upcast;L;L=L.$upcast){i(L,M);N.push(L);M=L}while(N.length>0){N.pop().$self=M}};g.extendStaticMembers=function(L,M){i(L,M)};g.extendInterfaceMembers=function(L,M){i(L,M)};g.addMethod=function(O,N,Q,P){if(O[N]){var M=Q.length,L=O[N];O[N]=function(){if(arguments.length===M){return Q.apply(this,arguments)}return L.apply(this,arguments)}}else{O[N]=Q}};g.createJavaArray=function(P,Q){var M=null;if(typeof Q[0]==="number"){var L=0|Q[0];if(Q.length<=1){M=[];M.length=L;for(var O=0;O"+aa;d.body.appendChild(R);var S=L.width,Z=L.height,T=Z/2;W.fillStyle="white";W.fillRect(0,0,S,Z);W.fillStyle="black";W.fillText(aa,0,T);var N=W.getImageData(0,0,S,Z).data;var X=0,Q=S*4,Y=N.length;while(++X0&&N[X]===255){E()}var ab=o.round(X/Q);V.ascent=ac*(T-P);V.descent=ac*(ab-T);if(d.defaultView.getComputedStyle){var M=d.defaultView.getComputedStyle(R,null).getPropertyValue("height");M=ac*M.replace("px","");if(M>=V.size*2){V.leading=o.round(M/2)}}d.body.removeChild(R)}function F(L,M){if(L===r){L=""}this.name=L;if(M===r){M=0}this.size=M;this.glyph=false;this.ascent=0;this.descent=0;this.leading=1.2*M;var P=L.indexOf(" Italic Bold");if(P!==-1){L=L.substring(0,P)}this.style="normal";var O=L.indexOf(" Italic");if(O!==-1){L=L.substring(0,O);this.style="italic"}this.weight="normal";var N=L.indexOf(" Bold");if(N!==-1){L=L.substring(0,N);this.weight="bold"}this.family="sans-serif";if(L!==r){switch(L){case"sans-serif":case"serif":case"monospace":case"fantasy":case"cursive":this.family=L;break;default:this.family='"'+L+'", sans-serif';break}}this.context2d=null;n(this);this.css=this.getCSSDefinition();this.context2d.font=this.css}F.prototype.getCSSDefinition=function(N,L){if(N===r){N=this.size+"px"}if(L===r){L=this.leading+"px"}var M=[this.style,"normal",this.weight,N+"/"+L,this.family];return M.join(" ")};F.prototype.measureTextWidth=function(L){return this.context2d.measureText(L).width};F.PFontCache={};F.get=function(N,O){var M=F.PFontCache;var L=N+"/"+O;if(!M[L]){M[L]=new F(N,O)}return M[L]};F.list=function(){return["sans-serif","serif","monospace","fantasy","cursive"]};F.preloading={template:{},initialized:false,initialize:function(){var N=function(){var P="#E3KAI2wAgT1MvMg7Eo3VmNtYX7ABi3CxnbHlm7Abw3kaGVhZ7ACs3OGhoZWE7A53CRobXR47AY3AGbG9jYQ7G03Bm1heH7ABC3CBuYW1l7Ae3AgcG9zd7AI3AE#B3AQ2kgTY18PPPUACwAg3ALSRoo3#yld0xg32QAB77#E777773B#E3C#I#Q77773E#Q7777777772CMAIw7AB77732B#M#Q3wAB#g3B#E#E2BB//82BB////w#B7#gAEg3E77x2B32B#E#Q#MTcBAQ32gAe#M#QQJ#E32M#QQJ#I#g32Q77#";var O=function(Q){return"AAAAAAAA".substr(~~Q?7-Q:6)};return P.replace(/[#237]/g,O)};var L=d.createElement("style");L.setAttribute("type","text/css");L.innerHTML='@font-face {\n font-family: "PjsEmptyFont";\n src: url(\'data:application/x-font-ttf;base64,'+N()+"')\n format('truetype');\n}";d.head.appendChild(L);var M=d.createElement("span");M.style.cssText='position: absolute; top: 0; left: 0; opacity: 0; font-family: "PjsEmptyFont", fantasy;';M.innerHTML="AAAAAAAA";d.body.appendChild(M);this.template=M;this.initialized=true},getElementWidth:function(L){return d.defaultView.getComputedStyle(L,"").getPropertyValue("width")},timeAttempted:0,pending:function(P){if(!this.initialized){this.initialize()}var N,L,O=this.getElementWidth(this.template);for(var M=0;M cos( light.angle ) ) { spotAttenuation = pow( spotDot, light.concentration ); } else{ spotAttenuation = 0.0; } attenuation *= spotAttenuation;")+" float nDotVP = max( 0.0, dot( vertNormal, VP )); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector )); if( nDotVP == 0.0 ) { powerfactor = 0.0; } else { powerfactor = pow( nDotHV, shininess ); } spec += specular * powerfactor * attenuation; col += light.color * nDotVP * attenuation;}void main(void) { vec3 finalAmbient = vec3( 0.0, 0.0, 0.0 ); vec3 finalDiffuse = vec3( 0.0, 0.0, 0.0 ); vec3 finalSpecular = vec3( 0.0, 0.0, 0.0 ); vec4 col = color; if(color[0] == -1.0){ col = aColor; } vec3 norm = normalize(vec3( normalTransform * vec4( Normal, 0.0 ) )); vec4 ecPos4 = view * model * vec4(Vertex,1.0); vec3 ecPos = (vec3(ecPos4))/ecPos4.w; if( lightCount == 0 ) { frontColor = col + vec4(mat_specular,1.0); } else { for( int i = 0; i < 8; i++ ) { Light l = getLight(i); if( i >= lightCount ){ break; } if( l.type == 0 ) { AmbientLight( finalAmbient, ecPos, l ); } else if( l.type == 1 ) { DirectionalLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else if( l.type == 2 ) { PointLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else { SpotLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } } if( usingMat == false ) { frontColor = vec4( vec3(col) * finalAmbient + vec3(col) * finalDiffuse + vec3(col) * finalSpecular, col[3] ); } else{ frontColor = vec4( mat_emissive + (vec3(col) * mat_ambient * finalAmbient) + (vec3(col) * finalDiffuse) + (mat_specular * finalSpecular), col[3] ); } } vTexture.xy = aTexture.xy; gl_Position = projection * view * model * vec4( Vertex, 1.0 );}";var bH="#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 frontColor;uniform sampler2D sampler;uniform bool usingTexture;varying vec2 vTexture;void main(void){ if(usingTexture){ gl_FragColor = vec4(texture2D(sampler, vTexture.xy)) * frontColor; } else{ gl_FragColor = frontColor; }}";function dY(d9,d8,eb,ea){var d7=dz.locations[d9];if(d7===r){d7=d4.getUniformLocation(d8,eb);dz.locations[d9]=d7}if(d7!==null){if(ea.length===4){d4.uniform4fv(d7,ea)}else{if(ea.length===3){d4.uniform3fv(d7,ea)}else{if(ea.length===2){d4.uniform2fv(d7,ea)}else{d4.uniform1f(d7,ea)}}}}}function dV(d9,d8,eb,ea){var d7=dz.locations[d9];if(d7===r){d7=d4.getUniformLocation(d8,eb);dz.locations[d9]=d7}if(d7!==null){if(ea.length===4){d4.uniform4iv(d7,ea)}else{if(ea.length===3){d4.uniform3iv(d7,ea)}else{if(ea.length===2){d4.uniform2iv(d7,ea)}else{d4.uniform1i(d7,ea)}}}}}function a5(eb,d9,ec,ea,d8){var d7=dz.locations[eb];if(d7===r){d7=d4.getUniformLocation(d9,ec);dz.locations[eb]=d7}if(d7!==-1){if(d8.length===16){d4.uniformMatrix4fv(d7,ea,d8)}else{if(d8.length===9){d4.uniformMatrix3fv(d7,ea,d8)}else{d4.uniformMatrix2fv(d7,ea,d8)}}}}function db(eb,d9,ec,d8,ea){var d7=dz.attributes[eb];if(d7===r){d7=d4.getAttribLocation(d9,ec);dz.attributes[eb]=d7}if(d7!==-1){d4.bindBuffer(d4.ARRAY_BUFFER,ea);d4.vertexAttribPointer(d7,d8,d4.FLOAT,false,0,0);d4.enableVertexAttribArray(d7)}}function cf(d9,d8,ea){var d7=dz.attributes[d9];if(d7===r){d7=d4.getAttribLocation(d8,ea);dz.attributes[d9]=d7}if(d7!==-1){d4.disableVertexAttribArray(d7)}}var bC=function(d9,eb,d8){var ec=d9.createShader(d9.VERTEX_SHADER);d9.shaderSource(ec,eb);d9.compileShader(ec);if(!d9.getShaderParameter(ec,d9.COMPILE_STATUS)){throw d9.getShaderInfoLog(ec)}var ea=d9.createShader(d9.FRAGMENT_SHADER);d9.shaderSource(ea,d8);d9.compileShader(ea);if(!d9.getShaderParameter(ea,d9.COMPILE_STATUS)){throw d9.getShaderInfoLog(ea)}var d7=d9.createProgram();d9.attachShader(d7,ec);d9.attachShader(d7,ea);d9.linkProgram(d7);if(!d9.getProgramParameter(d7,d9.LINK_STATUS)){throw"Error linking shaders."}return d7};var aV=function(d7,eb,d8,ea,d9){return{x:d7,y:eb,w:d8,h:ea}};var bh=aV;var b0=function(d7,eb,d8,ea,d9){return{x:d7,y:eb,w:d9?d8:d8-d7,h:d9?ea:ea-eb}};var aL=function(d7,eb,d8,ea,d9){return{x:d7-d8/2,y:eb-ea/2,w:d8,h:ea}};var dp=function(){};var bO=function(){};var by=function(){};var b9=function(){};bO.prototype=new dp;bO.prototype.constructor=bO;by.prototype=new dp;by.prototype.constructor=by;b9.prototype=new dp;b9.prototype.constructor=b9;dp.prototype.a3DOnlyFunction=E;var ck={};var bN=cV.Character=function(d7){if(typeof d7==="string"&&d7.length===1){this.code=d7.charCodeAt(0)}else{if(typeof d7==="number"){this.code=d7}else{if(d7 instanceof bN){this.code=d7}else{this.code=NaN}}}return ck[this.code]===r?ck[this.code]=this:ck[this.code]};bN.prototype.toString=function(){return String.fromCharCode(this.code)};bN.prototype.valueOf=function(){return this.code};var M=cV.PShape=function(d7){this.family=d7||0;this.visible=true;this.style=true;this.children=[];this.nameTable=[];this.params=[];this.name="";this.image=null;this.matrix=null;this.kind=null;this.close=null;this.width=null;this.height=null;this.parent=null};M.prototype={isVisible:function(){return this.visible},setVisible:function(d7){this.visible=d7},disableStyle:function(){this.style=false;for(var d8=0,d7=this.children.length;d80){for(d8=0,d7=this.nameTable.length;d8, it's <"+this.element.getName()+">"}}else{if(arguments.length===2){if(typeof arguments[1]==="string"){if(arguments[1].indexOf(".svg")>-1){this.element=new cV.XMLElement(null,arguments[1]);this.vertexCodes=[];this.vertices=[];this.opacity=1;this.stroke=false;this.strokeColor=4278190080;this.strokeWeight=1;this.strokeCap="butt";this.strokeJoin="miter";this.strokeGradient="";this.strokeGradientPaint="";this.strokeName="";this.strokeOpacity=1;this.fill=true;this.fillColor=4278190080;this.fillGradient=null;this.fillGradientPaint=null;this.fillOpacity=1}}else{if(arguments[0]){this.element=arguments[1];this.vertexCodes=arguments[0].vertexCodes.slice();this.vertices=arguments[0].vertices.slice();this.stroke=arguments[0].stroke;this.strokeColor=arguments[0].strokeColor;this.strokeWeight=arguments[0].strokeWeight;this.strokeCap=arguments[0].strokeCap;this.strokeJoin=arguments[0].strokeJoin;this.strokeGradient=arguments[0].strokeGradient;this.strokeGradientPaint=arguments[0].strokeGradientPaint;this.strokeName=arguments[0].strokeName;this.fill=arguments[0].fill;this.fillColor=arguments[0].fillColor;this.fillGradient=arguments[0].fillGradient;this.fillGradientPaint=arguments[0].fillGradientPaint;this.fillName=arguments[0].fillName;this.strokeOpacity=arguments[0].strokeOpacity;this.fillOpacity=arguments[0].fillOpacity;this.opacity=arguments[0].opacity}}}}this.name=this.element.getStringAttribute("id");var d7=this.element.getStringAttribute("display","inline");this.visible=d7!=="none";var ec=this.element.getAttribute("transform");if(ec){this.matrix=this.parseMatrix(ec)}var d9=this.element.getStringAttribute("viewBox");if(d9!==null){var eb=d9.split(" ");this.width=eb[2];this.height=eb[3]}var d8=this.element.getStringAttribute("width");var ea=this.element.getStringAttribute("height");if(d8!==null){this.width=this.parseUnitSize(d8);this.height=this.parseUnitSize(ea)}else{if(this.width===0||this.height===0){this.width=1;this.height=1;throw"The width and/or height is not readable in the tag of this file."}}this.parseColors(this.element);this.parseChildren(this.element)};cq.prototype=new M;cq.prototype.parseMatrix=function(){function d7(d9){var d8=[];d9.replace(/\((.*?)\)/,function(){return function(ea,eb){d8=eb.replace(/,+/g," ").split(/\s+/)}}());return d8}return function(ef){this.checkMatrix(2);var d8=[];ef.replace(/\s*(\w+)\((.*?)\)/g,function(ei){d8.push(cV.trim(ei))});if(d8.length===0){return null}for(var ed=0,eb=d8.length;ed=65&&eq<=90||eq>=97&&eq<=122){er=eu;eu++;if(eu=65&&eq<=90||eq>=97&&eq<=100||eq>=102&&eq<=122)&&et===false){if(eq===32){if(eo!==""){es.push(parseFloat(eo));eo=""}eu++}else{if(eq===45){if(ev[eu-1].valueOf()===101){eo+=ev[eu].toString();eu++}else{if(eo!==""){es.push(parseFloat(eo))}eo=ev[eu].toString();eu++}}else{eo+=ev[eu].toString();eu++}}if(eu===ev.length){et=true}else{eq=ev[eu].valueOf()}}}if(eo!==""){es.push(parseFloat(eo));eo=""}eb=ev[er];eq=eb.valueOf();if(eq===77){if(es.length>=2&&es.length%2===0){ea=es[0];d9=es[1];this.parsePathMoveto(ea,d9);if(es.length>2){for(er=2,ep=es.length;er=2&&es.length%2===0){ea+=es[0];d9+=es[1];this.parsePathMoveto(ea,d9);if(es.length>2){for(er=2,ep=es.length;er=2&&es.length%2===0){for(er=0,ep=es.length;er=2&&es.length%2===0){for(er=0,ep=es.length;er=6&&es.length%6===0){for(er=0,ep=es.length;er=6&&es.length%6===0){for(er=0,ep=es.length;er=4&&es.length%4===0){for(er=0,ep=es.length;er=4&&es.length%4===0){for(er=0,ep=es.length;er=4&&es.length%4===0){for(er=0,ep=es.length;er=4&&es.length%4===0){for(er=0,ep=es.length;er=2&&es.length%2===0){for(er=0,ep=es.length;er=2&&es.length%2===0){for(er=0,ep=es.length;er0){this.parsePathCode(1);this.parsePathVertex(d9+(d7-d9)*2/3,eb+(ec-eb)*2/3);this.parsePathVertex(d8+(d7-d8)*2/3,ea+(ec-ea)*2/3);this.parsePathVertex(d8,ea)}else{throw"Path must start with M/m"}};cq.prototype.parsePathCurveto=function(ea,ec,d8,eb,d7,d9){if(this.vertices.length>0){this.parsePathCode(1);this.parsePathVertex(ea,ec);this.parsePathVertex(d8,eb);this.parsePathVertex(d7,d9)}else{throw"Path must start with M/m"}};cq.prototype.parsePathLineto=function(d8,d7){if(this.vertices.length>0){this.parsePathCode(0);this.parsePathVertex(d8,d7);this.vertices[this.vertices.length-1]["moveTo"]=false}else{throw"Path must start with M/m"}};cq.prototype.parsePathMoveto=function(d8,d7){if(this.vertices.length>0){this.parsePathCode(3)}this.parsePathCode(0);this.parsePathVertex(d8,d7);this.vertices[this.vertices.length-1]["moveTo"]=true};cq.prototype.parsePathVertex=function(d7,d9){var d8=[];d8[0]=d7;d8[1]=d9;this.vertices.push(d8)};cq.prototype.parsePathCode=function(d7){this.vertexCodes.push(d7)};cq.prototype.parsePoly=function(eb){this.family=21;this.close=eb;var d8=cV.trim(this.element.getStringAttribute("points").replace(/[,\s]+/g," "));if(d8!==null){var d7=d8.split(" ");if(d7.length%2===0){for(var ea=0,d9=d7.length;ea"}};cq.prototype.parseEllipse=function(d9){this.kind=31;this.family=1;this.params=[];this.params[0]=this.element.getFloatAttribute("cx")|0;this.params[1]=this.element.getFloatAttribute("cy")|0;var d8,d7;if(d9){d8=d7=this.element.getFloatAttribute("r");if(d8<0){throw"svg error: negative radius found while parsing "}}else{d8=this.element.getFloatAttribute("rx");d7=this.element.getFloatAttribute("ry");if(d8<0||d7<0){throw"svg error: negative x-axis radius or y-axis radius found while parsing "}}this.params[0]-=d8;this.params[1]-=d7;this.params[2]=d8*2;this.params[3]=d7*2};cq.prototype.parseLine=function(){this.kind=4;this.family=1;this.params=[];this.params[0]=this.element.getFloatAttribute("x1");this.params[1]=this.element.getFloatAttribute("y1");this.params[2]=this.element.getFloatAttribute("x2");this.params[3]=this.element.getFloatAttribute("y2")};cq.prototype.parseColors=function(d9){if(d9.hasAttribute("opacity")){this.setOpacity(d9.getAttribute("opacity"))}if(d9.hasAttribute("stroke")){this.setStroke(d9.getAttribute("stroke"))}if(d9.hasAttribute("stroke-width")){this.setStrokeWeight(d9.getAttribute("stroke-width"))}if(d9.hasAttribute("stroke-linejoin")){this.setStrokeJoin(d9.getAttribute("stroke-linejoin"))}if(d9.hasAttribute("stroke-linecap")){this.setStrokeCap(d9.getStringAttribute("stroke-linecap"))}if(d9.hasAttribute("fill")){this.setFill(d9.getStringAttribute("fill"))}if(d9.hasAttribute("style")){var ec=d9.getStringAttribute("style");var ea=ec.toString().split(";");for(var d8=0,d7=ea.length;d8=1&&arguments[0]!==null){if(d9.isVisible()){cV.pushMatrix();if(Q===3){if(arguments.length===5){cV.translate(d8-ea/2,eb-d7/2);cV.scale(ea/d9.getWidth(),d7/d9.getHeight())}else{if(arguments.length===3){cV.translate(d8-d9.getWidth()/2,-d9.getHeight()/2)}else{cV.translate(-d9.getWidth()/2,-d9.getHeight()/2)}}}else{if(Q===0){if(arguments.length===5){cV.translate(d8,eb);cV.scale(ea/d9.getWidth(),d7/d9.getHeight())}else{if(arguments.length===3){cV.translate(d8,eb)}}}else{if(Q===1){if(arguments.length===5){ea-=d8;d7-=eb;cV.translate(d8,eb);cV.scale(ea/d9.getWidth(),d7/d9.getHeight())}else{if(arguments.length===3){cV.translate(d8,eb)}}}}}d9.draw();if(arguments.length===1&&Q===3||arguments.length>1){cV.popMatrix()}}}};cV.shapeMode=function(d7){Q=d7};cV.loadShape=function(d7){if(arguments.length===1){if(d7.indexOf(".svg")>-1){return new cq(null,d7)}}return null};var cS=function(eb,ea,d7,d8,d9){this.fullName=eb||"";this.name=ea||"";this.namespace=d7||"";this.value=d8;this.type=d9};cS.prototype={getName:function(){return this.name},getFullName:function(){return this.fullName},getNamespace:function(){return this.namespace},getValue:function(){return this.value},getType:function(){return this.type},setValue:function(d7){this.value=d7}};var b8=cV.XMLElement=function(){this.attributes=[];this.children=[];this.fullName=null;this.name=null;this.namespace="";this.content=null;this.parent=null;this.lineNr="";this.systemID="";this.type="ELEMENT";if(arguments.length===4){this.fullName=arguments[0]||"";if(arguments[1]){this.name=arguments[1]}else{var d7=this.fullName.indexOf(":");if(d7>=0){this.name=this.fullName.substring(d7+1)}else{this.name=this.fullName}}this.namespace=arguments[1];this.lineNr=arguments[3];this.systemID=arguments[2]}else{if(arguments.length===2&&arguments[1].indexOf(".")>-1){this.parse(arguments[arguments.length-1])}else{if(arguments.length===1&&typeof arguments[0]==="string"){this.parse(arguments[0])}}}};b8.prototype={parse:function(d7){var d9;try{var eb=d7.substring(d7.length-4);if(eb===".xml"||eb===".svg"){d7=u(d7)}d9=(new DOMParser).parseFromString(d7,"text/xml");var d8=d9.documentElement;if(d8){this.parseChildrenRecursive(null,d8)}else{throw"Error loading document"}return this}catch(ea){throw ea}},parseChildrenRecursive:function(ef,ed){var ec,d8,ee,eb,ea,d7;if(!ef){this.fullName=ed.localName;this.name=ed.nodeName;ec=this}else{ec=new b8(ed.localName,ed.nodeName,"","");ec.parent=ef}if(ed.nodeType===3&&ed.textContent!==""){return this.createPCDataElement(ed.textContent)}for(eb=0,ea=ed.attributes.length;eb0){var eb,ea;for(d9=0,d8=this.children.length;d90},addChild:function(d7){if(d7!==null){d7.parent=this;this.children.push(d7)}},insertChild:function(d9,d7){if(d9){if(d9.getLocalName()===null&&!this.hasChildren()){var d8=this.children[this.children.length-1];if(d8.getLocalName()===null){d8.setContent(d8.getContent()+d9.getContent());return}}d9.parent=this;this.children.splice(d7,0,d9)}},getChild:function(){if(typeof arguments[0]==="number"){return this.children[arguments[0]]}if(arguments[0].indexOf("/")!==-1){this.getChildRecursive(arguments[0].split("/"),0);return null}var d7,ea;for(var d9=0,d8=this.getChildCount();d9d7){this.children.splice(d7,1)}},findAttribute:function(d8,ea){this.namespace=ea||"";for(var d9=0,d7=this.attributes.length;d90){D.debug("Tried to set content for XMLElement with children")}this.content=d7},setName:function(){if(arguments.length===1){this.name=arguments[0];this.fullName=arguments[0];this.namespace=null}else{var d7=arguments[0].indexOf(":");if(arguments[1]===null||d7<0){this.name=arguments[0]}else{this.name=arguments[0].substring(d7+1)}this.fullName=arguments[0];this.namespace=arguments[1]}},getName:function(){return this.fullName},getLocalName:function(){return this.name},getAttributeCount:function(){return this.attributes.length},toString:function(){if(this.type==="TEXT"){return this.content}var d9=(this.namespace!==""&&this.namespace!==this.name?this.namespace+":":"")+this.name;var ea="<"+d9;var d8,eb;for(d8=0;d8"}else{ea+=">"+this.content+""}}else{ea+=">";for(eb=0;eb"}return ea}};b8.parse=function(d8){var d7=new b8;d7.parse(d8);return d7};var cl=function(ea){var d7=0;for(var d8=0;d8-2147483648){var d8=this.elements[0];var ed=this.elements[1];var eb=this.elements[2];var ea=this.elements[3];var d9=this.elements[4];var d7=this.elements[5];this.elements[0]=d9/ec;this.elements[3]=-ea/ec;this.elements[1]=-ed/ec;this.elements[4]=d8/ec;this.elements[2]=(ed*d7-d9*eb)/ec;this.elements[5]=(ea*eb-d8*d7)/ec;return true}return false},scale:function(d8,d7){if(d8&&!d7){d7=d8}if(d8&&d7){this.elements[0]*=d8;this.elements[1]*=d7;this.elements[3]*=d8;this.elements[4]*=d7}},invScale:function(d8,d7){if(d8&&!d7){d7=d8}this.scale(1/d8,1/d7)},apply:function(){var d9;if(arguments.length===1&&arguments[0] instanceof aT){d9=arguments[0].array()}else{if(arguments.length===6){d9=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){d9=arguments[0]}}}var d7=[0,0,this.elements[2],0,0,this.elements[5]];var ea=0;for(var eb=0;eb<2;eb++){for(var d8=0;d8<3;d8++,ea++){d7[ea]+=this.elements[eb*3+0]*d9[d8+0]+this.elements[eb*3+1]*d9[d8+3]}}this.elements=d7.slice()},preApply:function(){var d8;if(arguments.length===1&&arguments[0] instanceof aT){d8=arguments[0].array()}else{if(arguments.length===6){d8=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){d8=arguments[0]}}}var d7=[0,0,d8[2],0,0,d8[5]];d7[2]=d8[2]+this.elements[2]*d8[0]+this.elements[5]*d8[1];d7[5]=d8[5]+this.elements[2]*d8[3]+this.elements[5]*d8[4];d7[0]=this.elements[0]*d8[0]+this.elements[3]*d8[1];d7[3]=this.elements[0]*d8[3]+this.elements[3]*d8[4];d7[1]=this.elements[1]*d8[0]+this.elements[4]*d8[1];d7[4]=this.elements[1]*d8[3]+this.elements[4]*d8[4];this.elements=d7.slice()},rotate:function(d9){var eb=o.cos(d9);var d7=o.sin(d9);var ea=this.elements[0];var d8=this.elements[1];this.elements[0]=eb*ea+d7*d8;this.elements[1]=-d7*ea+eb*d8;ea=this.elements[3];d8=this.elements[4];this.elements[3]=eb*ea+d7*d8;this.elements[4]=-d7*ea+eb*d8},rotateZ:function(d7){this.rotate(d7)},invRotateZ:function(d7){this.rotateZ(d7-o.PI)},print:function(){var d8=cl(this.elements);var d7=""+cV.nfs(this.elements[0],d8,4)+" "+cV.nfs(this.elements[1],d8,4)+" "+cV.nfs(this.elements[2],d8,4)+"\n"+cV.nfs(this.elements[3],d8,4)+" "+cV.nfs(this.elements[4],d8,4)+" "+cV.nfs(this.elements[5],d8,4)+"\n\n";cV.println(d7)}};var aM=cV.PMatrix3D=function(){this.reset()};aM.prototype={set:function(){if(arguments.length===16){this.elements=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof aM){this.elements=arguments[0].array()}else{if(arguments.length===1&&arguments[0] instanceof Array){this.elements=arguments[0].slice()}}}},get:function(){var d7=new aM;d7.set(this.elements);return d7},reset:function(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},array:function aD(){return this.elements.slice()},translate:function(d8,d7,d9){if(d9===r){d9=0}this.elements[3]+=d8*this.elements[0]+d7*this.elements[1]+d9*this.elements[2];this.elements[7]+=d8*this.elements[4]+d7*this.elements[5]+d9*this.elements[6];this.elements[11]+=d8*this.elements[8]+d7*this.elements[9]+d9*this.elements[10];this.elements[15]+=d8*this.elements[12]+d7*this.elements[13]+d9*this.elements[14]},transpose:function(){var d7=this.elements[4];this.elements[4]=this.elements[1];this.elements[1]=d7;d7=this.elements[8];this.elements[8]=this.elements[2];this.elements[2]=d7;d7=this.elements[6];this.elements[6]=this.elements[9];this.elements[9]=d7;d7=this.elements[3];this.elements[3]=this.elements[12];this.elements[12]=d7;d7=this.elements[7];this.elements[7]=this.elements[13];this.elements[13]=d7;d7=this.elements[11];this.elements[11]=this.elements[14];this.elements[14]=d7},mult:function(d9,ea){var d7,ec,eb,d8;if(d9 instanceof y){d7=d9.x;ec=d9.y;eb=d9.z;d8=1;if(!ea){ea=new y}}else{if(d9 instanceof Array){d7=d9[0];ec=d9[1];eb=d9[2];d8=d9[3]||1;if(!ea||ea.length!==3&&ea.length!==4){ea=[0,0,0]}}}if(ea instanceof Array){if(ea.length===3){ea[0]=this.elements[0]*d7+this.elements[1]*ec+this.elements[2]*eb+this.elements[3];ea[1]=this.elements[4]*d7+this.elements[5]*ec+this.elements[6]*eb+this.elements[7];ea[2]=this.elements[8]*d7+this.elements[9]*ec+this.elements[10]*eb+this.elements[11]}else{if(ea.length===4){ea[0]=this.elements[0]*d7+this.elements[1]*ec+this.elements[2]*eb+this.elements[3]*d8;ea[1]=this.elements[4]*d7+this.elements[5]*ec+this.elements[6]*eb+this.elements[7]*d8;ea[2]=this.elements[8]*d7+this.elements[9]*ec+this.elements[10]*eb+this.elements[11]*d8;ea[3]=this.elements[12]*d7+this.elements[13]*ec+this.elements[14]*eb+this.elements[15]*d8}}}if(ea instanceof y){ea.x=this.elements[0]*d7+this.elements[1]*ec+this.elements[2]*eb+this.elements[3];ea.y=this.elements[4]*d7+this.elements[5]*ec+this.elements[6]*eb+this.elements[7];ea.z=this.elements[8]*d7+this.elements[9]*ec+this.elements[10]*eb+this.elements[11]}return ea},preApply:function(){var d9;if(arguments.length===1&&arguments[0] instanceof aM){d9=arguments[0].array()}else{if(arguments.length===16){d9=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){d9=arguments[0]}}}var d7=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var ea=0;for(var eb=0;eb<4;eb++){for(var d8=0;d8<4;d8++,ea++){d7[ea]+=this.elements[d8+0]*d9[eb*4+0]+this.elements[d8+4]*d9[eb*4+1]+this.elements[d8+8]*d9[eb*4+2]+this.elements[d8+12]*d9[eb*4+3]}}this.elements=d7.slice()},apply:function(){var d9;if(arguments.length===1&&arguments[0] instanceof aM){d9=arguments[0].array()}else{if(arguments.length===16){d9=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){d9=arguments[0]}}}var d7=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var ea=0;for(var eb=0;eb<4;eb++){for(var d8=0;d8<4;d8++,ea++){d7[ea]+=this.elements[eb*4+0]*d9[d8+0]+this.elements[eb*4+1]*d9[d8+4]+this.elements[eb*4+2]*d9[d8+8]+this.elements[eb*4+3]*d9[d8+12]}}this.elements=d7.slice()},rotate:function(eb,d7,ed,ea){if(!ed){this.rotateZ(eb)}else{var ec=cV.cos(eb);var d9=cV.sin(eb);var d8=1-ec;this.apply(d8*d7*d7+ec,d8*d7*ed-d9*ea,d8*d7*ea+d9*ed,0,d8*d7*ed+d9*ea,d8*ed*ed+ec,d8*ed*ea-d9*d7,0,d8*d7*ea-d9*ed,d8*ed*ea+d9*d7,d8*ea*ea+ec,0,0,0,0,1)}},invApply:function(){if(Z===r){Z=new aM}var d7=arguments;Z.set(d7[0],d7[1],d7[2],d7[3],d7[4],d7[5],d7[6],d7[7],d7[8],d7[9],d7[10],d7[11],d7[12],d7[13],d7[14],d7[15]);if(!Z.invert()){return false}this.preApply(Z);return true},rotateX:function(d8){var d9=cV.cos(d8);var d7=cV.sin(d8);this.apply([1,0,0,0,0,d9,-d7,0,0,d7,d9,0,0,0,0,1])},rotateY:function(d8){var d9=cV.cos(d8);var d7=cV.sin(d8);this.apply([d9,0,d7,0,0,1,0,0,-d7,0,d9,0,0,0,0,1])},rotateZ:function(d8){var d9=o.cos(d8);var d7=o.sin(d8);this.apply([d9,-d7,0,0,d7,d9,0,0,0,0,1,0,0,0,0,1])},scale:function(d9,d8,d7){if(d9&&!d8&&!d7){d8=d7=d9}else{if(d9&&d8&&!d7){d7=1}}if(d9&&d8&&d7){this.elements[0]*=d9;this.elements[1]*=d8;this.elements[2]*=d7;this.elements[4]*=d9;this.elements[5]*=d8;this.elements[6]*=d7;this.elements[8]*=d9;this.elements[9]*=d8;this.elements[10]*=d7;this.elements[12]*=d9;this.elements[13]*=d8;this.elements[14]*=d7}},skewX:function(d8){var d7=o.tan(d8);this.apply(1,d7,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},skewY:function(d8){var d7=o.tan(d8);this.apply(1,0,0,0,d7,1,0,0,0,0,1,0,0,0,0,1)},multX:function(d7,ea,d9,d8){if(!d9){return this.elements[0]*d7+this.elements[1]*ea+this.elements[3]}if(!d8){return this.elements[0]*d7+this.elements[1]*ea+this.elements[2]*d9+this.elements[3]}return this.elements[0]*d7+this.elements[1]*ea+this.elements[2]*d9+this.elements[3]*d8},multY:function(d7,ea,d9,d8){if(!d9){return this.elements[4]*d7+this.elements[5]*ea+this.elements[7]}if(!d8){return this.elements[4]*d7+this.elements[5]*ea+this.elements[6]*d9+this.elements[7]}return this.elements[4]*d7+this.elements[5]*ea+this.elements[6]*d9+this.elements[7]*d8},multZ:function(d7,ea,d9,d8){if(!d8){return this.elements[8]*d7+this.elements[9]*ea+this.elements[10]*d9+this.elements[11]}return this.elements[8]*d7+this.elements[9]*ea+this.elements[10]*d9+this.elements[11]*d8},multW:function(d7,ea,d9,d8){if(!d8){return this.elements[12]*d7+this.elements[13]*ea+this.elements[14]*d9+this.elements[15]}return this.elements[12]*d7+this.elements[13]*ea+this.elements[14]*d9+this.elements[15]*d8},invert:function(){var eg=this.elements[0]*this.elements[5]-this.elements[1]*this.elements[4];var ef=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4];var ee=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4];var ed=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5];var ec=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5];var eb=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6];var ea=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12];var d9=this.elements[8]*this.elements[14]-this.elements[10]*this.elements[12];var d8=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12];var el=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13];var ej=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13];var ei=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14];var ek=eg*ei-ef*ej+ee*el+ed*d8-ec*d9+eb*ea;if(o.abs(ek)<=1e-9){return false}var eh=[];eh[0]=+this.elements[5]*ei-this.elements[6]*ej+this.elements[7]*el;eh[4]=-this.elements[4]*ei+this.elements[6]*d8-this.elements[7]*d9;eh[8]=+this.elements[4]*ej-this.elements[5]*d8+this.elements[7]*ea;eh[12]=-this.elements[4]*el+this.elements[5]*d9-this.elements[6]*ea;eh[1]=-this.elements[1]*ei+this.elements[2]*ej-this.elements[3]*el;eh[5]=+this.elements[0]*ei-this.elements[2]*d8+this.elements[3]*d9;eh[9]=-this.elements[0]*ej+this.elements[1]*d8-this.elements[3]*ea;eh[13]=+this.elements[0]*el-this.elements[1]*d9+this.elements[2]*ea;eh[2]=+this.elements[13]*eb-this.elements[14]*ec+this.elements[15]*ed;eh[6]=-this.elements[12]*eb+this.elements[14]*ee-this.elements[15]*ef;eh[10]=+this.elements[12]*ec-this.elements[13]*ee+this.elements[15]*eg;eh[14]=-this.elements[12]*ed+this.elements[13]*ef-this.elements[14]*eg;eh[3]=-this.elements[9]*eb+this.elements[10]*ec-this.elements[11]*ed;eh[7]=+this.elements[8]*eb-this.elements[10]*ee+this.elements[11]*ef;eh[11]=-this.elements[8]*ec+this.elements[9]*ee-this.elements[11]*eg;eh[15]=+this.elements[8]*ed-this.elements[9]*ef+this.elements[10]*eg;var d7=1/ek;eh[0]*=d7;eh[1]*=d7;eh[2]*=d7;eh[3]*=d7;eh[4]*=d7;eh[5]*=d7;eh[6]*=d7;eh[7]*=d7;eh[8]*=d7;eh[9]*=d7;eh[10]*=d7;eh[11]*=d7;eh[12]*=d7;eh[13]*=d7;eh[14]*=d7;eh[15]*=d7;this.elements=eh.slice();return true},toString:function(){var d8="";for(var d7=0;d7<15;d7++){d8+=this.elements[d7]+", "}d8+=this.elements[15];return d8},print:function(){var d8=cl(this.elements);var d7=""+cV.nfs(this.elements[0],d8,4)+" "+cV.nfs(this.elements[1],d8,4)+" "+cV.nfs(this.elements[2],d8,4)+" "+cV.nfs(this.elements[3],d8,4)+"\n"+cV.nfs(this.elements[4],d8,4)+" "+cV.nfs(this.elements[5],d8,4)+" "+cV.nfs(this.elements[6],d8,4)+" "+cV.nfs(this.elements[7],d8,4)+"\n"+cV.nfs(this.elements[8],d8,4)+" "+cV.nfs(this.elements[9],d8,4)+" "+cV.nfs(this.elements[10],d8,4)+" "+cV.nfs(this.elements[11],d8,4)+"\n"+cV.nfs(this.elements[12],d8,4)+" "+cV.nfs(this.elements[13],d8,4)+" "+cV.nfs(this.elements[14],d8,4)+" "+cV.nfs(this.elements[15],d8,4)+"\n\n";cV.println(d7)},invTranslate:function(d8,d7,d9){this.preApply(1,0,0,-d8,0,1,0,-d7,0,0,1,-d9,0,0,0,1)},invRotateX:function(d8){var d9=o.cos(-d8);var d7=o.sin(-d8);this.preApply([1,0,0,0,0,d9,-d7,0,0,d7,d9,0,0,0,0,1])},invRotateY:function(d8){var d9=o.cos(-d8);var d7=o.sin(-d8);this.preApply([d9,0,d7,0,0,1,0,0,-d7,0,d9,0,0,0,0,1])},invRotateZ:function(d8){var d9=o.cos(-d8);var d7=o.sin(-d8);this.preApply([d9,-d7,0,0,d7,d9,0,0,0,0,1,0,0,0,0,1])},invScale:function(d7,d9,d8){this.preApply([1/d7,0,0,0,0,1/d9,0,0,0,0,1/d8,0,0,0,0,1])}};var T=cV.PMatrixStack=function(){this.matrixStack=[]};T.prototype.load=function(){var d7=dU.$newPMatrix();if(arguments.length===1){d7.set(arguments[0])}else{d7.set(arguments)}this.matrixStack.push(d7)};bO.prototype.$newPMatrix=function(){return new aT};by.prototype.$newPMatrix=function(){return new aM};T.prototype.push=function(){this.matrixStack.push(this.peek())};T.prototype.pop=function(){return this.matrixStack.pop()};T.prototype.peek=function(){var d7=dU.$newPMatrix();d7.set(this.matrixStack[this.matrixStack.length-1]);return d7};T.prototype.mult=function(d7){this.matrixStack[this.matrixStack.length-1].apply(d7)};cV.split=function(d8,d7){return d8.split(d7)};cV.splitTokens=function(ea,d9){if(arguments.length===1){d9="\n\t\r\u000c "}d9="["+d9+"]";var d8=[];var d7=0;var eb=ea.search(d9);while(eb>=0){if(eb===0){ea=ea.substring(1)}else{d8[d7]=ea.substring(0,eb);d7++;ea=ea.substring(eb)}eb=ea.search(d9)}if(ea.length>0){d8[d7]=ea}if(d8.length===0){d8=r}return d8};cV.append=function(d8,d7){d8[d8.length]=d7;return d8};cV.concat=function(d8,d7){return d8.concat(d7)};cV.sort=function(ec,ea){var d8=[];if(ec.length>0){var eb=ea>0?ea:ec.length;for(var d9=0;d90){for(var d7=d8.length;d7>8)};cV.peg=function(d7){return d7<0?0:d7>255?255:d7};cV.modes=function(){var ec=4278190080,d9=16711680,d8=65280,eb=255,ea=o.min,d7=o.max;function ed(ei,el,eh,eq,es,er,ej,en,em,ef,eg){var ep=ea(((ei&4278190080)>>>24)+el,255)<<24;var ee=eh+((em-eh)*el>>8);ee=(ee<0?0:ee>255?255:ee)<<16;var ek=eq+((ef-eq)*el>>8);ek=(ek<0?0:ek>255?255:ek)<<8;var eo=es+((eg-es)*el>>8);eo=eo<0?0:eo>255?255:eo;return ep|ee|ek|eo}return{replace:function(ef,ee){return ee},blend:function(eg,ef){var ei=(ef&ec)>>>24,ee=eg&d9,ek=eg&d8,em=eg&eb,el=ef&d9,eh=ef&d8,ej=ef&eb;return ea(((eg&ec)>>>24)+ei,255)<<24|ee+((el-ee)*ei>>8)&d9|ek+((eh-ek)*ei>>8)&d8|em+((ej-em)*ei>>8)&eb},add:function(ef,ee){var eg=(ee&ec)>>>24;return ea(((ef&ec)>>>24)+eg,255)<<24|ea((ef&d9)+((ee&d9)>>8)*eg,d9)&d9|ea((ef&d8)+((ee&d8)>>8)*eg,d8)&d8|ea((ef&eb)+((ee&eb)*eg>>8),eb)},subtract:function(ef,ee){var eg=(ee&ec)>>>24;return ea(((ef&ec)>>>24)+eg,255)<<24|d7((ef&d9)-((ee&d9)>>8)*eg,d8)&d9|d7((ef&d8)-((ee&d8)>>8)*eg,eb)&d8|d7((ef&eb)-((ee&eb)*eg>>8),0)},lightest:function(ef,ee){var eg=(ee&ec)>>>24;return ea(((ef&ec)>>>24)+eg,255)<<24|d7(ef&d9,((ee&d9)>>8)*eg)&d9|d7(ef&d8,((ee&d8)>>8)*eg)&d8|d7(ef&eb,(ee&eb)*eg>>8)},darkest:function(eg,ef){var ei=(ef&ec)>>>24,ee=eg&d9,ek=eg&d8,em=eg&eb,el=ea(eg&d9,((ef&d9)>>8)*ei),eh=ea(eg&d8,((ef&d8)>>8)*ei),ej=ea(eg&eb,(ef&eb)*ei>>8);return ea(((eg&ec)>>>24)+ei,255)<<24|ee+((el-ee)*ei>>8)&d9|ek+((eh-ek)*ei>>8)&d8|em+((ej-em)*ei>>8)&eb},difference:function(ei,eh){var ek=(eh&ec)>>>24,eg=(ei&d9)>>16,en=(ei&d8)>>8,ep=ei&eb,eo=(eh&d9)>>16,ej=(eh&d8)>>8,em=eh&eb,el=eg>eo?eg-eo:eo-eg,ee=en>ej?en-ej:ej-en,ef=ep>em?ep-em:em-ep;return ed(ei,ek,eg,en,ep,eo,ej,em,el,ee,ef)},exclusion:function(ei,eh){var ek=(eh&ec)>>>24,eg=(ei&d9)>>16,en=(ei&d8)>>8,ep=ei&eb,eo=(eh&d9)>>16,ej=(eh&d8)>>8,em=eh&eb,el=eg+eo-(eg*eo>>7),ee=en+ej-(en*ej>>7),ef=ep+em-(ep*em>>7);return ed(ei,ek,eg,en,ep,eo,ej,em,el,ee,ef)},multiply:function(ei,eh){var ek=(eh&ec)>>>24,eg=(ei&d9)>>16,en=(ei&d8)>>8,ep=ei&eb,eo=(eh&d9)>>16,ej=(eh&d8)>>8,em=eh&eb,el=eg*eo>>8,ee=en*ej>>8,ef=ep*em>>8;return ed(ei,ek,eg,en,ep,eo,ej,em,el,ee,ef)},screen:function(ei,eh){var ek=(eh&ec)>>>24,eg=(ei&d9)>>16,en=(ei&d8)>>8,ep=ei&eb,eo=(eh&d9)>>16,ej=(eh&d8)>>8,em=eh&eb,el=255-((255-eg)*(255-eo)>>8),ee=255-((255-en)*(255-ej)>>8),ef=255-((255-ep)*(255-em)>>8);return ed(ei,ek,eg,en,ep,eo,ej,em,el,ee,ef)},hard_light:function(ei,eh){var ek=(eh&ec)>>>24,eg=(ei&d9)>>16,en=(ei&d8)>>8,ep=ei&eb,eo=(eh&d9)>>16,ej=(eh&d8)>>8,em=eh&eb,el=eo<128?eg*eo>>7:255-((255-eg)*(255-eo)>>7),ee=ej<128?en*ej>>7:255-((255-en)*(255-ej)>>7),ef=em<128?ep*em>>7:255-((255-ep)*(255-em)>>7);return ed(ei,ek,eg,en,ep,eo,ej,em,el,ee,ef)},soft_light:function(ei,eh){var ek=(eh&ec)>>>24,eg=(ei&d9)>>16,en=(ei&d8)>>8,ep=ei&eb,eo=(eh&d9)>>16,ej=(eh&d8)>>8,em=eh&eb,el=(eg*eo>>7)+(eg*eg>>8)-(eg*eg*eo>>15),ee=(en*ej>>7)+(en*en>>8)-(en*en*ej>>15),ef=(ep*em>>7)+(ep*ep>>8)-(ep*ep*em>>15);return ed(ei,ek,eg,en,ep,eo,ej,em,el,ee,ef)},overlay:function(ei,eh){var ek=(eh&ec)>>>24,eg=(ei&d9)>>16,en=(ei&d8)>>8,ep=ei&eb,eo=(eh&d9)>>16,ej=(eh&d8)>>8,em=eh&eb,el=eg<128?eg*eo>>7:255-((255-eg)*(255-eo)>>7),ee=en<128?en*ej>>7:255-((255-en)*(255-ej)>>7),ef=ep<128?ep*em>>7:255-((255-ep)*(255-em)>>7);return ed(ei,ek,eg,en,ep,eo,ej,em,el,ee,ef)},dodge:function(ei,eh){var ek=(eh&ec)>>>24,eg=(ei&d9)>>16,en=(ei&d8)>>8,ep=ei&eb,eo=(eh&d9)>>16,ej=(eh&d8)>>8,em=eh&eb;var el=255;if(eo!==255){el=(eg<<8)/(255-eo);el=el<0?0:el>255?255:el}var ee=255;if(ej!==255){ee=(en<<8)/(255-ej);ee=ee<0?0:ee>255?255:ee}var ef=255;if(em!==255){ef=(ep<<8)/(255-em);ef=ef<0?0:ef>255?255:ef}return ed(ei,ek,eg,en,ep,eo,ej,em,el,ee,ef)},burn:function(ei,eh){var ek=(eh&ec)>>>24,eg=(ei&d9)>>16,en=(ei&d8)>>8,ep=ei&eb,eo=(eh&d9)>>16,ej=(eh&d8)>>8,em=eh&eb;var el=0;if(eo!==0){el=(255-eg<<8)/eo;el=255-(el<0?0:el>255?255:el)}var ee=0;if(ej!==0){ee=(255-en<<8)/ej;ee=255-(ee<0?0:ee>255?255:ee)}var ef=0;if(em!==0){ef=(255-ep<<8)/em;ef=255-(ef<0?0:ef>255?255:ef)}return ed(ei,ek,eg,en,ep,eo,ej,em,el,ee,ef)}}}();function dD(ec,eb,d9,d8){var d7,ea,ee,ef;if(cX===3){var ed=cV.color.toRGB(ec,eb,d9);d7=ed[0];ea=ed[1];ee=ed[2]}else{d7=o.round(255*(ec/bG));ea=o.round(255*(eb/bF));ee=o.round(255*(d9/bD))}ef=o.round(255*(d8/bR));d7=d7<0?0:d7;ea=ea<0?0:ea;ee=ee<0?0:ee;ef=ef<0?0:ef;d7=d7>255?255:d7;ea=ea>255?255:ea;ee=ee>255?255:ee;ef=ef>255?255:ef;return ef<<24&4278190080|d7<<16&16711680|ea<<8&65280|ee&255}function dG(d7,d9){var d8;if(d7&4278190080){d8=o.round(255*(d9/bR));d8=d8>255?255:d8;d8=d8<0?0:d8;return d7-(d7&4278190080)+(d8<<24&4278190080)}if(cX===1){return dD(d7,d7,d7,d9)}if(cX===3){return dD(0,0,d7/bG*bD,d9)}}function dI(d7){if(d7<=bG&&d7>=0){if(cX===1){return dD(d7,d7,d7,bR)}if(cX===3){return dD(0,0,d7/bG*bD,bR)}}if(d7){if(d7>2147483647){d7-=4294967296}return d7}}cV.color=function(d7,ea,d9,d8){if(d7!==r&&ea!==r&&d9!==r&&d8!==r){return dD(d7,ea,d9,d8)}if(d7!==r&&ea!==r&&d9!==r){return dD(d7,ea,d9,bR)}if(d7!==r&&ea!==r){return dG(d7,ea)}if(typeof d7==="number"){return dI(d7)}return dD(bG,bF,bD,bR)};cV.color.toString=function(d7){return"rgba("+((d7>>16)&255)+","+((d7>>8)&255)+","+(d7&255)+","+((d7>>24)&255)/255+")"};cV.color.toInt=function(ea,d9,d7,d8){return d8<<24&4278190080|ea<<16&16711680|d9<<8&65280|d7&255};cV.color.toArray=function(d7){return[(d7>>16)&255,(d7>>8)&255,d7&255,(d7>>24)&255]};cV.color.toGLArray=function(d7){return[((d7>>16)&255)/255,((d7>>8)&255)/255,(d7&255)/255,((d7&4278190080)>>>24)/255]};cV.color.toRGB=function(d9,ef,ec){d9=d9>bG?bG:d9;ef=ef>bF?bF:ef;ec=ec>bD?bD:ec;d9=d9/bG*360;ef=ef/bF*100;ec=ec/bD*100;var ee=o.round(ec/100*255);if(ef===0){return[ee,ee,ee]}var ea=d9%360;var eb=ea%60;var d8=o.round(ec*(100-ef)/10000*255);var d7=o.round(ec*(6000-ef*eb)/600000*255);var ed=o.round(ec*(6000-ef*(60-eb))/600000*255);switch(o.floor(ea/60)){case 0:return[ee,ed,d8];case 1:return[d7,ee,d8];case 2:return[d8,ee,ed];case 3:return[d8,d7,ee];case 4:return[ed,d8,ee];case 5:return[ee,d8,d7]}};function aP(ee){var ed,ec,d8;ed=((ee>>16)&255)/255;ec=((ee>>8)&255)/255;d8=(ee&255)/255;var d7=cV.max(cV.max(ed,ec),d8),ea=cV.min(cV.min(ed,ec),d8),d9,eb;if(ea===d7){return[0,0,d7*bD]}eb=(d7-ea)/d7;if(ed===d7){d9=(ec-d8)/(d7-ea)}else{if(ec===d7){d9=2+(d8-ed)/(d7-ea)}else{d9=4+(ed-ec)/(d7-ea)}}d9/=6;if(d9<0){d9+=1}else{if(d9>1){d9-=1}}return[d9*bG,eb*bF,d7*bD]}cV.brightness=function(d7){return aP(d7)[2]};cV.saturation=function(d7){return aP(d7)[1]};cV.hue=function(d7){return aP(d7)[0]};cV.red=function(d7){return((d7>>16)&255)/255*bG};cV.green=function(d7){return((d7>>8)&255)/255*bF};cV.blue=function(d7){return(d7&255)/255*bD};cV.alpha=function(d7){return((d7>>24)&255)/255*bR};cV.lerpColor=function(ej,ei,ec){var eh,en,eo,ep,el,d7,ed,er,ek,es,eb,eq;var ef,ee,d8,em,eg;var ea=cV.color(ej);var d9=cV.color(ei);if(cX===3){ef=aP(ea);er=((ea>>24)&255)/bR;ee=aP(d9);eq=((d9>>24)&255)/bR;em=cV.lerp(ef[0],ee[0],ec);eg=cV.lerp(ef[1],ee[1],ec);eo=cV.lerp(ef[2],ee[2],ec);d8=cV.color.toRGB(em,eg,eo);ep=cV.lerp(er,eq,ec)*bR;return ep<<24&4278190080|(d8[0]&255)<<16|(d8[1]&255)<<8|d8[2]&255}el=(ea>>16)&255;d7=(ea>>8)&255;ed=ea&255;er=((ea>>24)&255)/bR;ek=(d9>>16)&255;es=(d9>>8)&255;eb=d9&255;eq=((d9&4278190080)>>>24)/bR;eh=cV.lerp(el,ek,ec)|0;en=cV.lerp(d7,es,ec)|0;eo=cV.lerp(ed,eb,ec)|0;ep=cV.lerp(er,eq,ec)*bR;return ep<<24&4278190080|eh<<16&16711680|en<<8&65280|eo&255};cV.colorMode=function(){cX=arguments[0];if(arguments.length>1){bG=arguments[1];bF=arguments[2]||arguments[1];bD=arguments[3]||arguments[1];bR=arguments[4]||arguments[1]}};cV.blendColor=function(d8,d7,d9){if(d9===0){return cV.modes.replace(d8,d7)}else{if(d9===1){return cV.modes.blend(d8,d7)}else{if(d9===2){return cV.modes.add(d8,d7)}else{if(d9===4){return cV.modes.subtract(d8,d7)}else{if(d9===8){return cV.modes.lightest(d8,d7)}else{if(d9===16){return cV.modes.darkest(d8,d7)}else{if(d9===32){return cV.modes.difference(d8,d7)}else{if(d9===64){return cV.modes.exclusion(d8,d7)}else{if(d9===128){return cV.modes.multiply(d8,d7)}else{if(d9===256){return cV.modes.screen(d8,d7)}else{if(d9===1024){return cV.modes.hard_light(d8,d7)}else{if(d9===2048){return cV.modes.soft_light(d8,d7)}else{if(d9===512){return cV.modes.overlay(d8,d7)}else{if(d9===4096){return cV.modes.dodge(d8,d7)}else{if(d9===8192){return cV.modes.burn(d8,d7)}}}}}}}}}}}}}}}};function aC(){d4.save()}function cO(){d4.restore();b2=true;ap=true}cV.printMatrix=function(){dF.print()};bO.prototype.translate=function(d7,d8){dF.translate(d7,d8);aQ.invTranslate(d7,d8);d4.translate(d7,d8)};by.prototype.translate=function(d7,d9,d8){dF.translate(d7,d9,d8);aQ.invTranslate(d7,d9,d8)};bO.prototype.scale=function(d7,d8){dF.scale(d7,d8);aQ.invScale(d7,d8);d4.scale(d7,d8||d7)};by.prototype.scale=function(d7,d9,d8){dF.scale(d7,d9,d8);aQ.invScale(d7,d9,d8)};bO.prototype.pushMatrix=function(){al.load(dF);c9.load(aQ);aC()};by.prototype.pushMatrix=function(){al.load(dF);c9.load(aQ)};bO.prototype.popMatrix=function(){dF.set(al.pop());aQ.set(c9.pop());cO()};by.prototype.popMatrix=function(){dF.set(al.pop());aQ.set(c9.pop())};bO.prototype.resetMatrix=function(){dF.reset();aQ.reset();d4.setTransform(1,0,0,1,0,0)};by.prototype.resetMatrix=function(){dF.reset();aQ.reset()};dp.prototype.applyMatrix=function(){var d7=arguments;dF.apply(d7[0],d7[1],d7[2],d7[3],d7[4],d7[5],d7[6],d7[7],d7[8],d7[9],d7[10],d7[11],d7[12],d7[13],d7[14],d7[15]);aQ.invApply(d7[0],d7[1],d7[2],d7[3],d7[4],d7[5],d7[6],d7[7],d7[8],d7[9],d7[10],d7[11],d7[12],d7[13],d7[14],d7[15])};bO.prototype.applyMatrix=function(){var d7=arguments;for(var d8=d7.length;d8<16;d8++){d7[d8]=0}d7[10]=d7[15]=1;dp.prototype.applyMatrix.apply(this,d7)};cV.rotateX=function(d7){dF.rotateX(d7);aQ.invRotateX(d7)};bO.prototype.rotateZ=function(){throw"rotateZ() is not supported in 2D mode. Use rotate(float) instead."};by.prototype.rotateZ=function(d7){dF.rotateZ(d7);aQ.invRotateZ(d7)};cV.rotateY=function(d7){dF.rotateY(d7);aQ.invRotateY(d7)};bO.prototype.rotate=function(d7){dF.rotateZ(d7);aQ.invRotateZ(d7);d4.rotate(d7)};by.prototype.rotate=function(d7){cV.rotateZ(d7)};cV.pushStyle=function(){aC();cV.pushMatrix();var d7={doFill:aF,currentFillColor:aX,doStroke:cd,currentStrokeColor:cu,curTint:bb,curRectMode:bI,curColorMode:cX,colorModeX:bG,colorModeZ:bD,colorModeY:bF,colorModeA:bR,curTextFont:U,horizontalTextAlignment:L,verticalTextAlignment:c0,textMode:cH,curFontName:W,curTextSize:dW,curTextAscent:aZ,curTextDescent:dx,curTextLeading:d3};bj.push(d7)};cV.popStyle=function(){var d7=bj.pop();if(d7){cO();cV.popMatrix();aF=d7.doFill;aX=d7.currentFillColor;cd=d7.doStroke;cu=d7.currentStrokeColor;bb=d7.curTint;bI=d7.curRectmode;cX=d7.curColorMode;bG=d7.colorModeX;bD=d7.colorModeZ;bF=d7.colorModeY;bR=d7.colorModeA;U=d7.curTextFont;W=d7.curFontName;dW=d7.curTextSize;L=d7.horizontalTextAlignment;c0=d7.verticalTextAlignment;cH=d7.textMode;aZ=d7.curTextAscent;dx=d7.curTextDescent;d3=d7.curTextLeading}else{throw"Too many popStyle() without enough pushStyle()"}};cV.year=function(){return(new Date).getFullYear()};cV.month=function(){return(new Date).getMonth()+1};cV.day=function(){return(new Date).getDate()};cV.hour=function(){return(new Date).getHours()};cV.minute=function(){return(new Date).getMinutes()};cV.second=function(){return(new Date).getSeconds()};cV.millis=function(){return Date.now()-dm};function cs(){var d7=(Date.now()-dq)/1000;N++;var d8=N/d7;if(d7>0.5){dq=Date.now();N=0;cV.__frameRate=d8}cV.frameCount++}bO.prototype.redraw=function(){cs();d4.lineWidth=dS;var d7=cV.pmouseX,d8=cV.pmouseY;cV.pmouseX=dJ;cV.pmouseY=d1;aC();cV.draw();cO();dJ=cV.mouseX;d1=cV.mouseY;cV.pmouseX=d7;cV.pmouseY=d8};by.prototype.redraw=function(){cs();var d7=cV.pmouseX,d8=cV.pmouseY;cV.pmouseX=dJ;cV.pmouseY=d1;d4.clear(d4.DEPTH_BUFFER_BIT);dz={attributes:{},locations:{}};cV.noLights();cV.lightFalloff(1,0,0);cV.shininess(1);cV.ambient(255,255,255);cV.specular(0,0,0);cV.emissive(0,0,0);cV.camera();cV.draw();dJ=cV.mouseX;d1=cV.mouseY;cV.pmouseX=d7;cV.pmouseY=d8};cV.noLoop=function(){aB=false;aw=false;clearInterval(b3);cP.onPause()};cV.loop=function(){if(aw){return}dq=Date.now();N=0;b3=B.setInterval(function(){try{cP.onFrameStart();cV.redraw();cP.onFrameEnd()}catch(d7){B.clearInterval(b3);throw d7}},ay);aB=true;aw=true;cP.onLoop()};cV.frameRate=function(d7){dQ=d7;ay=1000/dQ;if(aB){cV.noLoop();cV.loop()}};var at=[];function bM(d9,d8,d7){if(d9.addEventListener){d9.addEventListener(d8,d7,false)}else{d9.attachEvent("on"+d8,d7)}at.push({elem:d9,type:d8,fn:d7})}function dd(d7){var ea=d7.elem,d9=d7.type,d8=d7.fn;if(ea.removeEventListener){ea.removeEventListener(d9,d8,false)}else{if(ea.detachEvent){ea.detachEvent("on"+d9,d8)}}}cV.exit=function(){B.clearInterval(b3);J(cV.externals.canvas.id);for(var d8 in D.lib){if(D.lib.hasOwnProperty(d8)){if(D.lib[d8].hasOwnProperty("detach")){D.lib[d8].detach(cV)}}}var d7=at.length;while(d7--){dd(at[d7])}cP.onExit()};cV.cursor=function(){if(arguments.length>1||arguments.length===1&&arguments[0] instanceof cV.PImage){var ea=arguments[0],d7,ec;if(arguments.length>=3){d7=arguments[1];ec=arguments[2];if(d7<0||ec<0||ec>=ea.height||d7>=ea.width){throw"x and y must be non-negative and less than the dimensions of the image"}}else{d7=ea.width>>>1;ec=ea.height>>>1}var d8=ea.toDataURL();var d9='url("'+d8+'") '+d7+" "+ec+", default";X=ac.style.cursor=d9}else{if(arguments.length===1){var eb=arguments[0];X=ac.style.cursor=eb}else{X=ac.style.cursor=cj}}};cV.noCursor=function(){X=ac.style.cursor=z.NOCURSOR};cV.link=function(d7,d8){if(d8!==r){B.open(d7,d8)}else{B.location=d7}};cV.beginDraw=E;cV.endDraw=E;bO.prototype.toImageData=function(d7,ea,d8,d9){d7=d7!==r?d7:0;ea=ea!==r?ea:0;d8=d8!==r?d8:cV.width;d9=d9!==r?d9:cV.height;return d4.getImageData(d7,ea,d8,d9)};by.prototype.toImageData=function(ef,ee,eg,eb){ef=ef!==r?ef:0;ee=ee!==r?ee:0;eg=eg!==r?eg:cV.width;eb=eb!==r?eb:cV.height;var ed=d.createElement("canvas"),eh=ed.getContext("2d"),ea=eh.createImageData(eg,eb),d8=new b(eg*eb*4);d4.readPixels(ef,ee,eg,eb,d4.RGBA,d4.UNSIGNED_BYTE,d8);for(var d9=0,ec=d8.length,d7=ea.data;d90){ea=d9}else{if(d8 instanceof bN){ea=16;d8|=0}else{ea=32;while(ea>1&&!(d8>>>ea-1&1)){ea--}}}var d7="";while(ea>0){d7+=d8>>>--ea&1?"1":"0"}return d7};cV.unbinary=function(d8){var ea=d8.length-1,d9=1,d7=0;while(ea>=0){var eb=d8[ea--];if(eb!=="0"&&eb!=="1"){throw"the value passed into unbinary was not an 8 bit binary number"}if(eb==="1"){d7+=d9}d9<<=1}return d7};function cW(ej,eh,eb,em,ed,ek){var d9=ej<0?eb:eh;var d8=ed===0;var ei=ed===r||ed<0?0:ed;var eg=o.abs(ej);if(d8){ei=1;eg*=10;while(o.abs(o.round(eg)-eg)>0.000001&&ei<7){++ei;eg*=10}}else{if(ei!==0){eg*=o.pow(10,ei)}}var ea,ef=eg*2;if(o.floor(eg)===eg){ea=eg}else{if(o.floor(ef)===ef){var d7=o.floor(eg);ea=d7+d7%2}else{ea=o.round(eg)}}var ec="";var el=em+ei;while(el>0||ea>0){el--;ec=""+ea%10+ec;ea=o.floor(ea/10)}if(ek!==r){var ee=ec.length-3-ei;while(ee>0){ec=ec.substring(0,ee)+ek+ec.substring(ee);ee-=3}}if(ei>0){return d9+ec.substring(0,ec.length-ei)+"."+ec.substring(ec.length-ei,ec.length)}return d9+ec}function an(ed,ec,d7,ef,d8,ee){if(ed instanceof Array){var ea=[];for(var d9=0,eb=ed.length;d9=d8){d7=d7.substring(d7.length-d8,d7.length)}return d7};cV.hex=function(d8,d7){if(arguments.length===1){if(d8 instanceof bN){d7=4}else{d7=8}}return aK(d8,d7)};function dB(d7){var d8=parseInt("0x"+d7,16);if(d8>2147483647){d8-=4294967296}return d8}cV.unhex=function(d9){if(d9 instanceof Array){var d7=[];for(var d8=0;d80?ea:null};cV.__contains=function(d8,d7){if(typeof d8!=="string"){return d8.contains.apply(d8,a8(arguments))}return d8!==null&&d7!==null&&typeof d7==="string"&&d8.indexOf(d7)>-1};cV.__replaceAll=function(d7,d9,d8){if(typeof d7!=="string"){return d7.replaceAll.apply(d7,a8(arguments))}return d7.replace(new RegExp(d9,"g"),d8)};cV.__replaceFirst=function(d7,d9,d8){if(typeof d7!=="string"){return d7.replaceFirst.apply(d7,a8(arguments))}return d7.replace(new RegExp(d9,""),d8)};cV.__replace=function(ea,ec,eb){if(typeof ea!=="string"){return ea.replace.apply(ea,a8(arguments))}if(ec instanceof RegExp){return ea.replace(ec,eb)}if(typeof ec!=="string"){ec=ec.toString()}if(ec===""){return ea}var d9=ea.indexOf(ec);if(d9<0){return ea}var d8=0,d7="";do{d7+=ea.substring(d8,d9)+eb;d8=d9+ec.length}while((d9=ea.indexOf(ec,d8))>=0);return d7+ea.substring(d8)};cV.__equals=function(d8,d7){if(d8.equals instanceof Function){return d8.equals.apply(d8,a8(arguments))}return d8.valueOf()===d7.valueOf()};cV.__equalsIgnoreCase=function(d8,d7){if(typeof d8!=="string"){return d8.equalsIgnoreCase.apply(d8,a8(arguments))}return d8.toLowerCase()===d7.toLowerCase()};cV.__toCharArray=function(d9){if(typeof d9!=="string"){return d9.toCharArray.apply(d9,a8(arguments))}var ea=[];for(var d8=0,d7=d9.length;d8d7.length){return false}return d9===""||d9===d7?true:d7.indexOf(d9)===d8};cV.__endsWith=function(d8,d9){if(typeof d8!=="string"){return d8.endsWith.apply(d8,a8(arguments))}var d7=d9?d9.length:0;return d9===""||d9===d8?true:d8.indexOf(d9)===d8.length-d7};cV.__hashCode=function(d7){if(d7.hashCode instanceof Function){return d7.hashCode.apply(d7,a8(arguments))}return h(d7)};cV.__printStackTrace=function(d7){cV.println("Exception: "+d7.toString())};var d6=[];cV.println=function(d7){var d8=d6.length;if(d8){D.logger.log(d6.join(""));d6.length=0}if(arguments.length===0&&d8===0){D.logger.log("")}else{if(arguments.length!==0){D.logger.log(d7)}}};cV.print=function(d7){d6.push(d7)};cV.str=function(d9){if(d9 instanceof Array){var d7=[];for(var d8=0;d80){var d7=ea.shift();if(d7===d8){return true}if(d7.$interfaces){ea=ea.concat(d7.$interfaces)}}return false}while(eb.hasOwnProperty("$base")){eb=eb.$base;if(eb===d8){return true}}return false};cV.abs=o.abs;cV.ceil=o.ceil;cV.constrain=function(d8,d9,d7){return d8>d7?d7:d80)){throw"Non-empty array is expected"}var d7=d8[0],ea=d8.length;for(var d9=1;d90)){throw"Non-empty array is expected"}var d9=d7[0],ea=d7.length;for(var d8=1;d8d7[d8]){d9=d7[d8]}}return d9};cV.norm=function(d8,d7,d9){return(d8-d7)/(d9-d7)};cV.pow=o.pow;cV.round=o.round;cV.sq=function(d7){return d7*d7};cV.sqrt=o.sqrt;cV.acos=o.acos;cV.asin=o.asin;cV.atan=o.atan;cV.atan2=o.atan2;cV.cos=o.cos;cV.degrees=function(d7){return d7*180/o.PI};cV.radians=function(d7){return d7/180*o.PI};cV.sin=o.sin;cV.tan=o.tan;var bW=o.random;cV.random=function(){if(arguments.length===0){return bW()}if(arguments.length===1){return bW()*arguments[0]}var d8=arguments[0],d7=arguments[1];return bW()*(d7-d8)+d8};function cn(d9,d8){var eb=d9||362436069,d7=d8||521288629;var ea=function(){eb=36969*(eb&65535)+(eb>>>16)&4294967295;d7=18000*(d7&65535)+(d7>>>16)&4294967295;return((eb&65535)<<16|d7&65535)&4294967295};this.nextDouble=function(){var ec=ea()/4294967296;return ec<0?1+ec:ec};this.nextInt=ea}cn.createRandomized=function(){var d7=new Date;return new cn(d7/60000&4294967295,d7&4294967295)};cV.randomSeed=function(d7){bW=(new cn(d7)).nextDouble};cV.Random=function(d7){var ea=false,d8,d9;this.nextGaussian=function(){if(ea){ea=false;return d8}var ee,ec,eb;do{ee=2*d9()-1;ec=2*d9()-1;eb=ee*ee+ec*ec}while(eb>=1||eb===0);var ed=o.sqrt(-2*o.log(eb)/eb);d8=ec*ed;ea=true;return ee*ed};d9=d7===r?o.random:(new cn(d7)).nextDouble};function dw(ee){var d8=ee!==r?new cn(ee):cn.createRandomized();var ed,eb;var ea=new b(512);for(ed=0;ed<256;++ed){ea[ed]=ed}for(ed=0;ed<256;++ed){var eg=ea[eb=d8.nextInt()&255];ea[eb]=ea[ed];ea[ed]=eg}for(ed=0;ed<256;++ed){ea[ed+256]=ea[ed]}function d7(ek,eh,en,em){var el=ek&15;var ej=el<8?eh:en,ei=el<4?en:el===12||el===14?eh:em;return((el&1)===0?ej:-ej)+((el&2)===0?ei:-ei)}function ec(ej,eh,ek){var ei=(ej&1)===0?eh:ek;return(ej&2)===0?-ei:ei}function ef(ei,eh){return(ei&1)===0?-eh:eh}function d9(ej,ei,eh){return ei+ej*(eh-ei)}this.noise3d=function(et,es,er){var ek=o.floor(et)&255,ei=o.floor(es)&255,eh=o.floor(er)&255;et-=o.floor(et);es-=o.floor(es);er-=o.floor(er);var eo=(3-2*et)*et*et,en=(3-2*es)*es*es,em=(3-2*er)*er*er;var ev=ea[ek]+ei,eq=ea[ev]+eh,ep=ea[ev+1]+eh,eu=ea[ek+1]+ei,el=ea[eu]+eh,ej=ea[eu+1]+eh;return d9(em,d9(en,d9(eo,d7(ea[eq],et,es,er),d7(ea[el],et-1,es,er)),d9(eo,d7(ea[ep],et,es-1,er),d7(ea[ej],et-1,es-1,er))),d9(en,d9(eo,d7(ea[eq+1],et,es,er-1),d7(ea[el+1],et-1,es,er-1)),d9(eo,d7(ea[ep+1],et,es-1,er-1),d7(ea[ej+1],et-1,es-1,er-1))))};this.noise2d=function(eh,eo){var en=o.floor(eh)&255,el=o.floor(eo)&255;eh-=o.floor(eh);eo-=o.floor(eo);var ej=(3-2*eh)*eh*eh,ei=(3-2*eo)*eo*eo;var em=ea[en]+el,ek=ea[en+1]+el;return d9(ei,d9(ej,ec(ea[em],eh,eo),ec(ea[ek],eh-1,eo)),d9(ej,ec(ea[em+1],eh,eo-1),ec(ea[ek+1],eh-1,eo-1)))};this.noise1d=function(eh){var ej=o.floor(eh)&255;eh-=o.floor(eh);var ei=(3-2*eh)*eh*eh;return d9(ei,ef(ea[ej],eh),ef(ea[ej+1],eh-1))}}var bU={generator:r,octaves:4,fallout:0.5,seed:r};cV.noise=function(d7,ee,ed){if(bU.generator===r){bU.generator=new dw(bU.seed)}var ec=bU.generator;var eb=1,d8=1,ea=0;for(var d9=0;d90){ac.style.removeProperty("width");ac.style.removeProperty("height")}ac.width=cV.width=d8||100;ac.height=cV.height=eb||100;for(var ec in d9){if(d9.hasOwnProperty(ec)){d4[ec]=d9[ec]}}cV.textFont(U);cV.background();bY=o.max(1000,d8*eb*0.05);cV.externals.context=d4;for(var d7=0;d7<720;d7++){ag[d7]=cV.sin(d7*(o.PI/180)*0.5);bi[d7]=cV.cos(d7*(o.PI/180)*0.5)}};bO.prototype.size=function(d7,d9,d8){if(d4===r){d4=ac.getContext("2d");al=new T;c9=new T;dF=new aT;aQ=new aT}dp.prototype.size.apply(this,arguments)};by.prototype.size=function(){var d8=false;return function d7(ea,ec,eb){if(d8){throw"Multiple calls to size() for 3D renders are not allowed."}d8=true;function ed(ef){var ei=["experimental-webgl","webgl","webkit-3d"],eh;for(var eg=0,ee=ei.length;eg>16)&255)/255,((d8&65280)>>>8)/255,(d8&255)/255];d4.useProgram(du);dY("lights.color.3d."+dH,du,"lights"+dH+".color",d9);dY("lights.position.3d."+dH,du,"lights"+dH+".position",ed.array());dV("lights.type.3d."+dH,du,"lights"+dH+".type",0);dV("lightCount3d",du,"lightCount",++dH)};bO.prototype.directionalLight=dp.prototype.a3DOnlyFunction;by.prototype.directionalLight=function(d7,ed,ef,ee,ec,eb){if(dH===8){throw"can only create "+8+" lights"}d4.useProgram(du);var eg=new aM;eg.scale(1,-1,1);eg.apply(dF.array());eg=eg.array();var d9=[eg[0]*ee+eg[4]*ec+eg[8]*eb,eg[1]*ee+eg[5]*ec+eg[9]*eb,eg[2]*ee+eg[6]*ec+eg[10]*eb];var d8=dD(d7,ed,ef,0);var ea=[((d8>>16)&255)/255,((d8>>8)&255)/255,(d8&255)/255];dY("lights.color.3d."+dH,du,"lights"+dH+".color",ea);dY("lights.position.3d."+dH,du,"lights"+dH+".position",d9);dV("lights.type.3d."+dH,du,"lights"+dH+".type",1);dV("lightCount3d",du,"lightCount",++dH)};bO.prototype.lightFalloff=dp.prototype.a3DOnlyFunction;by.prototype.lightFalloff=function(d8,d7,d9){d4.useProgram(du);dY("falloff3d",du,"falloff",[d8,d7,d9])};bO.prototype.lightSpecular=dp.prototype.a3DOnlyFunction;by.prototype.lightSpecular=function(eb,ea,d7){var d8=dD(eb,ea,d7,0);var d9=[((d8>>16)&255)/255,((d8>>8)&255)/255,(d8&255)/255];d4.useProgram(du);dY("specular3d",du,"specular",d9)};cV.lights=function(){cV.ambientLight(128,128,128);cV.directionalLight(128,128,128,0,0,-1);cV.lightFalloff(1,0,0);cV.lightSpecular(0,0,0)};bO.prototype.pointLight=dp.prototype.a3DOnlyFunction;by.prototype.pointLight=function(d7,ea,ef,eg,ec,eb){if(dH===8){throw"can only create "+8+" lights"}var ed=new y(eg,ec,eb);var ee=new aM;ee.scale(1,-1,1);ee.apply(dF.array());ee.mult(ed,ed);var d8=dD(d7,ea,ef,0);var d9=[((d8>>16)&255)/255,((d8>>8)&255)/255,(d8&255)/255];d4.useProgram(du);dY("lights.color.3d."+dH,du,"lights"+dH+".color",d9);dY("lights.position.3d."+dH,du,"lights"+dH+".position",ed.array());dV("lights.type.3d."+dH,du,"lights"+dH+".type",2);dV("lightCount3d",du,"lightCount",++dH)};bO.prototype.noLights=dp.prototype.a3DOnlyFunction;by.prototype.noLights=function(){dH=0;d4.useProgram(du);dV("lightCount3d",du,"lightCount",dH)};bO.prototype.spotLight=dp.prototype.a3DOnlyFunction;by.prototype.spotLight=function(d7,ef,ek,el,ej,eh,eg,ee,ec,eb,ed){if(dH===8){throw"can only create "+8+" lights"}d4.useProgram(du);var ei=new y(el,ej,eh);var em=new aM;em.scale(1,-1,1);em.apply(dF.array());em.mult(ei,ei);em=em.array();var d9=[em[0]*eg+em[4]*ee+em[8]*ec,em[1]*eg+em[5]*ee+em[9]*ec,em[2]*eg+em[6]*ee+em[10]*ec];var d8=dD(d7,ef,ek,0);var ea=[((d8>>16)&255)/255,((d8>>8)&255)/255,(d8&255)/255];dY("lights.color.3d."+dH,du,"lights"+dH+".color",ea);dY("lights.position.3d."+dH,du,"lights"+dH+".position",ei.array());dY("lights.direction.3d."+dH,du,"lights"+dH+".direction",d9);dY("lights.concentration.3d."+dH,du,"lights"+dH+".concentration",ed);dY("lights.angle.3d."+dH,du,"lights"+dH+".angle",eb);dV("lights.type.3d."+dH,du,"lights"+dH+".type",3);dV("lightCount3d",du,"lightCount",++dH)};bO.prototype.beginCamera=function(){throw"beginCamera() is not available in 2D mode"};by.prototype.beginCamera=function(){if(ao){throw"You cannot call beginCamera() again before calling endCamera()"}ao=true;dF=cg;aQ=bT};bO.prototype.endCamera=function(){throw"endCamera() is not available in 2D mode"};by.prototype.endCamera=function(){if(!ao){throw"You cannot call endCamera() before calling beginCamera()"}dF.set(bT);aQ.set(cg);ao=false};cV.camera=function(ei,eh,ef,ed,eb,ea,eq,eo,em){if(ei===r){dj=cV.width/2;dh=cV.height/2;dg=dh/o.tan(cJ/2);ei=dj;eh=dh;ef=dg;ed=dj;eb=dh;ea=0;eq=0;eo=1;em=0}var ec=new y(ei-ed,eh-eb,ef-ea);var ee=new y(eq,eo,em);ec.normalize();var eg=y.cross(ee,ec);ee=y.cross(ec,eg);eg.normalize();ee.normalize();var er=eg.x,ep=eg.y,en=eg.z;var d9=ee.x,d8=ee.y,d7=ee.z;var el=ec.x,ek=ec.y,ej=ec.z;bT.set(er,ep,en,0,d9,d8,d7,0,el,ek,ej,0,0,0,0,1);bT.translate(-ei,-eh,-ef);cg.reset();cg.invApply(er,ep,en,0,d9,d8,d7,0,el,ek,ej,0,0,0,0,1);cg.translate(ei,eh,ef);dF.set(bT);aQ.set(cg)};cV.perspective=function(eb,d9,ec,d8){if(arguments.length===0){dh=ac.height/2;dg=dh/o.tan(cJ/2);aW=dg/10;au=dg*10;b4=cV.width/cV.height;eb=cJ;d9=b4;ec=aW;d8=au}var ed,d7,ee,ea;ed=ec*o.tan(eb/2);d7=-ed;ee=ed*d9;ea=d7*d9;cV.frustum(ea,ee,d7,ed,ec,d8)};bO.prototype.frustum=function(){throw"Processing.js: frustum() is not supported in 2D mode"};by.prototype.frustum=function(ed,d9,d8,ec,eb,d7){ch=true;da=new aM;da.set(2*eb/(d9-ed),0,(d9+ed)/(d9-ed),0,0,2*eb/(ec-d8),(ec+d8)/(ec-d8),0,0,0,-(d7+eb)/(d7-eb),-(2*d7*eb)/(d7-eb),0,0,-1,0);var ea=new aM;ea.set(da);ea.transpose();d4.useProgram(dM);a5("projection2d",dM,"projection",false,ea.array());d4.useProgram(du);a5("projection3d",du,"projection",false,ea.array());d4.useProgram(bQ);a5("uProjectionUS",bQ,"uProjection",false,ea.array())};cV.ortho=function(d8,ej,d7,eh,ee,ed){if(arguments.length===0){d8=0;ej=cV.width;d7=0;eh=cV.height;ee=-10;ed=10}var ei=2/(ej-d8);var eg=2/(eh-d7);var ef=-2/(ed-ee);var ec=-(ej+d8)/(ej-d8);var eb=-(eh+d7)/(eh-d7);var ea=-(ed+ee)/(ed-ee);da=new aM;da.set(ei,0,0,ec,0,eg,0,eb,0,0,ef,ea,0,0,0,1);var d9=new aM;d9.set(da);d9.transpose();d4.useProgram(dM);a5("projection2d",dM,"projection",false,d9.array());d4.useProgram(du);a5("projection3d",du,"projection",false,d9.array());d4.useProgram(bQ);a5("uProjectionUS",bQ,"uProjection",false,d9.array());ch=false};cV.printProjection=function(){da.print()};cV.printCamera=function(){bT.print()};bO.prototype.box=dp.prototype.a3DOnlyFunction;by.prototype.box=function(d9,ec,ee){if(!ec||!ee){ec=ee=d9}var eb=new aM;eb.scale(d9,ec,ee);var d8=new aM;d8.scale(1,-1,1);d8.apply(dF.array());d8.transpose();if(aF){d4.useProgram(du);a5("model3d",du,"model",false,eb.array());a5("view3d",du,"view",false,d8.array());d4.enable(d4.POLYGON_OFFSET_FILL);d4.polygonOffset(1,1);dY("color3d",du,"color",bl);if(dH>0){var ea=new aM;ea.set(d8);var d7=new aM;d7.set(eb);ea.mult(d7);var ed=new aM;ed.set(ea);ed.invert();ed.transpose();a5("normalTransform3d",du,"normalTransform",false,ed.array());db("normal3d",du,"Normal",3,cI)}else{cf("normal3d",du,"Normal")}db("vertex3d",du,"Vertex",3,bd);cf("aColor3d",du,"aColor");cf("aTexture3d",du,"aTexture");d4.drawArrays(d4.TRIANGLES,0,df.length/3);d4.disable(d4.POLYGON_OFFSET_FILL)}if(dS>0&&cd){d4.useProgram(dM);a5("model2d",dM,"model",false,eb.array());a5("view2d",dM,"view",false,d8.array());dY("color2d",dM,"color",cZ);dV("picktype2d",dM,"picktype",0);db("vertex2d",dM,"Vertex",3,di);cf("aTextureCoord2d",dM,"aTextureCoord");d4.drawArrays(d4.LINES,0,bE.length/3)}};var cC=function(){var d8;cE=[];for(d8=0;d80){var d9=new aM;d9.set(d8);var d7=new aM;d7.set(ea);d9.mult(d7);var ec=new aM;ec.set(d9);ec.invert();ec.transpose();a5("normalTransform3d",du,"normalTransform",false,ec.array());db("normal3d",du,"Normal",3,bc)}else{cf("normal3d",du,"Normal")}d4.useProgram(du);cf("aTexture3d",du,"aTexture");a5("model3d",du,"model",false,ea.array());a5("view3d",du,"view",false,d8.array());db("vertex3d",du,"Vertex",3,bc);cf("aColor3d",du,"aColor");d4.enable(d4.POLYGON_OFFSET_FILL);d4.polygonOffset(1,1);dY("color3d",du,"color",bl);d4.drawArrays(d4.TRIANGLE_STRIP,0,cE.length/3);d4.disable(d4.POLYGON_OFFSET_FILL)}if(dS>0&&cd){d4.useProgram(dM);a5("model2d",dM,"model",false,ea.array());a5("view2d",dM,"view",false,d8.array());db("vertex2d",dM,"Vertex",3,bc);cf("aTextureCoord2d",dM,"aTextureCoord");dY("color2d",dM,"color",cZ);dV("picktype2d",dM,"picktype",0);d4.drawArrays(d4.LINE_STRIP,0,cE.length/3)}};cV.modelX=function(ed,ec,eb){var ef=dF.array();var eh=cg.array();var d7=ef[0]*ed+ef[1]*ec+ef[2]*eb+ef[3];var eg=ef[4]*ed+ef[5]*ec+ef[6]*eb+ef[7];var ee=ef[8]*ed+ef[9]*ec+ef[10]*eb+ef[11];var d8=ef[12]*ed+ef[13]*ec+ef[14]*eb+ef[15];var d9=eh[0]*d7+eh[1]*eg+eh[2]*ee+eh[3]*d8;var ea=eh[12]*d7+eh[13]*eg+eh[14]*ee+eh[15]*d8;return ea!==0?d9/ea:d9};cV.modelY=function(ed,ec,eb){var ef=dF.array();var eh=cg.array();var d7=ef[0]*ed+ef[1]*ec+ef[2]*eb+ef[3];var eg=ef[4]*ed+ef[5]*ec+ef[6]*eb+ef[7];var ee=ef[8]*ed+ef[9]*ec+ef[10]*eb+ef[11];var d8=ef[12]*ed+ef[13]*ec+ef[14]*eb+ef[15];var d9=eh[4]*d7+eh[5]*eg+eh[6]*ee+eh[7]*d8;var ea=eh[12]*d7+eh[13]*eg+eh[14]*ee+eh[15]*d8;return ea!==0?d9/ea:d9};cV.modelZ=function(ed,ec,eb){var ef=dF.array();var eh=cg.array();var d7=ef[0]*ed+ef[1]*ec+ef[2]*eb+ef[3];var eg=ef[4]*ed+ef[5]*ec+ef[6]*eb+ef[7];var ee=ef[8]*ed+ef[9]*ec+ef[10]*eb+ef[11];var d9=ef[12]*ed+ef[13]*ec+ef[14]*eb+ef[15];var d8=eh[8]*d7+eh[9]*eg+eh[10]*ee+eh[11]*d9;var ea=eh[12]*d7+eh[13]*eg+eh[14]*ee+eh[15]*d9;return ea!==0?d8/ea:d8};bO.prototype.ambient=dp.prototype.a3DOnlyFunction;by.prototype.ambient=function(ea,d9,d8){d4.useProgram(du);dV("usingMat3d",du,"usingMat",true);var d7=cV.color(ea,d9,d8);dY("mat_ambient3d",du,"mat_ambient",cV.color.toGLArray(d7).slice(0,3))};bO.prototype.emissive=dp.prototype.a3DOnlyFunction;by.prototype.emissive=function(ea,d9,d8){d4.useProgram(du);dV("usingMat3d",du,"usingMat",true);var d7=cV.color(ea,d9,d8);dY("mat_emissive3d",du,"mat_emissive",cV.color.toGLArray(d7).slice(0,3))};bO.prototype.shininess=dp.prototype.a3DOnlyFunction;by.prototype.shininess=function(d7){d4.useProgram(du);dV("usingMat3d",du,"usingMat",true);dY("shininess3d",du,"shininess",d7)};bO.prototype.specular=dp.prototype.a3DOnlyFunction;by.prototype.specular=function(ea,d9,d8){d4.useProgram(du);dV("usingMat3d",du,"usingMat",true);var d7=cV.color(ea,d9,d8);dY("mat_specular3d",du,"mat_specular",cV.color.toGLArray(d7).slice(0,3))};cV.screenX=function(ee,ed,ec){var eg=dF.array();if(eg.length===16){var d7=eg[0]*ee+eg[1]*ed+eg[2]*ec+eg[3];var eh=eg[4]*ee+eg[5]*ed+eg[6]*ec+eg[7];var ef=eg[8]*ee+eg[9]*ed+eg[10]*ec+eg[11];var d8=eg[12]*ee+eg[13]*ed+eg[14]*ec+eg[15];var eb=da.array();var d9=eb[0]*d7+eb[1]*eh+eb[2]*ef+eb[3]*d8;var ea=eb[12]*d7+eb[13]*eh+eb[14]*ef+eb[15]*d8;if(ea!==0){d9/=ea}return cV.width*(1+d9)/2}return dF.multX(ee,ed)};cV.screenY=function az(ee,ed,ec){var eg=dF.array();if(eg.length===16){var d7=eg[0]*ee+eg[1]*ed+eg[2]*ec+eg[3];var eh=eg[4]*ee+eg[5]*ed+eg[6]*ec+eg[7];var ef=eg[8]*ee+eg[9]*ed+eg[10]*ec+eg[11];var d8=eg[12]*ee+eg[13]*ed+eg[14]*ec+eg[15];var eb=da.array();var d9=eb[4]*d7+eb[5]*eh+eb[6]*ef+eb[7]*d8;var ea=eb[12]*d7+eb[13]*eh+eb[14]*ef+eb[15]*d8;if(ea!==0){d9/=ea}return cV.height*(1+d9)/2}return dF.multY(ee,ed)};cV.screenZ=function ax(ee,ed,ec){var eg=dF.array();if(eg.length!==16){return 0}var eb=da.array();var d7=eg[0]*ee+eg[1]*ed+eg[2]*ec+eg[3];var eh=eg[4]*ee+eg[5]*ed+eg[6]*ec+eg[7];var ef=eg[8]*ee+eg[9]*ed+eg[10]*ec+eg[11];var d9=eg[12]*ee+eg[13]*ed+eg[14]*ec+eg[15];var d8=eb[8]*d7+eb[9]*eh+eb[10]*ef+eb[11]*d9;var ea=eb[12]*d7+eb[13]*eh+eb[14]*ef+eb[15]*d9;if(ea!==0){d8/=ea}return(d8+1)/2};dp.prototype.fill=function(){var d7=cV.color(arguments[0],arguments[1],arguments[2],arguments[3]);if(d7===aX&&aF){return}aF=true;aX=d7};bO.prototype.fill=function(){dp.prototype.fill.apply(this,arguments);ap=true};by.prototype.fill=function(){dp.prototype.fill.apply(this,arguments);bl=cV.color.toGLArray(aX)};function bk(){if(aF){if(ap){d4.fillStyle=cV.color.toString(aX);ap=false}d4.fill()}}cV.noFill=function(){aF=false};dp.prototype.stroke=function(){var d7=cV.color(arguments[0],arguments[1],arguments[2],arguments[3]);if(d7===cu&&cd){return}cd=true;cu=d7};bO.prototype.stroke=function(){dp.prototype.stroke.apply(this,arguments);b2=true};by.prototype.stroke=function(){dp.prototype.stroke.apply(this,arguments);cZ=cV.color.toGLArray(cu)};function dc(){if(cd){if(b2){d4.strokeStyle=cV.color.toString(cu);b2=false}d4.stroke()}}cV.noStroke=function(){cd=false};dp.prototype.strokeWeight=function(d7){dS=d7};bO.prototype.strokeWeight=function(d7){dp.prototype.strokeWeight.apply(this,arguments);d4.lineWidth=d7};by.prototype.strokeWeight=function(d7){dp.prototype.strokeWeight.apply(this,arguments);d4.useProgram(dM);dY("pointSize2d",dM,"pointSize",d7);d4.useProgram(bQ);dY("pointSizeUnlitShape",bQ,"pointSize",d7);d4.lineWidth(d7)};cV.strokeCap=function(d7){dU.$ensureContext().lineCap=d7};cV.strokeJoin=function(d7){dU.$ensureContext().lineJoin=d7};bO.prototype.smooth=function(){dK=true;var d7=ac.style;d7.setProperty("image-rendering","optimizeQuality","important");d7.setProperty("-ms-interpolation-mode","bicubic","important");if(d4.hasOwnProperty("mozImageSmoothingEnabled")){d4.mozImageSmoothingEnabled=true}};by.prototype.smooth=E;bO.prototype.noSmooth=function(){dK=false;var d7=ac.style;d7.setProperty("image-rendering","optimizeSpeed","important");d7.setProperty("image-rendering","-moz-crisp-edges","important");d7.setProperty("image-rendering","-webkit-optimize-contrast","important");d7.setProperty("image-rendering","optimize-contrast","important");d7.setProperty("-ms-interpolation-mode","nearest-neighbor","important");if(d4.hasOwnProperty("mozImageSmoothingEnabled")){d4.mozImageSmoothingEnabled=false}};by.prototype.noSmooth=E;bO.prototype.point=function(d7,d8){if(!cd){return}d7=o.round(d7);d8=o.round(d8);d4.fillStyle=cV.color.toString(cu);ap=true;if(dS>1){d4.beginPath();d4.arc(d7,d8,dS/2,0,6.283185307179586,false);d4.fill()}else{d4.fillRect(d7,d8,1,1)}};by.prototype.point=function(d7,eb,ea){var d9=new aM;d9.translate(d7,eb,ea||0);d9.transpose();var d8=new aM;d8.scale(1,-1,1);d8.apply(dF.array());d8.transpose();d4.useProgram(dM);a5("model2d",dM,"model",false,d9.array());a5("view2d",dM,"view",false,d8.array());if(dS>0&&cd){dY("color2d",dM,"color",cZ);dV("picktype2d",dM,"picktype",0);db("vertex2d",dM,"Vertex",3,av);cf("aTextureCoord2d",dM,"aTextureCoord");d4.drawArrays(d4.POINTS,0,1)}};cV.beginShape=function(d7){dN=d7;d2=[];a7=[]};bO.prototype.vertex=function(d7,eb,ea,d9){var d8=[];if(dr){dr=false}d8.isVert=true;d8[0]=d7;d8[1]=eb;d8[2]=0;d8[3]=ea;d8[4]=d9;d8[5]=aX;d8[6]=cu;a7.push(d8)};by.prototype.vertex=function(d7,ec,eb,ea,d9){var d8=[];if(dr){dr=false}d8.isVert=true;if(d9===r&&dP){d9=ea;ea=eb;eb=0}if(ea!==r&&d9!==r){if(d0===2){ea/=cr.width;d9/=cr.height}ea=ea>1?1:ea;ea=ea<0?0:ea;d9=d9>1?1:d9;d9=d9<0?0:d9}d8[0]=d7;d8[1]=ec;d8[2]=eb||0;d8[3]=ea||0;d8[4]=d9||0;d8[5]=bl[0];d8[6]=bl[1];d8[7]=bl[2];d8[8]=bl[3];d8[9]=cZ[0];d8[10]=cZ[1];d8[11]=cZ[2];d8[12]=cZ[3];d8[13]=a4;d8[14]=a3;d8[15]=a2;a7.push(d8)};var dX=function(d9,d8){var d7=new aM;d7.scale(1,-1,1);d7.apply(dF.array());d7.transpose();d4.useProgram(bQ);a5("uViewUS",bQ,"uView",false,d7.array());db("aVertexUS",bQ,"aVertex",3,av);d4.bufferData(d4.ARRAY_BUFFER,new e(d9),d4.STREAM_DRAW);db("aColorUS",bQ,"aColor",4,aE);d4.bufferData(d4.ARRAY_BUFFER,new e(d8),d4.STREAM_DRAW);d4.drawArrays(d4.POINTS,0,d9.length/3)};var bg=function(eb,ea,d9){var d8;if(ea==="LINES"){d8=d4.LINES}else{if(ea==="LINE_LOOP"){d8=d4.LINE_LOOP}else{d8=d4.LINE_STRIP}}var d7=new aM;d7.scale(1,-1,1);d7.apply(dF.array());d7.transpose();d4.useProgram(bQ);a5("uViewUS",bQ,"uView",false,d7.array());db("aVertexUS",bQ,"aVertex",3,b7);d4.bufferData(d4.ARRAY_BUFFER,new e(eb),d4.STREAM_DRAW);db("aColorUS",bQ,"aColor",4,bz);d4.bufferData(d4.ARRAY_BUFFER,new e(d9),d4.STREAM_DRAW);d4.drawArrays(d8,0,eb.length/3)};var dk=function(ec,eb,ea,d9){var d8;if(eb==="TRIANGLES"){d8=d4.TRIANGLES}else{if(eb==="TRIANGLE_FAN"){d8=d4.TRIANGLE_FAN}else{d8=d4.TRIANGLE_STRIP}}var d7=new aM;d7.scale(1,-1,1);d7.apply(dF.array());d7.transpose();d4.useProgram(du);a5("model3d",du,"model",false,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);a5("view3d",du,"view",false,d7.array());d4.enable(d4.POLYGON_OFFSET_FILL);d4.polygonOffset(1,1);dY("color3d",du,"color",[-1,0,0,0]);db("vertex3d",du,"Vertex",3,ar);d4.bufferData(d4.ARRAY_BUFFER,new e(ec),d4.STREAM_DRAW);if(dP&&bb!==null){bt(ea)}db("aColor3d",du,"aColor",4,aE);d4.bufferData(d4.ARRAY_BUFFER,new e(ea),d4.STREAM_DRAW);cf("normal3d",du,"Normal");if(dP){dV("usingTexture3d",du,"usingTexture",dP);db("aTexture3d",du,"aTexture",2,ae);d4.bufferData(d4.ARRAY_BUFFER,new e(d9),d4.STREAM_DRAW)}d4.drawArrays(d8,0,ec.length/3);d4.disable(d4.POLYGON_OFFSET_FILL)};function cR(){bk();dc();d4.closePath()}bO.prototype.endShape=function(ee){if(a7.length===0){return}var ea=ee===2;if(ea){a7.push(a7[0])}var d9=[];var d7=[];var eg=[];var ej=[];var ec=[];var ef;dr=true;var ed,eb,d8;var ei=a7.length;for(ed=0;ed3){var eh=[],ek=1-aH;d4.beginPath();d4.moveTo(a7[1][0],a7[1][1]);for(ed=1;ed+22){d4.beginPath();d4.moveTo(a7[0][0],a7[0][1]);d4.lineTo(a7[1][0],a7[1][1]);d4.lineTo(a7[2][0],a7[2][1]);if(aF){cV.fill(a7[2][5]);bk()}if(cd){cV.stroke(a7[2][6]);dc()}d4.closePath();for(ed=3;ed3){for(ed=0;ed+12){for(ed=0;ed+22){for(ed=0;ed+22){for(ed=0;ed<3;ed++){ef=a7[ed];for(eb=0;eb<3;eb++){d9.push(ef[eb])}}for(ed=0;ed<3;ed++){ef=a7[ed];for(eb=9;eb<13;eb++){ej.push(ef[eb])}}if(cd){bg(d9,"LINE_LOOP",ej)}for(ed=2;ed+13){for(ed=0;ed<2;ed++){ef=a7[ed];for(eb=0;eb<3;eb++){d9.push(ef[eb])}}for(ed=0;ed<2;ed++){ef=a7[ed];for(eb=9;eb<13;eb++){ej.push(ef[eb])}}bg(d9,"LINE_STRIP",ej);if(ei>4&&ei%2>0){eh=d7.splice(d7.length-3);a7.pop()}for(ed=0;ed+33){aq(ca[c1-4][0],ca[c1-4][1],ca[c1-4][2],ca[c1-3][0],ca[c1-3][1],ca[c1-3][2],ca[c1-2][0],ca[c1-2][1],ca[c1-2][2],ca[c1-1][0],ca[c1-1][1],ca[c1-1][2])}};bO.prototype.curve=function(){if(arguments.length===8){cV.beginShape();cV.curveVertex(arguments[0],arguments[1]);cV.curveVertex(arguments[2],arguments[3]);cV.curveVertex(arguments[4],arguments[5]);cV.curveVertex(arguments[6],arguments[7]);cV.endShape()}};by.prototype.curve=function(){if(arguments.length===12){cV.beginShape();cV.curveVertex(arguments[0],arguments[1],arguments[2]);cV.curveVertex(arguments[3],arguments[4],arguments[5]);cV.curveVertex(arguments[6],arguments[7],arguments[8]);cV.curveVertex(arguments[9],arguments[10],arguments[11]);cV.endShape()}};cV.curveTightness=function(d7){aH=d7};cV.curveDetail=function(d7){O=d7;dn()};cV.rectMode=function(d7){bI=d7};cV.imageMode=function(d7){switch(d7){case 0:bh=aV;break;case 1:bh=b0;break;case 3:bh=aL;break;default:throw"Invalid imageMode"}};cV.ellipseMode=function(d7){cM=d7};cV.arc=function(ej,eh,ea,el,d9,ei){if(ea<=0||ei6.283185307179586){d9=0;ei=6.283185307179586}var ek=ea/2;var em=el/2;var ee=ej+ek;var ec=eh+em;var d8=0|-0.5+d9*cV.RAD_TO_DEG*2;var eg=0|0.5+ei*cV.RAD_TO_DEG*2;var ef,ed;if(aF){var eb=cd;cd=false;cV.beginShape();cV.vertex(ee,ec);for(ef=d8;ef<=eg;ef++){ed=ef%720;cV.vertex(ee+bi[ed]*ek,ec+ag[ed]*em)}cV.endShape(2);cd=eb}if(cd){var d7=aF;aF=false;cV.beginShape();for(ef=d8;ef<=eg;ef++){ed=ef%720;cV.vertex(ee+bi[ed]*ek,ec+ag[ed]*em)}cV.endShape();aF=d7}};bO.prototype.line=function(d8,ef,d7,ed){if(!cd){return}d8=o.round(d8);d7=o.round(d7);ef=o.round(ef);ed=o.round(ed);if(d8===d7&&ef===ed){cV.point(d8,ef);return}var d9=r,eg=r,ec=true,ee=dF.array(),ea=[1,0,0,0,1,0];for(var eb=0;eb<6&&ec;eb++){ec=ee[eb]===ea[eb]}if(ec){if(d8===d7){if(ef>ed){d9=ef;ef=ed;ed=d9}ed++;if(dS%2===1){d4.translate(0.5,0)}}else{if(ef===ed){if(d8>d7){d9=d8;d8=d7;d7=d9}d7++;if(dS%2===1){d4.translate(0,0.5)}}}if(dS===1){eg=d4.lineCap;d4.lineCap="butt"}}d4.beginPath();d4.moveTo(d8||0,ef||0);d4.lineTo(d7||0,ed||0);dc();if(ec){if(d8===d7&&dS%2===1){d4.translate(-0.5,0)}else{if(ef===ed&&dS%2===1){d4.translate(0,-0.5)}}if(dS===1){d4.lineCap=eg}}};by.prototype.line=function(d9,ec,ee,d8,ea,ed){if(ea===r||ed===r){ed=0;ea=d8;d8=ee;ee=0}if(d9===d8&&ec===ea&&ee===ed){cV.point(d9,ec,ee);return}var eb=[d9,ec,ee,d8,ea,ed];var d7=new aM;d7.scale(1,-1,1);d7.apply(dF.array());d7.transpose();if(dS>0&&cd){d4.useProgram(dM);a5("model2d",dM,"model",false,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);a5("view2d",dM,"view",false,d7.array());dY("color2d",dM,"color",cZ);dV("picktype2d",dM,"picktype",0);db("vertex2d",dM,"Vertex",3,b7);cf("aTextureCoord2d",dM,"aTextureCoord");d4.bufferData(d4.ARRAY_BUFFER,new e(eb),d4.STREAM_DRAW);d4.drawArrays(d4.LINES,0,2)}};bO.prototype.bezier=function(){if(arguments.length!==8){throw"You must use 8 parameters for bezier() in 2D mode"}cV.beginShape();cV.vertex(arguments[0],arguments[1]);cV.bezierVertex(arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7]);cV.endShape()};by.prototype.bezier=function(){if(arguments.length!==12){throw"You must use 12 parameters for bezier() in 3D mode"}cV.beginShape();cV.vertex(arguments[0],arguments[1],arguments[2]);cV.bezierVertex(arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11]);cV.endShape()};cV.bezierDetail=function(d7){cx=d7};cV.bezierPoint=function(d8,d7,eb,ea,d9){return(1-d9)*(1-d9)*(1-d9)*d8+3*(1-d9)*(1-d9)*d9*d7+3*(1-d9)*d9*d9*eb+d9*d9*d9*ea};cV.bezierTangent=function(d8,d7,eb,ea,d9){return 3*d9*d9*(-d8+3*d7-3*eb+ea)+6*d9*(d8-2*d7+eb)+3*(-d8+d7)};cV.curvePoint=function(d8,d7,eb,ea,d9){return 0.5*(2*d7+(-d8+eb)*d9+(2*d8-5*d7+4*eb-ea)*d9*d9+(-d8+3*d7-3*eb+ea)*d9*d9*d9)};cV.curveTangent=function(d8,d7,eb,ea,d9){return 0.5*(-d8+eb+2*(2*d8-5*d7+4*eb-ea)*d9+3*(-d8+3*d7-3*eb+ea)*d9*d9)};cV.triangle=function(ea,ec,d8,eb,d7,d9){cV.beginShape(9);cV.vertex(ea,ec,0);cV.vertex(d8,eb,0);cV.vertex(d7,d9,0);cV.endShape()};cV.quad=function(ec,ee,ea,ed,d8,eb,d7,d9){cV.beginShape(16);cV.vertex(ec,ee,0);cV.vertex(ea,ed,0);cV.vertex(d8,eb,0);cV.vertex(d7,d9,0);cV.endShape()};var bL=function(ed,ec,d7,ee,eg,eb,ef,d8){if(d8===r){eb=eg;ef=eg;d8=eg}var d9=d7/2,ea=ee/2;if(eg>d9||eg>ea){eg=o.min(d9,ea)}if(eb>d9||eb>ea){eb=o.min(d9,ea)}if(ef>d9||ef>ea){ef=o.min(d9,ea)}if(d8>d9||d8>ea){d8=o.min(d9,ea)}if(!aF||cd){d4.translate(0.5,0.5)}d4.beginPath();d4.moveTo(ed+eg,ec);d4.lineTo(ed+d7-eb,ec);d4.quadraticCurveTo(ed+d7,ec,ed+d7,ec+eb);d4.lineTo(ed+d7,ec+ee-ef);d4.quadraticCurveTo(ed+d7,ec+ee,ed+d7-ef,ec+ee);d4.lineTo(ed+d8,ec+ee);d4.quadraticCurveTo(ed,ec+ee,ed,ec+ee-d8);d4.lineTo(ed,ec+eg);d4.quadraticCurveTo(ed,ec,ed+eg,ec);if(!aF||cd){d4.translate(-0.5,-0.5)}bk();dc()};bO.prototype.rect=function(d8,ee,eb,d7,d9,ec,ea,ed){if(!eb&&!d7){return}if(bI===1){eb-=d8;d7-=ee}else{if(bI===2){eb*=2;d7*=2;d8-=eb/2;ee-=d7/2}else{if(bI===3){d8-=eb/2;ee-=d7/2}}}d8=o.round(d8);ee=o.round(ee);eb=o.round(eb);d7=o.round(d7);if(d9!==r){bL(d8,ee,eb,d7,d9,ec,ea,ed);return}if(cd&&dS%2===1){d4.translate(0.5,0.5)}d4.beginPath();d4.rect(d8,ee,eb,d7);bk();dc();if(cd&&dS%2===1){d4.translate(-0.5,-0.5)}};by.prototype.rect=function(ef,ee,d7,eh,ej,ec,ei,d8){if(ej!==r){throw"rect() with rounded corners is not supported in 3D mode"}if(bI===1){d7-=ef;eh-=ee}else{if(bI===2){d7*=2;eh*=2;ef-=d7/2;ee-=eh/2}else{if(bI===3){ef-=d7/2;ee-=eh/2}}}var eb=new aM;eb.translate(ef,ee,0);eb.scale(d7,eh,1);eb.transpose();var ed=new aM;ed.scale(1,-1,1);ed.apply(dF.array());ed.transpose();if(dS>0&&cd){d4.useProgram(dM);a5("model2d",dM,"model",false,eb.array());a5("view2d",dM,"view",false,ed.array());dY("color2d",dM,"color",cZ);dV("picktype2d",dM,"picktype",0);db("vertex2d",dM,"Vertex",3,aA);cf("aTextureCoord2d",dM,"aTextureCoord");d4.drawArrays(d4.LINE_LOOP,0,aj.length/3)}if(aF){d4.useProgram(du);a5("model3d",du,"model",false,eb.array());a5("view3d",du,"view",false,ed.array());d4.enable(d4.POLYGON_OFFSET_FILL);d4.polygonOffset(1,1);dY("color3d",du,"color",bl);if(dH>0){var eg=new aM;eg.set(ed);var d9=new aM;d9.set(eb);eg.mult(d9);var ea=new aM;ea.set(eg);ea.invert();ea.transpose();a5("normalTransform3d",du,"normalTransform",false,ea.array());db("normal3d",du,"Normal",3,b1)}else{cf("normal3d",du,"Normal")}db("vertex3d",du,"Vertex",3,aA);d4.drawArrays(d4.TRIANGLE_FAN,0,aj.length/3);d4.disable(d4.POLYGON_OFFSET_FILL)}};bO.prototype.ellipse=function(ed,ec,d8,ef){ed=ed||0;ec=ec||0;if(d8<=0&&ef<=0){return}if(cM===2){d8*=2;ef*=2}else{if(cM===1){d8=d8-ed;ef=ef-ec;ed+=d8/2;ec+=ef/2}else{if(cM===0){ed+=d8/2;ec+=ef/2}}}if(d8===ef){d4.beginPath();d4.arc(ed,ec,d8/2,0,6.283185307179586,false);bk();dc()}else{var ee=d8/2,eb=ef/2,d7=0.5522847498307933,ea=d7*ee,d9=d7*eb;cV.beginShape();cV.vertex(ed+ee,ec);cV.bezierVertex(ed+ee,ec-d9,ed+ea,ec-eb,ed,ec-eb);cV.bezierVertex(ed-ea,ec-eb,ed-ee,ec-d9,ed-ee,ec);cV.bezierVertex(ed-ee,ec+d9,ed-ea,ec+eb,ed,ec+eb);cV.bezierVertex(ed+ea,ec+eb,ed+ee,ec+d9,ed+ee,ec);cV.endShape()}};by.prototype.ellipse=function(ek,ej,d9,em){ek=ek||0;ej=ej||0;if(d9<=0&&em<=0){return}if(cM===2){d9*=2;em*=2}else{if(cM===1){d9=d9-ek;em=em-ej;ek+=d9/2;ej+=em/2}else{if(cM===0){ek+=d9/2;ej+=em/2}}}var el=d9/2,eg=em/2,d7=0.5522847498307933,eb=d7*el,ea=d7*eg;cV.beginShape();cV.vertex(ek+el,ej);cV.bezierVertex(ek+el,ej-ea,0,ek+eb,ej-eg,0,ek,ej-eg,0);cV.bezierVertex(ek-eb,ej-eg,0,ek-el,ej-ea,0,ek-el,ej,0);cV.bezierVertex(ek-el,ej+ea,0,ek-eb,ej+eg,0,ek,ej+eg,0);cV.bezierVertex(ek+eb,ej+eg,0,ek+el,ej+ea,0,ek+el,ej,0);cV.endShape();if(aF){var ec=0,eh=0,ee,ed;for(ee=0;ee>16)&255;ea[eb+1]=(ec>>8)&255;ea[eb+2]=ec&255;ea[eb+3]=(ec>>24)&255;d8.__isDirty=true}}(d7),toArray:function(d8){return function(){var d9=[],ec=d8.imageData.data,eb=d8.width*d8.height;if(d8.isRemote){throw"Image is loaded remotely. Cannot get pixels."}for(var ea=0,ed=0;ea>16)&255;ec[ed+1]=(ee>>8)&255;ec[ed+2]=ee&255;ec[ed+3]=(ee>>24)&255}d8.__isDirty=true}}(d7)}}var cF=function(ea,ed,eb){this.__isDirty=false;if(ea instanceof HTMLImageElement){this.fromHTMLImageData(ea)}else{if(ed||eb){this.width=ea||1;this.height=ed||1;var d8=this.sourceImg=d.createElement("canvas");d8.width=this.width;d8.height=this.height;var ee=this.imageData=d8.getContext("2d").createImageData(this.width,this.height);this.format=eb===2||eb===4?eb:1;if(this.format===1){for(var d9=3,ec=this.imageData.data,d7=ec.length;d9=cV.width||d7<0||ea<0||ea>=cV.height){return 0}if(dR){var d9=((0|d7)+cV.width*(0|ea))*4;d8=cV.imageData.data;return(d8[d9+3]&255)<<24|(d8[d9]&255)<<16|(d8[d9+1]&255)<<8|d8[d9+2]&255}d8=cV.toImageData(0|d7,0|ea,1,1).data;return(d8[3]&255)<<24|(d8[0]&255)<<16|(d8[1]&255)<<8|d8[2]&255}function c7(d7,eb,d8){if(d8.isRemote){throw"Image is loaded remotely. Cannot get x,y."}var ea=eb*d8.width*4+d7*4,d9=d8.imageData.data;return(d9[ea+3]&255)<<24|(d9[ea]&255)<<16|(d9[ea+1]&255)<<8|d9[ea+2]&255}function c5(d7,eb,d8,d9){var ea=new cF(d8,d9,2);ea.fromImageData(cV.toImageData(d7,eb,d8,d9));return ea}function c4(ec,eb,ed,ei,eo){if(eo.isRemote){throw"Image is loaded remotely. Cannot get x,y,w,h."}var em=new cF(ed,ei,2),d9=em.imageData.data,ea=eo.width,ej=eo.height,el=eo.imageData.data;var d7=o.max(0,-eb),d8=o.max(0,-ec),ee=o.min(ei,ej-eb),ef=o.min(ed,ea-ec);for(var eh=d7;eh=0&&d9>=0&&d9bY){R()}}}function bs(d7,ed,ea,d8){if(d8.isRemote){throw"Image is loaded remotely. Cannot set x,y."}var ec=cV.color.toArray(ea);var eb=ed*d8.width*4+d7*4;var d9=d8.imageData.data;d9[eb]=ec[0];d9[eb+1]=ec[1];d9[eb+2]=ec[2];d9[eb+3]=ec[3]}cV.set=function(d7,ec,ea,d9){var d8,eb;if(arguments.length===3){if(typeof ea==="number"){bu(d7,ec,ea)}else{if(ea instanceof cF||ea.__isPImage){cV.image(ea,d7,ec)}}}else{if(arguments.length===4){bs(d7,ec,ea,d9)}}};cV.imageData={};cV.pixels={getLength:function(){return cV.imageData.data.length?cV.imageData.data.length/4:0},getPixel:function(d7){var d9=d7*4,d8=cV.imageData.data;return d8[d9+3]<<24&4278190080|d8[d9+0]<<16&16711680|d8[d9+1]<<8&65280|d8[d9+2]&255},setPixel:function(d7,ea){var d9=d7*4,d8=cV.imageData.data;d8[d9+0]=(ea&16711680)>>>16;d8[d9+1]=(ea&65280)>>>8;d8[d9+2]=ea&255;d8[d9+3]=(ea&4278190080)>>>24},toArray:function(){var d7=[],d9=cV.imageData.width*cV.imageData.height,ea=cV.imageData.data;for(var d8=0,eb=0;d80){bB(ea,d9,d8,d7)}var eb=cV.color.toGLArray(a0);d4.clearColor(eb[0],eb[1],eb[2],eb[3]);d4.clear(d4.COLOR_BUFFER_BIT|d4.DEPTH_BUFFER_BIT)};bO.prototype.image=function(ea,ef,ed,eg,eb){ef=o.round(ef);ed=o.round(ed);if(ea.width>0){var eh=eg||ea.width;var ee=eb||ea.height;var d7=bh(ef||0,ed||0,eg||ea.width,eb||ea.height,arguments.length<4);var ec=!!ea.sourceImg&&bb===null;if(ec){var d8=ea.sourceImg;if(ea.__isDirty){ea.updatePixels()}d4.drawImage(d8,0,0,d8.width,d8.height,d7.x,d7.y,d7.w,d7.h)}else{var d9=ea.toImageData();if(bb!==null){bb(d9);ea.__isDirty=true}d4.drawImage(bv(d9).canvas,0,0,ea.width,ea.height,d7.x,d7.y,d7.w,d7.h)}}};by.prototype.image=function(d9,d7,eb,d8,ea){if(d9.width>0){d7=o.round(d7);eb=o.round(eb);d8=d8||d9.width;ea=ea||d9.height;cV.beginShape(cV.QUADS);cV.texture(d9);cV.vertex(d7,eb,0,0,0);cV.vertex(d7,eb+ea,0,0,ea);cV.vertex(d7+d8,eb+ea,0,d8,ea);cV.vertex(d7+d8,eb,0,d8,0);cV.endShape()}};cV.tint=function(ea,d9,d7,ef){var ec=cV.color(ea,d9,d7,ef);var d8=cV.red(ec)/bG;var eb=cV.green(ec)/bF;var ed=cV.blue(ec)/bD;var ee=cV.alpha(ec)/bR;bb=function(ej){var ei=ej.data,eh=4*ej.width*ej.height;for(var eg=0;eg=d7){break}em=0}for(eu=em;eu=d7){break}eb=(es+ey)*4;ep=ed[eu];eo+=ep*ea[eb+3];ec+=ep*ea[eb];ei+=ep*ea[eb+1];en+=ep*ea[eb+2];d9+=ep;es++}ek=ey+eh;ez[ek]=eo/d9;er[ek]=ec/d9;eA[ek]=ei/d9;ee[ek]=en/d9}ey+=d7}ey=0;ew=-ej;ev=ew*d7;for(eg=0;eg=d8){break}em=0;ek=ew;es=eh+ev}for(eu=em;eu=d8){break}ep=ed[eu];eo+=ep*ez[es];ec+=ep*er[es];ei+=ep*eA[es];en+=ep*ee[es];d9+=ep;ek++;es+=d7}eb=(eh+ey)*4;ea[eb]=ec/d9;ea[eb+1]=ei/d9;ea[eb+2]=en/d9;ea[eb+3]=eo/d9}ey+=d7;ev+=d7;ew++}};var ce=function(eo,ei){var ee=0;var es=ei.pixels.getLength();var ej=new I(es);var em,d8,eh,eg,ea;var en,eb,ed,ef,d9,ek,er,d7,ep,ec,eq,el;if(!eo){while(ee=d8){en=ee}if(ed<0){ed=0}if(ef>=es){ef=ee}er=ei.pixels.getPixel(ed);ek=ei.pixels.getPixel(eb);d7=ei.pixels.getPixel(ef);d9=ei.pixels.getPixel(en);ea=77*(eh>>16&255)+151*(eh>>8&255)+28*(eh&255);ec=77*(ek>>16&255)+151*(ek>>8&255)+28*(ek&255);ep=77*(d9>>16&255)+151*(d9>>8&255)+28*(d9&255);eq=77*(er>>16&255)+151*(er>>8&255)+28*(er&255);el=77*(d7>>16&255)+151*(d7>>8&255)+28*(d7&255);if(ec>ea){eg=ek;ea=ec}if(ep>ea){eg=d9;ea=ep}if(eq>ea){eg=er;ea=eq}if(el>ea){eg=d7;ea=el}ej[ee++]=eg}}}else{while(ee=d8){en=ee}if(ed<0){ed=0}if(ef>=es){ef=ee}er=ei.pixels.getPixel(ed);ek=ei.pixels.getPixel(eb);d7=ei.pixels.getPixel(ef);d9=ei.pixels.getPixel(en);ea=77*(eh>>16&255)+151*(eh>>8&255)+28*(eh&255);ec=77*(ek>>16&255)+151*(ek>>8&255)+28*(ek&255);ep=77*(d9>>16&255)+151*(d9>>8&255)+28*(d9&255);eq=77*(er>>16&255)+151*(er>>8&255)+28*(er&255);el=77*(d7>>16&255)+151*(d7>>8&255)+28*(d7&255);if(ec>16&255)+151*(ec>>8&255)+28*(ec&255)>>8;eh.pixels.setPixel(eg,ec&4278190080|d8<<16|d8<<8|d8)}}break;case 13:for(eg=0;eg255){throw"Levels must be between 2 and 255 for filter(POSTERIZE, levels)"}var ef=em-1;for(eg=0;eg>16&255;var ek=eh.pixels.getPixel(eg)>>8&255;var d9=eh.pixels.getPixel(eg)&255;d7=(d7*em>>8)*255/ef;ek=(ek*em>>8)*255/ef;d9=(d9*em>>8)*255/ef;eh.pixels.setPixel(eg,4278190080&eh.pixels.getPixel(eg)|d7<<16|ek<<8|d9)}break;case 14:for(eg=0;eg1){throw"Level must be between 0 and 1 for filter(THRESHOLD, level)"}var eb=cV.floor(ed*255);for(eg=0;eg>16,cV.max((eh.pixels.getPixel(eg)&65280)>>8,eh.pixels.getPixel(eg)&255));eh.pixels.setPixel(eg,eh.pixels.getPixel(eg)&4278190080|(elei){d7=ei}}else{var eh=ei+d9-ek;if(d7>eh){d7=eh}}if(edeb){ee=eb}}else{var ea=eb+eg-ed;if(ee>ea){ee=ea}}return !(d7<=0||ee<=0)};var dO={};dO[1]=cV.modes.blend;dO[2]=cV.modes.add;dO[4]=cV.modes.subtract;dO[8]=cV.modes.lightest;dO[16]=cV.modes.darkest;dO[0]=cV.modes.replace;dO[32]=cV.modes.difference;dO[64]=cV.modes.exclusion;dO[128]=cV.modes.multiply;dO[256]=cV.modes.screen;dO[512]=cV.modes.overlay;dO[1024]=cV.modes.hard_light;dO[2048]=cV.modes.soft_light;dO[4096]=cV.modes.dodge;dO[8192]=cV.modes.burn;cV.blit_resize=function(ek,ew,eq,ev,ep,eB,eg,eo,eu,el,et,ej,em){var ez,ey;if(ew<0){ew=0}if(eq<0){eq=0}if(ev>=ek.width){ev=ek.width-1}if(ep>=ek.height){ep=ek.height-1}var eF=ev-ew;var eK=ep-eq;var d7=et-eu;var eh=ej-el;if(d7<=0||eh<=0||eF<=0||eK<=0||eu>=eg||el>=eo||ew>=ek.width||eq>=ek.height){return}var ee=o.floor(eF/d7*32768);var eb=o.floor(eK/eh*32768);var eD=cV.shared;eD.srcXOffset=o.floor(eu<0?-eu*ee:ew*32768);eD.srcYOffset=o.floor(el<0?-el*eb:eq*32768);if(eu<0){d7+=eu;eu=0}if(el<0){eh+=el;el=0}d7=o.min(d7,eg-eu);eh=o.min(eh,eo-el);var er=el*eg+eu;var eN;eD.srcBuffer=ek.imageData.data;eD.iw=ek.width;eD.iw1=ek.width-1;eD.ih1=ek.height-1;var es=cV.filter_bilinear,eH=cV.filter_new_scanline,ef=dO[em],eE,eJ,eC,eG,d9,ea,d8=4278190080,eI=16711680,ex=65280,ed=255,eM=32767,eA=15,ei=1,en=9,ec=eD.srcBuffer,eL=o.min;for(ey=0;ey>eA)*eD.iw;eD.v2=eL((eD.srcYOffset>>eA)+1,eD.ih1)*eD.iw;for(ez=0;ez>eA;eD.ll=eD.ifU*eD.fracV>>eA;eD.ur=eD.fracU*eD.ifV>>eA;eD.lr=eD.fracU*eD.fracV>>eA;eD.u1=eD.sX>>eA;eD.u2=eL(eD.u1+1,eD.iw1);eC=(eD.v1+eD.u1)*4;eG=(eD.v1+eD.u2)*4;d9=(eD.v2+eD.u1)*4;ea=(eD.v2+eD.u2)*4;eD.cUL=ec[eC+3]<<24&d8|ec[eC]<<16&eI|ec[eC+1]<<8&ex|ec[eC+2]&ed;eD.cUR=ec[eG+3]<<24&d8|ec[eG]<<16&eI|ec[eG+1]<<8&ex|ec[eG+2]&ed;eD.cLL=ec[d9+3]<<24&d8|ec[d9]<<16&eI|ec[d9+1]<<8&ex|ec[d9+2]&ed;eD.cLR=ec[ea+3]<<24&d8|ec[ea]<<16&eI|ec[ea+1]<<8&ex|ec[ea+2]&ed;eD.r=eD.ul*((eD.cUL&eI)>>16)+eD.ll*((eD.cLL&eI)>>16)+eD.ur*((eD.cUR&eI)>>16)+eD.lr*((eD.cLR&eI)>>16)<>>eA&ex;eD.b=eD.ul*(eD.cUL&ed)+eD.ll*(eD.cLL&ed)+eD.ur*(eD.cUR&ed)+eD.lr*(eD.cLR&ed)>>>eA;eD.a=eD.ul*((eD.cUL&d8)>>>24)+eD.ll*((eD.cLL&d8)>>>24)+eD.ur*((eD.cUR&d8)>>>24)+eD.lr*((eD.cLR&d8)>>>24)<>>16;eB[eJ+1]=(eE&ex)>>>8;eB[eJ+2]=eE&ed;eB[eJ+3]=(eE&d8)>>>24;eD.sX+=ee}er+=eg;eD.srcYOffset+=eb}};cV.loadFont=function(d8,d9){if(d8===r){throw"font name required in loadFont."}if(d8.indexOf(".svg")===-1){if(d9===r){d9=U.size}return F.get(d8,d9)}var d7=cV.loadGlyphs(d8);return{name:d8,css:"12px sans-serif",glyph:true,units_per_em:d7.units_per_em,horiz_adv_x:1/d7.units_per_em*d7.horiz_adv_x,ascent:d7.ascent,descent:d7.descent,width:function(ee){var ec=0;var ea=ee.length;for(var eb=0;eb":return d7.greater;case"?":return d7.question;case"@":return d7.at;case"[":return d7.bracketleft;case"\\":return d7.backslash;case"]":return d7.bracketright;case"^":return d7.asciicircum;case"`":return d7.grave;case"{":return d7.braceleft;case"|":return d7.bar;case"}":return d7.braceright;case"~":return d7.asciitilde;default:return d7[d8]}}catch(d9){D.debug(d9)}};bO.prototype.text$line=function(ef,ei,eh,eg,ec){var ee=0,ed=0;if(!U.glyph){if(ef&&"fillText" in d4){if(ap){d4.fillStyle=cV.color.toString(aX);ap=false}if(ec===39||ec===3){ee=U.measureTextWidth(ef);if(ec===39){ed=-ee}else{ed=-ee/2}}d4.fillText(ef,ei+ed,eh)}}else{var d7=cV.glyphTable[W];aC();d4.translate(ei,eh+dW);if(ec===39||ec===3){ee=d7.width(ef);if(ec===39){ed=-ee}else{ed=-ee/2}}var ej=d7.units_per_em,eb=1/ej*dW;d4.scale(eb,eb);for(var d8=0,d9=ef.length;d8ek){return}var ej=-1;var eb=0;var d7=0;var ed=[];for(var ec=0,ep=en.length;ec0){ej=ec}else{return}}if(ee==="\n"){ed.push({text:en.substring(eb,ec),width:d7});eb=ec+1}else{ed.push({text:en.substring(eb,ej+1),width:d7});eb=ej+1}d7=0;ec=eb-1}}if(ebek-dx){break}ea=ed[d9];dU.text$line(ea.text,ei+er,eh+ef+eq,eg,L)}}cV.text=function(){if(cH===5){return}if(arguments.length===3){be(br(arguments[0]),arguments[1],arguments[2],0)}else{if(arguments.length===4){be(br(arguments[0]),arguments[1],arguments[2],arguments[3])}else{if(arguments.length===5){a9(br(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],0)}else{if(arguments.length===6){a9(br(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])}}}}};cV.textMode=function(d7){cH=d7};cV.loadGlyphs=function(ed){var ef,ee,eb,d9,em,el,ek,en,eh,eo,ei,ej="[0-9\\-]+",eg;var ec=function(eu,et){var er=0,eq=[],ep,es=new RegExp(eu,"g");ep=eq[er]=es.exec(et);while(ep){er++;ep=eq[er]=es.exec(et)}return eq};var d8=function(eu){var ev=ec("[A-Za-z][0-9\\- ]+|Z",eu);var et=function(){aC();return dU.$ensureContext()};var er=function(){bk();dc();cO()};eg="return {draw:function(){var curContext=beforePathDraw();curContext.beginPath();";ef=0;ee=0;eb=0;d9=0;em=0;el=0;eu=0;en=0;eh="";eo=ev.length-1;for(var eq=0;eq([=]?)/g,Y)}while(X);var bi=aC(ay);var aj;var aH={},a7,ax=0;function ba(bp,bo){var bq=bi.length;bi.push(bp);return'"'+bo+bq+'"'}function a5(){return"class"+ ++ax}function bj(bp,bq,bo){bp.classId=bq;bp.scopeId=bo;aH[bq]=bp}var T,Q,an,aT,bg,aX;var M=/\b((?:(?:public|private|final|protected|static|abstract)\s+)*)(class|interface)\s+([A-Za-z_$][\w$]*\b)(\s+extends\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?(\s+implements\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?\s*("A\d+")/g;var a9=/\b((?:(?:public|private|final|protected|static|abstract|synchronized)\s+)*)((?!(?:else|new|return|throw|function|public|private|protected)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+"|;)/g;var aK=/^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:else|new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*(?:"C\d+"\s*)*([=,]|$)/;var bk=/\b((?:(?:public|private|final|protected|static|abstract)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+")/g;var U=/^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*/;var ar=/\bfunction(?:\s+([A-Za-z_$][\w$]*))?\s*("B\d+")\s*("A\d+")/g;function ac(bp){var bo=bp;bo=bo.replace(M,function(bq){return ba(bq,"E")});bo=bo.replace(a9,function(bq){return ba(bq,"D")});bo=bo.replace(ar,function(bq){return ba(bq,"H")});return bo}function bb(bq,bp){var bo=bq.replace(bk,function(bv,bs,bt,bw,bu,br){if(bt!==bp){return bv}return ba(bv,"G")});return bo}function aF(bo){this.name=bo}aF.prototype.toString=function(){return this.name};function am(bo){this.params=bo}am.prototype.getNames=function(){var bq=[];for(var bp=0,bo=this.params.length;bp1){if(!/^\[\s*\]$/.test(bi[bt[1]])){return bw}}return""+bv});br=br.replace(/\(int\)([^,\]\)\}\?\:\*\+\-\/\^\|\%\&\~<\>\=]+)/g,function(bu,bt){var bv=aN(bt);return bv.untrim("__int_cast("+bv.middle+")")});br=br.replace(/\bsuper(\s*"B\d+")/g,"$$superCstr$1").replace(/\bsuper(\s*\.)/g,"$$super$1");br=br.replace(/\b0+((\d*)(?:\.[\d*])?(?:[eE][\-\+]?\d+)?[fF]?)\b/,function(bv,bu,bt){if(bu===bt){return bv}return bt===""?"0"+bu:bu});br=br.replace(/\b(\.?\d+\.?)[fF]\b/g,"$1");br=br.replace(/([^\s])%([^=\s])/g,"$1 % $2");br=br.replace(/\b(frameRate|keyPressed|mousePressed)\b(?!\s*"B)/g,"__$1");br=br.replace(/\b(boolean|byte|char|float|int)\s*"B/g,function(bu,bt){return"parse"+bt.substring(0,1).toUpperCase()+bt.substring(1)+'"B'});br=br.replace(/\bpixels\b\s*(("C(\d+)")|\.length)?(\s*=(?!=)([^,\]\)\}]+))?/g,function(bu,by,bt,bx,bw,bz){if(bt){var bv=bi[bx];if(bw){return"pixels.setPixel"+ba("("+bv.substring(1,bv.length-1)+","+bz+")","B")}return"pixels.getPixel"+ba("("+bv.substring(1,bv.length-1)+")","B")}if(by){return"pixels.getLength"+ba("()","B")}if(bw){return"pixels.set"+ba("("+bz+")","B")}return"pixels.toArray"+ba("()","B")});var bq;function bp(bu,bt,by,bw){var bv=bi[bw];bq=true;var bx=aN(bv.substring(1,bv.length-1));return"__"+by+(bx.middle===""?ba("("+bt.replace(/\.\s*$/,"")+")","B"):ba("("+bt.replace(/\.\s*$/,"")+","+bx.middle+")","B"))}do{bq=false;br=br.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*\.\s*(?:[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*\.\s*)*)(replace|replaceAll|replaceFirst|contains|equals|equalsIgnoreCase|hashCode|toCharArray|printStackTrace|split|startsWith|endsWith|codePointAt)\s*"B(\d+)"/g,bp)}while(bq);function bo(bv,bt,bu){bq=true;return"__instanceof"+ba("("+bt+", "+bu+")","B")}do{bq=false;br=br.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*(?:\.\s*[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*)*)instanceof\s+([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)/g,bo)}while(bq);br=br.replace(/\bthis(\s*"B\d+")/g,"$$constr$1");return br}function aA(bp,bo){this.baseInterfaceName=bp;this.body=bo;bo.owner=this}aA.prototype.toString=function(){return"new ("+this.body+")"};function ag(bq){var bp=(new RegExp(/\bnew\s*([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)\s*"B\d+"\s*"A(\d+)"/)).exec(bq);var bt=a7,bs=a5();a7=bs;var bo=bp[1]+"$"+bs;var br=new aA(bo,T(bi[bp[2]],bo,"","implements "+bp[1]));bj(br,bs,bt);a7=bt;return br}function ad(bp,bq,bo){this.name=bp;this.params=bq;this.body=bo}ad.prototype.toString=function(){var bp=aj;var bq=at({"this":null},this.params.getNames());aj=function(br){return bq.hasOwnProperty(br.name)?br.name:bp(br)};var bo="function";if(this.name){bo+=" "+this.name}bo+=this.params+" "+this.body;aj=bp;return bo};function aI(bp){var bo=(new RegExp(/\b([A-Za-z_$][\w$]*)\s*"B(\d+)"\s*"A(\d+)"/)).exec(bp);return new ad(bo[1]!=="function"?bo[1]:null,aB(bi[bo[2]]),an(bi[bo[3]]))}function ab(bo){this.members=bo}ab.prototype.toString=function(){var bq=aj;aj=function(bs){return bs.name==="this"?"this":bq(bs)};var bo="";for(var br=0,bp=this.members.length;br=0){bo=bo.substring(0,bo.indexOf("="))}return"("+bo+" in "+this.container+")"};function aW(bp,bo){this.initStatement=bp;this.container=bo}aW.iteratorId=0;aW.prototype.toString=function(){var bs=this.initStatement.toString();var bp="$it"+aW.iteratorId++;var br=bs.replace(/^\s*var\s*/,"").split("=")[0];var bq="var "+bp+" = new $p.ObjectIterator("+this.container+"), "+br+" = void(0)";var bo=bp+".hasNext() && (("+br+" = "+bp+".next()) || true)";return"("+bq+"; "+bo+";)"};function W(bp){var bo;if(/\bin\b/.test(bp)){bo=bp.substring(1,bp.length-1).split(/\bin\b/g);return new aQ(bl(a4(bo[0])),aX(bo[1]))}if(bp.indexOf(":")>=0&&bp.indexOf(";")<0){bo=bp.substring(1,bp.length-1).split(":");return new aW(bl(a4(bo[0])),aX(bo[1]))}bo=bp.substring(1,bp.length-1).split(";");return new aZ(bl(a4(bo[0])),aX(bo[1]),aX(bo[2]))}function a0(bo){bo.sort(function(bq,bp){return bp.weight-bq.weight})}function Z(bq,bo,bp){this.name=bq;this.body=bo;this.isStatic=bp;bo.owner=this}Z.prototype.toString=function(){return""+this.body};function al(bq,bo,bp){this.name=bq;this.body=bo;this.isStatic=bp;bo.owner=this}al.prototype.toString=function(){return""+this.body};function R(bq){var bp=M.exec(bq);M.lastIndex=0;var br=bp[1].indexOf("static")>=0;var bo=bi[aO(bp[6])],bt;var bu=a7,bs=a5();a7=bs;if(bp[2]==="interface"){bt=new Z(bp[3],Q(bo,bp[3],bp[4]),br)}else{bt=new al(bp[3],T(bo,bp[3],bp[4],bp[5]),br)}bj(bt,bs,bu);a7=bu;return bt}function aa(bq,br,bo,bp){this.name=bq;this.params=br;this.body=bo;this.isStatic=bp}aa.prototype.toString=function(){var bq=at({},this.params.getNames());var bp=aj;aj=function(br){return bq.hasOwnProperty(br.name)?br.name:bp(br)};var bo="function "+this.methodId+this.params+" "+this.body+"\n";aj=bp;return bo};function N(br){var bp=a9.exec(br);a9.lastIndex=0;var bq=bp[1].indexOf("static")>=0;var bo=bp[6]!==";"?bi[aO(bp[6])]:"{}";return new aa(bp[3],aB(bi[aO(bp[4])]),an(bo),bq)}function ak(bq,bp,bo){this.definitions=bq;this.fieldType=bp;this.isStatic=bo}ak.prototype.getNames=function(){var bq=[];for(var bp=0,bo=this.definitions.length;bp=0;var br=bt.substring(bs[0].length).split(/,\s*/g);var bp=aR(bs[2]);for(var bq=0;bq0){bv+=this.functions.join("\n")+"\n"}a0(this.innerClasses);for(bI=0,bG=this.innerClasses.length;bI0){bv+=this.cstrs.join("\n")+"\n"}bv+="function $constr() {\n";var bM=[];for(bI=0,bG=this.cstrs.length;bI0){bv+=bM.join(" else ")+" else "}bv+="$superCstr();\n}\n";bv+="$constr.apply(null, arguments);\n";aj=bN;return"(function() {\nfunction "+bq+"() {\n"+bv+"}\n"+bD+bx+"return "+bq+";\n})()"};T=function(bx,bp,bo,bA){var bC=bx.substring(1,bx.length-1);bC=ac(bC);bC=bb(bC,bp);var bq=[],br=[],bB=[],bu=[];bC=bC.replace(/"([DEGH])(\d+)"/g,function(bF,bE,bD){if(bE==="D"){bq.push(bD)}else{if(bE==="E"){br.push(bD)}else{if(bE==="H"){bu.push(bD)}else{bB.push(bD)}}}return""});var bw=bC.replace(/^(?:\s*;)+/,"").split(/;(?:\s*;)*/g);var bv,bt;var bs;if(bo!==r){bv=bo.replace(/^\s*extends\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*$/g,"$1")}if(bA!==r){bt=bA.replace(/^\s*implements\s+(.+?)\s*$/g,"$1").split(/\s*,\s*/g)}for(bs=0;bs0){for(bt=0,br=bu.length;bt0){bw.interfaces=bA}}}}}function a6(bo){var bt=[],bq={};var bp,bw,bu;for(bp in aH){if(aH.hasOwnProperty(bp)){bu=aH[bp];if(!bu.inScope&&!bu.derived){bt.push(bp);bu.weight=0}else{var bv=[];if(bu.inScope){for(bw in bu.inScope){if(bu.inScope.hasOwnProperty(bw)){bv.push(bu.inScope[bw])}}}if(bu.derived){bv=bv.concat(bu.derived)}bq[bp]=bv}}}function bx(bz,bB){var by=bq[bz];if(!by){return false}var bA=by.indexOf(bB);if(bA<0){return false}by.splice(bA,1);if(by.length>0){return false}delete bq[bz];return true}while(bt.length>0){bp=bt.shift();bu=aH[bp];if(bu.scopeId&&bx(bu.scopeId,bu)){bt.push(bu.scopeId);aH[bu.scopeId].weight=bu.weight+1}if(bu.base&&bx(bu.base.classId,bu)){bt.push(bu.base.classId);bu.base.weight=bu.weight+1}if(bu.interfaces){var bs,br;for(bs=0,br=bu.interfaces.length;bsaE){aD=aE-aF}}az.height=aD/aE*100+"%";an()},ax=[ah(am,"mousemove",function(aD){if(aB){ay(ab.innerHeight-aD.clientY);ar.scrollTop=ao}}),ah(am,"mouseup",function(){if(aB){aB=ao=L}}),ah(aA,"dblclick",function(aD){aD.preventDefault();if(at){ay(at);at=L}else{at=ap.clientHeight;az.height="0px"}}),ah(aA,"mousedown",function(aD){aD.preventDefault();aB=Q;ao=ar.scrollTop}),ah(aA,"contextmenu",function(){aB=L}),ah(aq,"click",function(){au()})];au=function(){var aD=ax.length;while(aD--){T.apply(R,ax[aD])}aj.removeChild(ap);S.paddingBottom=av;Y(ar);Y(ap);R[N]=V};U(ap,Z,ar,ac,aA,ag,aq,al);aq[ae]="Close Log";ai(aq,X("\u2716"));aA[ae]="Double-click to toggle log minimization";aj.insertBefore(ap,aj.firstChild);R[N]=function(aF){if(aw===M){ar.removeChild(ar.firstChild)}else{aw++}var aE=ai(ar,af(ak)),aD=ai(aE,af(ak));aE[ae]=(new Date).toLocaleTimeString();U(aE,W,aD,ad);ai(aD,X(aF));ar.scrollTop=ar.scrollHeight};R[N](aC);an()}})()}else{if(typeof print===P){R[N]=print}}}return R}();D.logger=j;D.version="1.3.6";D.lib={};D.registerLibrary=function(L,M){D.lib[L]=M;if(M.hasOwnProperty("init")){M.init(g)}};D.instances=k;D.getInstanceById=function(L){return k[H[L]]};D.Sketch=function(L){this.attachFunction=L;this.options={pauseOnBlur:false,globalKeyEvents:false};this.onLoad=E;this.onSetup=E;this.onPause=E;this.onLoop=E;this.onFrameStart=E;this.onFrameEnd=E;this.onExit=E;this.params={};this.imageCache={pending:0,images:{},operaCache:{},add:function(N,M){if(this.images[N]){return}if(!l){this.images[N]=null}if(!M){M=new Image;M.onload=function(P){return function(){P.pending--}}(this);this.pending++;M.src=N}this.images[N]=M;if(B.opera){var O=d.createElement("div");O.appendChild(M);O.style.position="absolute";O.style.opacity=0;O.style.width="1px";O.style.height="1px";if(!this.operaCache[N]){d.body.appendChild(O);this.operaCache[N]=O}}}};this.sourceCode=undefined;this.attach=function(N){if(typeof this.attachFunction==="function"){this.attachFunction(N)}else{if(this.sourceCode){var M=(new Function("return ("+this.sourceCode+");"))();M(N);this.attachFunction=M}else{throw"Unable to attach sketch to the processing instance"}}};this.toString=function(){var M;var N="((function(Sketch) {\n";N+="var sketch = new Sketch(\n"+this.sourceCode+");\n";for(M in this.options){if(this.options.hasOwnProperty(M)){var O=this.options[M];N+="sketch.options."+M+" = "+(typeof O==="string"?'"'+O+'"':""+O)+";\n"}}for(M in this.imageCache){if(this.options.hasOwnProperty(M)){N+='sketch.imageCache.add("'+M+'");\n'}}N+="return sketch;\n})(Processing.Sketch))";return N}};var t=function(O,L){var M=[],S=[],T=L.length,Q=0;function R(U,W){var V=new XMLHttpRequest;V.onreadystatechange=function(){if(V.readyState===4){var X;if(V.status!==200&&V.status!==0){X="Invalid XHR status "+V.status}else{if(V.responseText===""){if("withCredentials" in new XMLHttpRequest&&(new XMLHttpRequest).withCredentials===false&&B.location.protocol==="file:"){X="XMLHttpRequest failure, possibly due to a same-origin policy violation. You can try loading this page in another browser, or load it from http://localhost using a local webserver. See the Processing.js README for a more detailed explanation of this problem and solutions."}else{X="File is empty."}}}W(V.responseText,X)}};V.open("GET",U,true);if(V.overrideMimeType){V.overrideMimeType("application/json")}V.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");V.send(null)}function N(V,U){function X(aa,Y){M[V]=aa;++Q;if(Y){S.push(U+" ==> "+Y)}if(Q===T){if(S.length===0){try{return new D(O,M.join("\n"))}catch(Z){throw"Processing.js: Unable to execute pjs sketch: "+Z}}else{throw"Processing.js: Unable to load pjs sketch files: "+S.join("\n")}}}if(U.charAt(0)==="#"){var W=d.getElementById(U.substring(1));if(W){X(W.text||W.textContent)}else{X("","Unable to load pjs sketch: element with id '"+U.substring(1)+"' was not found")}return}R(U,X)}for(var P=0;Pr.$methodArgsIndex?r.$overloads[r.$methodArgsIndex]:null)||r.$defaultOverload).apply(this,arguments)};r.$overloads=p;"$methodArgsIndex"in f&&(r.$methodArgsIndex= +f.$methodArgsIndex);r.$defaultOverload=l;r.name=d;a[d]=r}}else a[d]=f}function n(b,d){function f(f){a.defineProperty(b,f,{get:function(){return d[f]},set:function(c){d[f]=c},enumerable:!0})}var l=[],p;for(p in d)"function"===typeof d[p]?m(b,p,d[p]):"$"===p.charAt(0)||p in b||l.push(p);for(;0 +c.$methodArgsIndex?c.$overloads[c.$methodArgsIndex]:null)||c.$defaultOverload).apply(this,arguments)},h=[];p&&(h[p.length]=p);h[r]=f;c.$overloads=h;c.$defaultOverload=p||f;l&&(c.$methodArgsIndex=r);c.name=d;a[d]=c}}else a[d]=f};a.createJavaArray=function(b,d){var f=null,l=null;if("string"===typeof b)if("boolean"===b)l=!1;else{var p;p="string"!==typeof b?!1:-1!=="byte int char color float long double".split(" ").indexOf(b);p&&(l=0)}if("number"===typeof d[0])if(p=0|d[0],1>=d.length){f=[];f.length=p; +for(var r=0;r "+b);if(v===h)if(0===p.length)try{return new k(f,l.join("\n"))}catch(md){throw console.log("Processing.js: Unable to execute pjs sketch."),md;}else throw"Processing.js: Unable to load pjs sketch files: "+p.join("\n");}if("#"===a.charAt(0)){var ca=n.getElementById(a.substring(1));ca?m(ca.text||ca.textContent):m("","Unable to load pjs sketch: element with id '"+ +a.substring(1)+"' was not found")}else d(a,m)}for(var l=[],p=[],h=c.length,v=0,ga=0;gaa||a>b.length)throw"Index out of bounds for addAll: "+a+" greater or equal than "+b.length;for(l=new ObjectIterator(f);l.hasNext();)b.splice(a++,0,l.next())}else for(l=new ObjectIterator(a);l.hasNext();)b.push(l.next())};this.set=function(){if(2===arguments.length){var a= +arguments[0];if("number"===typeof a)if(0<=a&&af?c.length+f:f}function b(){if(!(k<=r*c.length)){for(var f=[],b=0;b=c.length)p= +!0;else if(void 0===c[d]||l>=c[d].length)l=-1,++d;else break}var d=0,l=-1,p=!1,r;this.hasNext=function(){return!p};this.next=function(){r=f(c[d][l]);b();return r};this.remove=function(){void 0!==r&&(a(r),--l,b())};b()}function f(c,f,a){this.clear=function(){ca.clear()};this.contains=function(c){return f(c)};this.containsAll=function(c){for(c=c.iterator();c.hasNext();)if(!this.contains(c.next()))return!1;return!0};this.isEmpty=function(){return ca.isEmpty()};this.iterator=function(){return new d(c, +a)};this.remove=function(c){return this.contains(c)?(a(c),!0):!1};this.removeAll=function(c){for(c=c.iterator();c.hasNext();){var f=c.next();this.contains(f)&&a(f)}return!0};this.retainAll=function(c){for(var f=this.iterator(),b=[];f.hasNext();){var d=f.next();c.contains(d)||b.push(d)}for(c=0;cdbflkhyjqpg";n.body.appendChild(p);var c=l.width,k=l.height,l=k/2;r.fillStyle="white";r.fillRect(0,0,c,k);r.fillStyle="black";r.fillText("dbflkhyjqpg",0,l);for(var k=r.getImageData(0,0,c,k).data,m=0,G=4*c,A=k.length;++m=2*this.size&&(this.leading=Math.round(l/2)));n.body.removeChild(p);f=this.caching?r:void 0;this.context2d=f;this.css=this.getCSSDefinition();this.context2d&&(this.context2d.font=this.css)}var n=k.Browser.document,a=k.noop;m.prototype.caching=!0;m.prototype.getCSSDefinition=function(a,d){a===h&&(a=this.size+"px");d===h&&(d=this.leading+"px");return[this.style,"normal", +this.weight,a+"/"+d,this.family].join(" ")};m.prototype.measureTextWidth=function(a){return this.context2d.measureText(a).width};m.prototype.measureTextWidthFallback=function(a){var d=n.createElement("canvas").getContext("2d");d.font=this.css;return d.measureText(a).width};m.PFontCache={length:0};m.get=function(a,d){d=(10*d+0.5|0)/10;var f=m.PFontCache,l=a+"/"+d;if(!f[l]){f[l]=new m(a,d);f.length++;if(50===f.length){m.prototype.measureTextWidth=m.prototype.measureTextWidthFallback;m.prototype.caching= +!1;for(var p in f)"length"!==p&&(f[p].context2d=null);return new m(a,d)}if(400===f.length)return m.PFontCache={},m.get=m.getFallback,new m(a,d)}return f[l]};m.getFallback=function(a,d){return new m(a,d)};m.list=function(){return["sans-serif","serif","monospace","fantasy","cursive"]};m.preloading={template:{},initialized:!1,initialize:function(){var a=n.createElement("style");a.setAttribute("type","text/css");a.innerHTML='@font-face {\n font-family: "PjsEmptyFont";\n src: url(\'data:application/x-font-ttf;base64,'+ +function(){return"#E3KAI2wAgT1MvMg7Eo3VmNtYX7ABi3CxnbHlm7Abw3kaGVhZ7ACs3OGhoZWE7A53CRobXR47AY3AGbG9jYQ7G03Bm1heH7ABC3CBuYW1l7Ae3AgcG9zd7AI3AE#B3AQ2kgTY18PPPUACwAg3ALSRoo3#yld0xg32QAB77#E777773B#E3C#I#Q77773E#Q7777777772CMAIw7AB77732B#M#Q3wAB#g3B#E#E2BB//82BB////w#B7#gAEg3E77x2B32B#E#Q#MTcBAQ32gAe#M#QQJ#E32M#QQJ#I#g32Q77#".replace(/[#237]/g,function(a){return"AAAAAAAA".substr(~~a?7-a:6)})}()+"')\n format('truetype');\n}";n.head.appendChild(a);a=n.createElement("span");a.style.cssText='position: absolute; top: 0; left: 0; opacity: 0; font-family: "PjsEmptyFont", fantasy;'; +a.innerHTML="AAAAAAAA";n.body.appendChild(a);this.template=a;this.initialized=!0},getElementWidth:function(a){return n.defaultView.getComputedStyle(a,"").getPropertyValue("width")},timeAttempted:0,pending:function(a){this.initialized||this.initialize();for(var d,f,l=this.getElementWidth(this.template),p=0;pthis.timeAttempted&&f===l)return this.timeAttempted+=a,!0;n.body.removeChild(d);this.fontList.splice(p--,1);this.timeAttempted= +0}return 0===this.fontList.length?!1:!0},fontList:[],addedList:{},add:function(a){this.initialized||this.initialize();var d="object"===typeof a?a.fontFace:a;a="object"===typeof a?a.url:a;if(!this.addedList[d]){var f=n.createElement("style");f.setAttribute("type","text/css");f.innerHTML="@font-face{\n font-family: '"+d+"';\n src: url('"+a+"');\n}\n";n.head.appendChild(f);this.addedList[d]=!0;a=n.createElement("span");a.style.cssText="position: absolute; top: 0; left: 0; opacity: 0;";a.style.fontFamily= +'"'+d+'", "PjsEmptyFont", fantasy';a.innerHTML="AAAAAAAA";n.body.appendChild(a);this.fontList.push(a)}}};return m}},{}],13:[function(D,x,Q){x.exports=function(k,h){var m=k.p,n=function(){0===arguments.length?this.reset():1===arguments.length&&arguments[0]instanceof n?this.set(arguments[0].array()):6===arguments.length&&this.set(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])};n.prototype={set:function(){if(6===arguments.length){var a=arguments;this.set([a[0],a[1],a[2], +a[3],a[4],a[5]])}else 1===arguments.length&&arguments[0]instanceof n?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())},get:function(){var a=new n;a.set(this.elements);return a},reset:function(){this.set([1,0,0,0,1,0])},array:function(){return this.elements.slice()},translate:function(a,b){this.elements[2]=a*this.elements[0]+b*this.elements[1]+this.elements[2];this.elements[5]=a*this.elements[3]+b*this.elements[4]+this.elements[5]}, +invTranslate:function(a,b){this.translate(-a,-b)},transpose:function(){},mult:function(a,b){var d,f;a instanceof PVector?(d=a.x,f=a.y,b||(b=new PVector)):a instanceof Array&&(d=a[0],f=a[1],b||(b=[]));b instanceof Array?(b[0]=this.elements[0]*d+this.elements[1]*f+this.elements[2],b[1]=this.elements[3]*d+this.elements[4]*f+this.elements[5]):b instanceof PVector&&(b.x=this.elements[0]*d+this.elements[1]*f+this.elements[2],b.y=this.elements[3]*d+this.elements[4]*f+this.elements[5],b.z=0);return b},multX:function(a, +b){return a*this.elements[0]+b*this.elements[1]+this.elements[2]},multY:function(a,b){return a*this.elements[3]+b*this.elements[4]+this.elements[5]},skewX:function(a){this.apply(1,0,1,a,0,0)},skewY:function(a){this.apply(1,0,1,0,a,0)},shearX:function(a){this.apply(1,0,1,Math.tan(a),0,0)},shearY:function(a){this.apply(1,0,1,0,Math.tan(a),0)},determinant:function(){return this.elements[0]*this.elements[4]-this.elements[1]*this.elements[3]},invert:function(){var a=this.determinant();if(Math.abs(a)>PConstants.MIN_INT){var b= +this.elements[0],d=this.elements[1],f=this.elements[2],l=this.elements[3],p=this.elements[4],r=this.elements[5];this.elements[0]=p/a;this.elements[3]=-l/a;this.elements[1]=-d/a;this.elements[4]=b/a;this.elements[2]=(d*r-p*f)/a;this.elements[5]=(l*f-b*r)/a;return!0}return!1},scale:function(a,b){a&&!b&&(b=a);a&&b&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[3]*=a,this.elements[4]*=b)},invScale:function(a,b){a&&!b&&(b=a);this.scale(1/a,1/b)},apply:function(){var a;1===arguments.length&&arguments[0]instanceof +n?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,this.elements[2],0,0,this.elements[5]],d=0,f=0;2>f;f++)for(var l=0;3>l;l++,d++)b[d]+=this.elements[3*f+0]*a[l+0]+this.elements[3*f+1]*a[l+3];this.elements=b.slice()},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof n?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&& +arguments[0]instanceof Array&&(a=arguments[0]);var b=[0,0,a[2],0,0,a[5]];b[2]=a[2]+this.elements[2]*a[0]+this.elements[5]*a[1];b[5]=a[5]+this.elements[2]*a[3]+this.elements[5]*a[4];b[0]=this.elements[0]*a[0]+this.elements[3]*a[1];b[3]=this.elements[0]*a[3]+this.elements[3]*a[4];b[1]=this.elements[1]*a[0]+this.elements[4]*a[1];b[4]=this.elements[1]*a[3]+this.elements[4]*a[4];this.elements=b.slice()},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);var d=this.elements[0],f=this.elements[1];this.elements[0]= +b*d+a*f;this.elements[1]=-a*d+b*f;d=this.elements[3];f=this.elements[4];this.elements[3]=b*d+a*f;this.elements[4]=-a*d+b*f},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a-Math.PI)},print:function(){var a=printMatrixHelper(this.elements),a=""+m.nfs(this.elements[0],a,4)+" "+m.nfs(this.elements[1],a,4)+" "+m.nfs(this.elements[2],a,4)+"\n"+m.nfs(this.elements[3],a,4)+" "+m.nfs(this.elements[4],a,4)+" "+m.nfs(this.elements[5],a,4)+"\n\n";m.println(a)}};return n}},{}],14:[function(D, +x,Q){x.exports=function(k,h){var m=k.p,n=function(){this.reset()};n.prototype={set:function(){16===arguments.length?this.elements=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof n?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())},get:function(){var a=new n;a.set(this.elements);return a},reset:function(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},array:function(){return this.elements.slice()}, +translate:function(a,b,d){d===h&&(d=0);this.elements[3]+=a*this.elements[0]+b*this.elements[1]+d*this.elements[2];this.elements[7]+=a*this.elements[4]+b*this.elements[5]+d*this.elements[6];this.elements[11]+=a*this.elements[8]+b*this.elements[9]+d*this.elements[10];this.elements[15]+=a*this.elements[12]+b*this.elements[13]+d*this.elements[14]},transpose:function(){var a=this.elements[4];this.elements[4]=this.elements[1];this.elements[1]=a;a=this.elements[8];this.elements[8]=this.elements[2];this.elements[2]= +a;a=this.elements[6];this.elements[6]=this.elements[9];this.elements[9]=a;a=this.elements[3];this.elements[3]=this.elements[12];this.elements[12]=a;a=this.elements[7];this.elements[7]=this.elements[13];this.elements[13]=a;a=this.elements[11];this.elements[11]=this.elements[14];this.elements[14]=a},mult:function(a,b){var d,f,l,p;a instanceof PVector?(d=a.x,f=a.y,l=a.z,p=1,b||(b=new PVector)):a instanceof Array&&(d=a[0],f=a[1],l=a[2],p=a[3]||1,!b||3!==b.length&&4!==b.length)&&(b=[0,0,0]);b instanceof +Array&&(3===b.length?(b[0]=this.elements[0]*d+this.elements[1]*f+this.elements[2]*l+this.elements[3],b[1]=this.elements[4]*d+this.elements[5]*f+this.elements[6]*l+this.elements[7],b[2]=this.elements[8]*d+this.elements[9]*f+this.elements[10]*l+this.elements[11]):4===b.length&&(b[0]=this.elements[0]*d+this.elements[1]*f+this.elements[2]*l+this.elements[3]*p,b[1]=this.elements[4]*d+this.elements[5]*f+this.elements[6]*l+this.elements[7]*p,b[2]=this.elements[8]*d+this.elements[9]*f+this.elements[10]*l+ +this.elements[11]*p,b[3]=this.elements[12]*d+this.elements[13]*f+this.elements[14]*l+this.elements[15]*p));b instanceof PVector&&(b.x=this.elements[0]*d+this.elements[1]*f+this.elements[2]*l+this.elements[3],b.y=this.elements[4]*d+this.elements[5]*f+this.elements[6]*l+this.elements[7],b.z=this.elements[8]*d+this.elements[9]*f+this.elements[10]*l+this.elements[11]);return b},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof n?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments): +1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],d=0,f=0;4>f;f++)for(var l=0;4>l;l++,d++)b[d]+=this.elements[l+0]*a[4*f+0]+this.elements[l+4]*a[4*f+1]+this.elements[l+8]*a[4*f+2]+this.elements[l+12]*a[4*f+3];this.elements=b.slice()},apply:function(){var a;1===arguments.length&&arguments[0]instanceof n?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&& +(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],d=0,f=0;4>f;f++)for(var l=0;4>l;l++,d++)b[d]+=this.elements[4*f+0]*a[l+0]+this.elements[4*f+1]*a[l+4]+this.elements[4*f+2]*a[l+8]+this.elements[4*f+3]*a[l+12];this.elements=b.slice()},rotate:function(a,b,d,f){if(d){var l=Math.cos(a);a=Math.sin(a);var p=1-l;this.apply(p*b*b+l,p*b*d-a*f,p*b*f+a*d,0,p*b*d+a*f,p*d*d+l,p*d*f-a*b,0,p*b*f-a*d,p*d*f+a*b,p*f*f+l,0,0,0,0,1)}else this.rotateZ(a)},invApply:function(){inverseCopy===h&&(inverseCopy=new n); +var a=arguments;inverseCopy.set(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);if(!inverseCopy.invert())return!1;this.preApply(inverseCopy);return!0},rotateX:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},rotateY:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},rotateZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},scale:function(a, +b,d){!a||b||d?a&&(b&&!d)&&(d=1):b=d=a;a&&(b&&d)&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[2]*=d,this.elements[4]*=a,this.elements[5]*=b,this.elements[6]*=d,this.elements[8]*=a,this.elements[9]*=b,this.elements[10]*=d,this.elements[12]*=a,this.elements[13]*=b,this.elements[14]*=d)},skewX:function(a){a=Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},skewY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},shearX:function(a){a=Math.tan(a);this.apply(1,a,0,0, +0,1,0,0,0,0,1,0,0,0,0,1)},shearY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},multX:function(a,b,d,f){return d?f?this.elements[0]*a+this.elements[1]*b+this.elements[2]*d+this.elements[3]*f:this.elements[0]*a+this.elements[1]*b+this.elements[2]*d+this.elements[3]:this.elements[0]*a+this.elements[1]*b+this.elements[3]},multY:function(a,b,d,f){return d?f?this.elements[4]*a+this.elements[5]*b+this.elements[6]*d+this.elements[7]*f:this.elements[4]*a+this.elements[5]*b+this.elements[6]* +d+this.elements[7]:this.elements[4]*a+this.elements[5]*b+this.elements[7]},multZ:function(a,b,d,f){return f?this.elements[8]*a+this.elements[9]*b+this.elements[10]*d+this.elements[11]*f:this.elements[8]*a+this.elements[9]*b+this.elements[10]*d+this.elements[11]},multW:function(a,b,d,f){return f?this.elements[12]*a+this.elements[13]*b+this.elements[14]*d+this.elements[15]*f:this.elements[12]*a+this.elements[13]*b+this.elements[14]*d+this.elements[15]},invert:function(){var a=this.elements[0]*this.elements[5]- +this.elements[1]*this.elements[4],b=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4],d=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4],f=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5],l=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5],p=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6],r=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12],c=this.elements[8]*this.elements[14]-this.elements[10]* +this.elements[12],h=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],k=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],m=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13],n=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14],x=a*n-b*m+d*k+f*h-l*c+p*r;if(1E-9>=Math.abs(x))return!1;var v=[];v[0]=+this.elements[5]*n-this.elements[6]*m+this.elements[7]*k;v[4]=-this.elements[4]*n+this.elements[6]*h-this.elements[7]*c; +v[8]=+this.elements[4]*m-this.elements[5]*h+this.elements[7]*r;v[12]=-this.elements[4]*k+this.elements[5]*c-this.elements[6]*r;v[1]=-this.elements[1]*n+this.elements[2]*m-this.elements[3]*k;v[5]=+this.elements[0]*n-this.elements[2]*h+this.elements[3]*c;v[9]=-this.elements[0]*m+this.elements[1]*h-this.elements[3]*r;v[13]=+this.elements[0]*k-this.elements[1]*c+this.elements[2]*r;v[2]=+this.elements[13]*p-this.elements[14]*l+this.elements[15]*f;v[6]=-this.elements[12]*p+this.elements[14]*d-this.elements[15]* +b;v[10]=+this.elements[12]*l-this.elements[13]*d+this.elements[15]*a;v[14]=-this.elements[12]*f+this.elements[13]*b-this.elements[14]*a;v[3]=-this.elements[9]*p+this.elements[10]*l-this.elements[11]*f;v[7]=+this.elements[8]*p-this.elements[10]*d+this.elements[11]*b;v[11]=-this.elements[8]*l+this.elements[9]*d-this.elements[11]*a;v[15]=+this.elements[8]*f-this.elements[9]*b+this.elements[10]*a;a=1/x;v[0]*=a;v[1]*=a;v[2]*=a;v[3]*=a;v[4]*=a;v[5]*=a;v[6]*=a;v[7]*=a;v[8]*=a;v[9]*=a;v[10]*=a;v[11]*=a;v[12]*= +a;v[13]*=a;v[14]*=a;v[15]*=a;this.elements=v.slice();return!0},toString:function(){for(var a="",b=0;15>b;b++)a+=this.elements[b]+", ";return a+=this.elements[15]},print:function(){var a=printMatrixHelper(this.elements),a=""+m.nfs(this.elements[0],a,4)+" "+m.nfs(this.elements[1],a,4)+" "+m.nfs(this.elements[2],a,4)+" "+m.nfs(this.elements[3],a,4)+"\n"+m.nfs(this.elements[4],a,4)+" "+m.nfs(this.elements[5],a,4)+" "+m.nfs(this.elements[6],a,4)+" "+m.nfs(this.elements[7],a,4)+"\n"+m.nfs(this.elements[8], +a,4)+" "+m.nfs(this.elements[9],a,4)+" "+m.nfs(this.elements[10],a,4)+" "+m.nfs(this.elements[11],a,4)+"\n"+m.nfs(this.elements[12],a,4)+" "+m.nfs(this.elements[13],a,4)+" "+m.nfs(this.elements[14],a,4)+" "+m.nfs(this.elements[15],a,4)+"\n\n";m.println(a)},invTranslate:function(a,b,d){this.preApply(1,0,0,-a,0,1,0,-b,0,0,1,-d,0,0,0,1)},invRotateX:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},invRotateY:function(a){var b=Math.cos(-a);a=Math.sin(-a); +this.preApply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},invRotateZ:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},invScale:function(a,b,d){this.preApply([1/a,0,0,0,0,1/b,0,0,0,0,1/d,0,0,0,0,1])}};return n}},{}],15:[function(D,x,Q){x.exports=function(k){var h=k.PConstants,m=k.PMatrix2D,n=k.PMatrix3D;k=function(a){this.family=a||h.GROUP;this.style=this.visible=!0;this.children=[];this.nameTable=[];this.params=[];this.name="";this.parent=this.height=this.width= +this.close=this.kind=this.matrix=this.image=null};k.prototype={isVisible:function(){return this.visible},setVisible:function(a){this.visible=a},disableStyle:function(){this.style=!1;for(var a=0,b=this.children.length;a, it's <"+this.element.getName()+">";}else 2===arguments.length&&("string"===typeof arguments[1]?-1 tag of this file.";this.parseColors(this.element);this.parseChildren(this.element)};d.prototype=new n;d.prototype.parseMatrix=function(){function f(f){var a=[];f.replace(/\((.*?)\)/,function(){return function(f,c){a=c.replace(/,+/g," ").split(/\s+/)}}()); +return a}return function(a){this.checkMatrix(2);var b=[];a.replace(/\s*(\w+)\((.*?)\)/g,function(c){b.push(h.trim(c))});if(0===b.length)return null;a=0;for(var d=b.length;a=v||97<=v&&122>=v){u=x;x++;if(x=v||97<=v&&100>=v||102<=v&&122>=v)&&!1===D;)32===v?""!==ga&&(q.push(parseFloat(ga)),ga=""):45===v?101===f[x-1].charCodeAt(0)?ga+=f[x].toString():(""!== +ga&&q.push(parseFloat(ga)),ga=f[x].toString()):ga+=f[x].toString(),x++,x===f.length?D=!0:v=f[x].charCodeAt(0);""!==ga&&(q.push(parseFloat(ga)),ga="");nc=f[u];v=nc.charCodeAt(0);if(77===v){if(2<=q.length&&0===q.length%2&&(a=q[0],b=q[1],this.parsePathMoveto(a,b),2this.params[2]||0>this.params[3])throw"svg error: negative width or height found while parsing ";};d.prototype.parseEllipse=function(a){this.kind=m.ELLIPSE;this.family=m.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("cx")|0;this.params[1]=this.element.getFloatAttribute("cy")|0;var b;if(a){if(a=b=this.element.getFloatAttribute("r"), +0>a)throw"svg error: negative radius found while parsing ";}else if(a=this.element.getFloatAttribute("rx"),b=this.element.getFloatAttribute("ry"),0>a||0>b)throw"svg error: negative x-axis radius or y-axis radius found while parsing ";this.params[0]-=a;this.params[1]-=b;this.params[2]=2*a;this.params[3]=2*b};d.prototype.parseLine=function(){this.kind=m.LINE;this.family=m.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("x1");this.params[1]=this.element.getFloatAttribute("y1"); +this.params[2]=this.element.getFloatAttribute("x2");this.params[3]=this.element.getFloatAttribute("y2")};d.prototype.parseColors=function(a){a.hasAttribute("opacity")&&this.setOpacity(a.getAttribute("opacity"));a.hasAttribute("stroke")&&this.setStroke(a.getAttribute("stroke"));a.hasAttribute("stroke-width")&&this.setStrokeWeight(a.getAttribute("stroke-width"));a.hasAttribute("stroke-linejoin")&&this.setStrokeJoin(a.getAttribute("stroke-linejoin"));a.hasAttribute("stroke-linecap")&&this.setStrokeCap(a.getStringAttribute("stroke-linecap")); +a.hasAttribute("fill")&&this.setFill(a.getStringAttribute("fill"));if(a.hasAttribute("style")){a=a.getStringAttribute("style").toString().split(";");for(var b=0,d=a.length;bb?a:a.indexOf("pt")===b?1.25*parseFloat(a.substring(0,b)):a.indexOf("pc")=== +b?15*parseFloat(a.substring(0,b)):a.indexOf("mm")===b?3.543307*parseFloat(a.substring(0,b)):a.indexOf("cm")===b?35.43307*parseFloat(a.substring(0,b)):a.indexOf("in")===b?90*parseFloat(a.substring(0,b)):a.indexOf("px")===b?parseFloat(a.substring(0,b)):parseFloat(a)};return d}},{}],17:[function(D,x,Q){x.exports=function(k,h){function m(a,b,l){this.x=a||0;this.y=b||0;this.z=l||0}function n(a){return function(b,l){var p=b.get();p[a](l);return p}}var a=k.PConstants;m.fromAngle=function(a,b){if(b===h|| +null===b)b=new m;b.x=Math.cos(a);b.y=Math.sin(a);return b};m.random2D=function(b){return m.fromAngle(Math.random()*a.TWO_PI,b)};m.random3D=function(b){var f=Math.random()*a.TWO_PI,l=2*Math.random()-1,p=Math.sqrt(1-l*l),r=p*Math.cos(f),f=p*Math.sin(f);b===h||null===b?b=new m(r,f,l):b.set(r,f,l);return b};m.dist=function(a,b){return a.dist(b)};m.dot=function(a,b){return a.dot(b)};m.cross=function(a,b){return a.cross(b)};m.sub=function(a,b){return new m(a.x-b.x,a.y-b.y,a.z-b.z)};m.angleBetween=function(a, +b){return Math.acos(a.dot(b)/(a.mag()*b.mag()))};m.lerp=function(a,b,l){a=new m(a.x,a.y,a.z);a.lerp(b,l);return a};m.prototype={set:function(a,b,l){1===arguments.length?this.set(a.x||a[0]||0,a.y||a[1]||0,a.z||a[2]||0):(this.x=a,this.y=b,this.z=l)},get:function(){return new m(this.x,this.y,this.z)},mag:function(){var a=this.x,b=this.y,l=this.z;return Math.sqrt(a*a+b*b+l*l)},magSq:function(){var a=this.x,b=this.y,l=this.z;return a*a+b*b+l*l},setMag:function(a,b){if(b===h)b=a,this.normalize(),this.mult(b); +else return a.normalize(),a.mult(b),a},add:function(a,b,l){1===arguments.length?(this.x+=a.x,this.y+=a.y,this.z+=a.z):(this.x+=a,this.y+=b,this.z+=l)},sub:function(a,b,l){1===arguments.length?(this.x-=a.x,this.y-=a.y,this.z-=a.z):(this.x-=a,this.y-=b,this.z-=l)},mult:function(a){"number"===typeof a?(this.x*=a,this.y*=a,this.z*=a):(this.x*=a.x,this.y*=a.y,this.z*=a.z)},div:function(a){"number"===typeof a?(this.x/=a,this.y/=a,this.z/=a):(this.x/=a.x,this.y/=a.y,this.z/=a.z)},rotate:function(a){var b= +this.x,l=Math.cos(a);a=Math.sin(a);this.x=l*this.x-a*this.y;this.y=a*b+l*this.y},dist:function(a){var b=this.x-a.x,l=this.y-a.y;a=this.z-a.z;return Math.sqrt(b*b+l*l+a*a)},dot:function(a,b,l){return 1===arguments.length?this.x*a.x+this.y*a.y+this.z*a.z:this.x*a+this.y*b+this.z*l},cross:function(a){var b=this.x,l=this.y,p=this.z;return new m(l*a.z-a.y*p,p*a.x-a.z*b,b*a.y-a.x*l)},lerp:function(a,b,l,p){var r,c;2===arguments.length?(p=b,r=a.x,c=a.y,l=a.z):(r=a,c=b);this.x+=(r-this.x)*p;this.y+=(c-this.y)* +p;this.z+=(l-this.z)*p},normalize:function(){var a=this.mag();0a&&(this.normalize(),this.mult(a))},heading:function(){return-Math.atan2(-this.y,this.x)},heading2D:function(){return this.heading()},toString:function(){return"["+this.x+", "+this.y+", "+this.z+"]"},array:function(){return[this.x,this.y,this.z]}};for(var b in m.prototype)m.prototype.hasOwnProperty(b)&&!m.hasOwnProperty(b)&&(m[b]=n(b));return m}},{}],18:[function(D,x,Q){x.exports=function(){var k= +function(h,k,n,a,b){this.fullName=h||"";this.name=k||"";this.namespace=n||"";this.value=a;this.type=b};k.prototype={getName:function(){return this.name},getFullName:function(){return this.fullName},getNamespace:function(){return this.namespace},getValue:function(){return this.value},getType:function(){return this.type},setValue:function(h){this.value=h}};return k}},{}],19:[function(D,x,Q){x.exports=function(k,h){var m=k.Browser,n=m.ajax,a=m.window.DOMParser,b=k.XMLAttribute,d=function(a,b,d,r){this.attributes= +[];this.children=[];this.name=this.fullName=null;this.namespace="";this.parent=this.content=null;this.systemID=this.lineNr="";this.type="ELEMENT";a&&("string"===typeof a?b===h&&-1":">","'":"'",'"':"""},r;for(r in d)Object.hasOwnProperty(d, +r)||(a=a.replace(RegExp(r,"g"),d[r]));b.cdata=a;return b},hasAttribute:function(){if(1===arguments.length)return null!==this.getAttribute(arguments[0]);if(2===arguments.length)return null!==this.getAttribute(arguments[0],arguments[1])},equals:function(a){if(!(a instanceof d))return!1;var b,p;if(this.fullName!==a.fullName||this.attributes.length!==a.getAttributeCount()||this.attributes.length!==a.attributes.length)return!1;var r,c;b=0;for(p=this.attributes.length;ba&&this.children.splice(a,1)},findAttribute:function(a,b){this.namespace=b||"";for(var d=0,r=this.attributes.length;da?arguments[0]:arguments[0].substring(a+1);this.fullName=arguments[0];this.namespace=arguments[1]}},getName:function(){return this.fullName},getLocalName:function(){return this.name},getAttributeCount:function(){return this.attributes.length},toString:function(){if("TEXT"===this.type)return this.content; +if("CDATA"===this.type)return this.cdata;var a=this.fullName,b="<"+a,d;for(d=0;d":b+(">"+this.content+"");else{b+=">";for(d=0;d"}return b}};d.parse=function(a){var b=new d;b.parse(a);return b};return d}},{}],20:[function(D,x,Q){x.exports={aliceblue:"#f0f8ff",antiquewhite:"#faebd7", +aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f", +darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0", +hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32", +linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6", +palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4", +tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},{}],21:[function(D,x,Q){x.exports=function(k,h,m){return function(n,a){n.__contains=function(b,d){return"string"!==typeof b?b.contains.apply(b,a(arguments)):null!==b&&null!==d&&"string"===typeof d&&-1h)return b;var k=0,r="";do r+=b.substring(k,h)+f,k=h+d.length;while(0<=(h=b.indexOf(d,k)));return r+b.substring(k)};n.__equals=function(b, +d){return b.equals instanceof Function?b.equals.apply(b,a(arguments)):h(b,d)};n.__equalsIgnoreCase=function(b,d){return"string"!==typeof b?b.equalsIgnoreCase.apply(b,a(arguments)):b.toLowerCase()===d.toLowerCase()};n.__toCharArray=function(b){if("string"!==typeof b)return b.toCharArray.apply(b,a(arguments));for(var d=[],f=0,h=b.length;ff)return b.split(h); +for(var k=[],r=b,c;-1!==(c=r.search(h))&&k.length=f?(h=a.charCodeAt(d+1),1024*(f-55296)+(h-56320)+65536):f};n.__matches=function(a,d){return RegExp(d).test(a)};n.__startsWith=function(b,d,f){if("string"!==typeof b)return b.startsWith.apply(b,a(arguments));f=f||0;return 0>f||f>b.length?!1:""===d||d===b? +!0:b.indexOf(d)===f};n.__endsWith=function(b,d){if("string"!==typeof b)return b.endsWith.apply(b,a(arguments));var f=d?d.length:0;return""===d||d===b?!0:b.indexOf(d)===b.length-f};n.__hashCode=function(b){return b.hashCode instanceof Function?b.hashCode.apply(b,a(arguments)):k(b)};n.__printStackTrace=function(a){n.println("Exception: "+a.toString())}}}},{}],22:[function(D,x,Q){x.exports=function(k,h){function m(a,b){var c=a||362436069,d=b||521288629,f=function(){c=36969*(c&65535)+(c>>>16)&4294967295; +d=18E3*(d&65535)+(d>>>16)&4294967295;return((c&65535)<<16|d&65535)&4294967295};this.doubleGenerator=function(){var a=f()/4294967296;return 0>a?1+a:a};this.intGenerator=f}function n(a){function b(a,c,d,f){a&=15;var r=8>a?c:d;c=4>a?d:12===a||14===a?c:f;return(0===(a&1)?r:-r)+(0===(a&2)?c:-c)}function c(a,b,c){b=0===(a&1)?b:c;return 0===(a&2)?-b:b}function d(a,b,c){return b+a*(c-b)}a=a!==h?new m(a):m.createRandomized();var f,k,l=new Uint8Array(512);for(f=0;256>f;++f)l[f]=f;for(f=0;256>f;++f){var n=l[k= +a.intGenerator()&255];l[k]=l[f];l[f]=n}for(f=0;256>f;++f)l[f+256]=l[f];this.noise3d=function(a,c,f){var h=Math.floor(a)&255,k=Math.floor(c)&255,p=Math.floor(f)&255;a-=Math.floor(a);c-=Math.floor(c);f-=Math.floor(f);var m=(3-2*a)*a*a,n=(3-2*c)*c*c,G=l[h]+k,ca=l[G]+p,G=l[G+1]+p,k=l[h+1]+k,h=l[k]+p,p=l[k+1]+p;return d((3-2*f)*f*f,d(n,d(m,b(l[ca],a,c,f),b(l[h],a-1,c,f)),d(m,b(l[G],a,c-1,f),b(l[p],a-1,c-1,f))),d(n,d(m,b(l[ca+1],a,c,f-1),b(l[h+1],a-1,c,f-1)),d(m,b(l[G+1],a,c-1,f-1),b(l[p+1],a-1,c-1,f-1))))}; +this.noise2d=function(a,b){var f=Math.floor(a)&255,r=Math.floor(b)&255;a-=Math.floor(a);b-=Math.floor(b);var h=(3-2*a)*a*a,k=l[f]+r,f=l[f+1]+r;return d((3-2*b)*b*b,d(h,c(l[k],a,b),c(l[f],a-1,b)),d(h,c(l[k+1],a,b-1),c(l[f+1],a-1,b-1)))};this.noise1d=function(a){var b=Math.floor(a)&255;a-=Math.floor(a);return d((3-2*a)*a*a,0===(l[b]&1)?-a:a,0===(l[b+1]&1)?-(a-1):a-1)}}var a=function(){return Math.random()};k.abs=Math.abs;k.ceil=Math.ceil;k.exp=Math.exp;k.floor=Math.floor;k.log=Math.log;k.pow=Math.pow; +k.round=Math.round;k.sqrt=Math.sqrt;k.acos=Math.acos;k.asin=Math.asin;k.atan=Math.atan;k.atan2=Math.atan2;k.cos=Math.cos;k.sin=Math.sin;k.tan=Math.tan;k.constrain=function(a,b,c){return a>c?c:aa[d]&&(b=a[d]);return b};k.norm=function(a,b,c){return(a-b)/(c-b)};k.sq=function(a){return a*a};k.degrees=function(a){return 180*a/Math.PI};k.random=function(){if(0===arguments.length)return a();if(1===arguments.length)return a()*arguments[0];var b=arguments[0],d=arguments[1];return a()*(d-b)+b};m.createRandomized=function(){var a= +new Date;return new m(a/6E4&4294967295,a&4294967295)};k.randomSeed=function(b){a=(new m(b)).doubleGenerator;this.haveNextNextGaussian=!1};k.randomGaussian=function(){if(this.haveNextNextGaussian)return this.haveNextNextGaussian=!1,this.nextNextGaussian;var b,d,c;do b=2*a()-1,d=2*a()-1,c=b*b+d*d;while(1<=c||0===c);c=Math.sqrt(-2*Math.log(c)/c);this.nextNextGaussian=d*c;this.haveNextNextGaussian=!0;return b*c};var b=h,d=4,f=0.5,l=h;k.noise=function(a,k,c){b===h&&(b=new n(l));for(var m=b,ca=1,G=1,A= +0,x=0;xh?a:n;a=0===d;d=d===k||0>d?0:d;h=Math.abs(h);if(a)for(d=1,h*=10;1E-6d;)++d,h*=10;else 0!==d&&(h*=Math.pow(10,d));a=2*h;Math.floor(h)===h?a=h:Math.floor(a)===a?(h=Math.floor(h),a=h+h%2):a=Math.round(h);h="";for(b+=d;0\=]+)/g,function(a,b){var e=c(b);return e.untrim("__int_cast("+e.middle+")")});a=a.replace(/\bsuper(\s*"B\d+")/g,"$$superCstr$1").replace(/\bsuper(\s*\.)/g,"$$super$1");a=a.replace(/\b0+((\d*)(?:\.[\d*])?(?:[eE][\-\+]?\d+)?[fF]?)\b/,function(a,b,c){return b===c?a:""===c?"0"+b:b});a=a.replace(/\b(\.?\d+\.?)[fF]\b/g,"$1");a= +a.replace(/([^\s])%([^=\s])/g,"$1 % $2");a=a.replace(/\b(frameRate|keyPressed|mousePressed)\b(?!\s*"B)/g,"__$1");a=a.replace(/\b(boolean|byte|char|float|int)\s*"B/g,function(a,b){return"parse"+b.substring(0,1).toUpperCase()+b.substring(1)+'"B'});a=a.replace(/\bpixels\b\s*(("C(\d+)")|\.length)?(\s*=(?!=)([^,\]\)\}]+))?/g,function(a,b,c,e,d,f){return c?(a=N[e],d?"pixels.setPixel"+n("("+a.substring(1,a.length-1)+","+f+")","B"):"pixels.getPixel"+n("("+a.substring(1,a.length-1)+")","B")):b?"pixels.getLength"+ +n("()","B"):d?"pixels.set"+n("("+f+")","B"):"pixels.toArray"+n("()","B")});var d;do d=!1,a=a.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*\.\s*(?:[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*\.\s*)*)(replace|replaceAll|replaceFirst|contains|equals|equalsIgnoreCase|hashCode|toCharArray|printStackTrace|split|startsWith|endsWith|codePointAt|matches)\s*"B(\d+)"/g,b);while(d);do d=!1,a=a.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*(?:\.\s*[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*)*)instanceof\s+([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)/g, +e);while(d);return a=a.replace(/\bthis(\s*"B\d+")/g,"$$constr$1")}function u(a,b){this.baseInterfaceName=a;this.body=b;b.owner=this}function nd(a){var b=RegExp(/\bnew\s*([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)\s*"B\d+"\s*"A(\d+)"/).exec(a);a=ja;var c="class"+ ++ab;ja=c;var e=b[1]+"$"+c,b=new u(e,ea(N[b[2]],e,"","implements "+b[1]));b.classId=c;b.scopeId=a;X[c]=b;ja=a;return b}function Ia(a,b,c){this.name=a;this.params=b;this.body=c}function T(a){a=RegExp(/\b([A-Za-z_$][\w$]*)\s*"B(\d+)"\s*"A(\d+)"/).exec(a); +return new Ia("function"!==a[1]?a[1]:null,M(N[a[2]]),ra(N[a[3]]))}function Y(a){this.members=a}function U(a){a=a.split(",");for(var b=0;bc?{value:ma(a[b])}:{label:f(a[b].substring(0,c)),value:ma(f(a[b].substring(c+1)))}}return new Y(a)}function Z(a){if("("===a.charAt(0)||"["===a.charAt(0))return a.charAt(0)+Z(a.substring(1,a.length-1))+a.charAt(a.length-1);if("{"===a.charAt(0))return/^\{\s*(?:[A-Za-z_$][\w$]*|'\d+')\s*:/.test(a)?"{"+n(a.substring(1,a.length- +1),"I")+"}":"["+Z(a.substring(1,a.length-1))+"]";a=c(a);var b=Q(a.middle),b=b.replace(/"[ABC](\d+)"/g,function(a,b){return Z(N[b])});return a.untrim(b)}function sa(a){return a.replace(/(\.\s*)?((?:\b[A-Za-z_]|\$)[\w$]*)(\s*\.\s*([A-Za-z_$][\w$]*)(\s*\()?)?/g,function(a,b,c,e,d,f){return b?a:C({name:c,member:d,callSign:!!f})+(e===p?"":e)})}function ta(a,b){this.expr=a;this.transforms=b}function $b(a,b,c){this.name=a;this.value=b;this.isDefault=c}function bb(a,b){var c=a.indexOf("="),e,d;0>c?(e=a,c= +b,d=!0):(e=a.substring(0,c),c=ma(a.substring(c+1)),d=!1);return new $b(f(e.replace(/(\s*"C\d+")+/g,"")),c,d)}function Sa(a){return"int"===a||"float"===a?"0":"boolean"===a?"false":"color"===a?"0x00000000":"null"}function cb(a,b){this.definitions=a;this.varType=b}function Fb(a){this.expression=a}function db(a){if(Gb.test(a)){var b=ub.exec(a);a=a.substring(b[0].length).split(",");for(var c=Sa(b[2]),e=0;ea.indexOf(";"))return a=a.substring(1,a.length-1).split(":"),new wa(db(f(a[0])),ma(a[1]));a=a.substring(1,a.length-1).split(";");return new Hb(db(f(a[0])),ma(a[1]),ma(a[2]))}function Ta(a){a.sort(function(a,b){return b.weight- +a.weight})}function Ja(a,b,c){this.name=a;this.body=b;this.isStatic=c;b.owner=this}function Jb(a,b,c){this.name=a;this.body=b;this.isStatic=c;b.owner=this}function Kb(a){var b=qa.exec(a);qa.lastIndex=0;var c=0<=b[1].indexOf("static"),e=N[l(b[6])];a=ja;var d="class"+ ++ab;ja=d;b="interface"===b[2]?new Ja(b[3],eb(e,b[3],b[4]),c):new Jb(b[3],ea(e,b[3],b[4],b[5]),c);b.classId=d;b.scopeId=a;X[d]=b;ja=a;return b}function Lb(a,b,c,e){this.name=a;this.params=b;this.body=c;this.isStatic=e}function fb(a){a= +la.exec(a);la.lastIndex=0;var b=0<=a[1].indexOf("static"),c=";"!==a[6]?N[l(a[6])]:"{}";return new Lb(a[3],M(N[l(a[4])]),ra(c),b)}function Mb(a,b,c){this.definitions=a;this.fieldType=b;this.isStatic=c}function Ua(a){var b=ub.exec(a),c=0<=b[1].indexOf("static");a=a.substring(b[0].length).split(/,\s*/g);for(var e=Sa(b[2]),d=0;d([=]?)/g,La);while(ka);var N=function(a){var b=[];a=a.split(/([\{\[\(\)\]\}])/);for(var c=a[0],e=[],d=1;d=":"===")+" "+m+") { $constr_"+m+".apply("+a+", arguments); }");0f)return!1;d.splice(f,1);if(0");b.javaconsole.innerHTML=b.BufferArray.join("");"hidden"===b.wrapper.style.visibility&&(b.wrapper.style.visibility="visible");b.BufferArray.length>b.BufferMax?b.BufferArray.splice(0, +1):b.javaconsole.scrollTop=b.javaconsole.scrollHeight;"hidden"===b.wrapper.style.visibility&&(b.wrapper.style.visibility="visible")};b.showconsole=function(){b.wrapper.style.visibility="visible"};b.hideconsole=function(){b.wrapper.style.visibility="hidden"};b.closer.onclick=function(){b.hideconsole()};b.hideconsole();return b}(l);return k}},{}],26:[function(D,x,Q){x.exports=function(k,h){function m(a,b){return a in l?l[a]:"function"===typeof l[b]?l[b]:function(a){if(a instanceof Array)return a;if("number"=== +typeof a){var b=[];b.length=a;return b}}}var n=k.defaultScope,a=k.extend,b=k.Browser,d=b.ajax,f=b.navigator,l=b.window,p=b.document,r=k.noop,c=n.PConstants;PFont=n.PFont;PShapeSVG=n.PShapeSVG;PVector=n.PVector;Char=Character=n.Char;ObjectIterator=n.ObjectIterator;XMLElement=n.XMLElement;XML=n.XML;var x=l.HTMLCanvasElement,D=l.HTMLImageElement,G=l.localStorage;p.head||(p.head=p.getElementsByTagName("head")[0]);var A=m("Float32Array","WebGLFloatArray"),Q=m("Int32Array","WebGLIntArray"),v=m("Uint16Array", +"WebGLUnsignedShortArray"),ga=m("Uint8Array","WebGLUnsignedByteArray");if(9<=p.documentMode&&!p.doctype)throw"The doctype directive is missing. The recommended doctype in Internet Explorer is the HTML5 doctype: ";var q=[],Zb={},M=this.Processing=function(b,k,m){function Ia(a,b,z){a.addEventListener?a.addEventListener(b,z,!1):a.attachEvent("on"+b,z);wb.push({elem:a,type:b,fn:z})}function T(a,b,z,c){var e=Fa.locations[a];e===h&&(e=g.getUniformLocation(b,z),Fa.locations[a]=e);null!==e&& +(4===c.length?g.uniform4fv(e,c):3===c.length?g.uniform3fv(e,c):2===c.length?g.uniform2fv(e,c):g.uniform1f(e,c))}function Y(a,b,z,c){var e=Fa.locations[a];e===h&&(e=g.getUniformLocation(b,z),Fa.locations[a]=e);null!==e&&(4===c.length?g.uniform4iv(e,c):3===c.length?g.uniform3iv(e,c):2===c.length?g.uniform2iv(e,c):g.uniform1i(e,c))}function U(a,b,z,c,e){var d=Fa.locations[a];d===h&&(d=g.getUniformLocation(b,z),Fa.locations[a]=d);-1!==d&&(16===e.length?g.uniformMatrix4fv(d,c,e):9===e.length?g.uniformMatrix3fv(d, +c,e):g.uniformMatrix2fv(d,c,e))}function Z(a,b,z,c,e){var d=Fa.attributes[a];d===h&&(d=g.getAttribLocation(b,z),Fa.attributes[a]=d);-1!==d&&(g.bindBuffer(g.ARRAY_BUFFER,e),g.vertexAttribPointer(d,c,g.FLOAT,!1,0,0),g.enableVertexAttribArray(d))}function sa(a,b,z){var c=Fa.attributes[a];c===h&&(c=g.getAttribLocation(b,z),Fa.attributes[a]=c);-1!==c&&g.disableVertexAttribArray(c)}function ta(a,b,z,$){Va===c.HSB?(z=e.color.toRGB(a,b,z),a=z[0],b=z[1],z=z[2]):(a=Math.round(255*(a/xa)),b=Math.round(255*(b/ +Ea)),z=Math.round(255*(z/ya)));$=Math.round(255*($/ia));a=0>a?0:a;b=0>b?0:b;z=0>z?0:z;$=0>$?0:$;return(255<$?255:$)<<24&c.ALPHA_MASK|(255>>16)/255;z=((a&c.GREEN_MASK)>>>8)/255;$=(a&c.BLUE_MASK)/255;a=e.max(e.max(b,z),$);var d=e.min(e.min(b, +z),$);if(d===a)return[0,0,a*ya];b=(b===a?(z-$)/(a-d):z===a?2+($-b)/(a-d):4+(b-z)/(a-d))/6;0>b?b+=1:1>>16;d[e+1]=(b&c.GREEN_MASK)>>>8;d[e+2]=b&c.BLUE_MASK; +d[e+3]=(b&c.ALPHA_MASK)>>>24;a.__isDirty=!0}}(a),toArray:function(a){return function(){var L=[],b=a.imageData.data,e=a.width*a.height;if(a.isRemote)throw"Image is loaded remotely. Cannot get pixels.";for(var d=0,f=0;d>>16,e[b+1]=(d&c.GREEN_MASK)>>>8,e[b+2]=d&c.BLUE_MASK,e[b+3]=(d&c.ALPHA_MASK)>>>24;a.__isDirty=!0}}(a)}}function Kb(a,b,z,$){var d=new Ga(z,$,c.ARGB);d.fromImageData(e.toImageData(a,b,z,$));return d}function Lb(a,b,z,e,d){if(d.isRemote)throw"Image is loaded remotely. Cannot get x,y,w,h.";var f=new Ga(z,e,c.ARGB),g=f.imageData.data,h=d.width,s=d.height;d=d.imageData.data;var k=Math.max(0,-b),l=Math.max(0,-a);e=Math.min(e,s-b);for(s=Math.min(z,h-a);ka.indexOf("\n")?(a=[a],d=1):(a=a.split(/\r?\n/g),d=a.length);var f=0;Wa===c.TOP?f=Xa+Ma:Wa===c.CENTER?f=Xa/2-(d-1)*Aa/2:Wa===c.BOTTOM&&(f=-(Ma+(d-1)*Aa));for(var g=0;gd)){for(var g=-1,h=0,s=0,k=[],l=0,n=a.length;ld-Ma)break;s=k[h];ha.text$line(s.text,b+a,z+g+l,f,nb)}}}function Ka(a){ha="3D"===a?new B:"2D"===a?new E:new F;for(var b in F.prototype)F.prototype.hasOwnProperty(b)&& +0>b.indexOf("$")&&(e[b]=ha[b]);ha.$init()}function H(a){return function(){Ka("2D");return ha[a].apply(this,arguments)}}function lb(a){a=a.which||a.keyCode;switch(a){case 13:return 10;case 91:case 93:case 224:return 157;case 57392:return 17;case 46:return 127;case 45:return 155}return a}function mb(a){"function"===typeof a.preventDefault?a.preventDefault():"function"===typeof a.stopPropagation&&a.stopPropagation();return!1}function Ob(){for(var a in hb)if(hb.hasOwnProperty(a)){e.__keyPressed=!0;return}e.__keyPressed= +!1}function vb(a,b){hb[a]=b;ob=null;e.key=b;e.keyCode=a;e.keyPressed();e.keyCode=0;e.keyTyped();Ob()}function rc(a){var b=lb(a);if(b===c.DELETE)vb(b,new Char(127));else if(0>qd.indexOf(b))ob=b;else{var z=new Char(c.CODED);e.key=z;e.keyCode=b;hb[b]=z;e.keyPressed();ob=null;Ob();return mb(a)}}function Pb(a){if(null!==ob){var b=ob,z;z=a.which||a.keyCode;var c=a.shiftKey||a.ctrlKey||a.altKey||a.metaKey;switch(z){case 13:z=c?13:10;break;case 8:z=c?127:8}z=new Char(z);vb(b,z);return mb(a)}}function bc(a){a= +lb(a);var b=hb[a];b!==h&&(e.key=b,e.keyCode=a,e.keyReleased(),delete hb[a],Ob())}if(!(this instanceof M))throw"called Processing constructor as if it were a function: missing 'new'.";var S={},Qb=b===h&&k===h,S=Qb?p.createElement("canvas"):"string"===typeof b?p.getElementById(b):b;if(!("getContext"in S))throw"called Processing constructor without passing canvas element reference or id.";var wb=[],e=this;e.Char=e.Character=Char;a.withCommonFunctions(e);a.withMath(e);a.withProxyFunctions(e,function(a){return Array.prototype.slice.call(a, +1)});a.withTouch(e,S,Ia,p,c);m&&Object.keys(m).forEach(function(a){e[a]=m[a]});e.externals={canvas:S,context:h,sketch:h,window:l};e.name="Processing.js Instance";e.use3DContext=!1;e.focused=!1;e.breakShape=!1;e.glyphTable={};e.pmouseX=0;e.pmouseY=0;e.mouseX=0;e.mouseY=0;e.mouseButton=0;e.mouseScroll=0;e.mouseClicked=h;e.mouseDragged=h;e.mouseMoved=h;e.mousePressed=h;e.mouseReleased=h;e.mouseScrolled=h;e.mouseOver=h;e.mouseOut=h;e.touchStart=h;e.touchEnd=h;e.touchMove=h;e.touchCancel=h;e.key=h;e.keyCode= +h;e.keyPressed=r;e.keyReleased=r;e.keyTyped=r;e.draw=h;e.setup=h;e.__mousePressed=!1;e.__keyPressed=!1;e.__frameRate=60;e.frameCount=0;e.width=100;e.height=100;var g,da,ha,R=!0,ka=[1,1,1,1],La=4294967295,N=!0,C=!0,X=[0,0,0,1],ja=4278190080,ab=!0,ea=1,eb=!1,ra=!1,Da=!0,ma=0,qa=c.CORNER,la=c.CENTER,Gb=0,Eb=0,ub=0,jb=c.NORMAL_MODE_AUTO,tb=60,Kc=1E3/tb,od=S.style.cursor,aa=c.POLYGON,oc=0,pc=20,Lc=!1,kb=-3355444,qc=20,ia=255,xa=255,Ea=255,ya=255,cc=0,dc=0,Va=c.RGB,gb=null,sc=null,Oc=Date.now(),tc=Oc,ec= +0,Ba,Sb,fc,xb,yb,uc,vc,Fa={attributes:{},locations:{}},y,J,na,wc,xc,yc,gc,zc,Tb,Ac,Pc,Bc,Qc,hc,Rc,Sc,Tc,Uc=0,Vc=0,Wc=c.IMAGE,ua=!1,Cc,Dc,Ec,nb=c.LEFT,Wa=c.BASELINE,ic=c.MODEL,zb="Arial",Na=12,Xa=9,Ma=2,Aa=14,ba=PFont.get(zb,Na),Nc,Fc=null,Rb=!1,Xc,Yc=1E3,hb=[],ob=null,qd=[c.SHIFT,c.CONTROL,c.ALT,c.CAPSLK,c.PGUP,c.PGDN,c.END,c.HOME,c.LEFT,c.UP,c.RIGHT,c.DOWN,c.NUMLK,c.INSERT,c.F1,c.F2,c.F3,c.F4,c.F5,c.F6,c.F7,c.F8,c.F9,c.F10,c.F11,c.F12,c.META],O=0,jc=0,pb=0,Oa=[],Pa=[],Qa=[],Ub=new A(c.SINCOS_LENGTH), +Vb=new A(c.SINCOS_LENGTH),P,qb,Ra,K,fa,Ab,Bb,Wb,Ha,kc=!1,lc=60*(Math.PI/180),Gc=e.width/2,rb=e.height/2,sb=rb/Math.tan(lc/2),Zc=sb/10,$c=10*sb,ad=e.width/e.height,t=[],va=[],oa=0,Cb=!1,Db=!1,ib=!0,Xb=c.CORNER,bd=[],cd=new A([0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,0.5,-0.5,-0.5, +0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5]),dd=new A([0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5, +-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5]),rd=new A([0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0]),Hc=new A([0,0,0,0,1,0,1,1,0,1,0,0]),sd=new A([0,0,1,0,0,1,0,0,1,0,0,1]),td="varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec3 aNormal;attribute vec4 aColor;attribute vec2 aTexture;varying vec2 vTexture;uniform vec4 uColor;uniform bool uUsingMat;uniform vec3 uSpecular;uniform vec3 uMaterialEmissive;uniform vec3 uMaterialAmbient;uniform vec3 uMaterialSpecular;uniform float uShininess;uniform mat4 uModel;uniform mat4 uView;uniform mat4 uProjection;uniform mat4 uNormalTransform;uniform int uLightCount;uniform vec3 uFalloff;struct Light { int type; vec3 color; vec3 position; vec3 direction; float angle; vec3 halfVector; float concentration;};uniform Light uLights0;uniform Light uLights1;uniform Light uLights2;uniform Light uLights3;uniform Light uLights4;uniform Light uLights5;uniform Light uLights6;uniform Light uLights7;Light getLight(int index){ if(index == 0) return uLights0; if(index == 1) return uLights1; if(index == 2) return uLights2; if(index == 3) return uLights3; if(index == 4) return uLights4; if(index == 5) return uLights5; if(index == 6) return uLights6; return uLights7;}void AmbientLight( inout vec3 totalAmbient, in vec3 ecPos, in Light light ) { float d = length( light.position - ecPos ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d )); totalAmbient += light.color * attenuation;}void DirectionalLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float powerFactor = 0.0; float nDotVP = max(0.0, dot( vertNormal, normalize(-light.position) )); float nDotVH = max(0.0, dot( vertNormal, normalize(-light.position-normalize(ecPos) ))); if( nDotVP != 0.0 ){ powerFactor = pow( nDotVH, uShininess ); } col += light.color * nDotVP; spec += uSpecular * powerFactor;}void PointLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float powerFactor; vec3 VP = light.position - ecPos; float d = length( VP ); VP = normalize( VP ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d )); float nDotVP = max( 0.0, dot( vertNormal, VP )); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector )); if( nDotVP == 0.0 ) { powerFactor = 0.0; } else { powerFactor = pow( nDotHV, uShininess ); } spec += uSpecular * powerFactor * attenuation; col += light.color * nDotVP * attenuation;}void SpotLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float spotAttenuation; float powerFactor = 0.0; vec3 VP = light.position - ecPos; vec3 ldir = normalize( -light.direction ); float d = length( VP ); VP = normalize( VP ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d ) ); float spotDot = dot( VP, ldir );"+ +(/Windows/.test(f.userAgent)?" spotAttenuation = 1.0; ":" if( spotDot > cos( light.angle ) ) { spotAttenuation = pow( spotDot, light.concentration ); } else{ spotAttenuation = 0.0; } attenuation *= spotAttenuation;")+" float nDotVP = max( 0.0, dot( vertNormal, VP ) ); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector ) ); if( nDotVP != 0.0 ) { powerFactor = pow( nDotHV, uShininess ); } spec += uSpecular * powerFactor * attenuation; col += light.color * nDotVP * attenuation;}void main(void) { vec3 finalAmbient = vec3( 0.0 ); vec3 finalDiffuse = vec3( 0.0 ); vec3 finalSpecular = vec3( 0.0 ); vec4 col = uColor; if ( uColor[0] == -1.0 ){ col = aColor; } vec3 norm = normalize(vec3( uNormalTransform * vec4( aNormal, 0.0 ) )); vec4 ecPos4 = uView * uModel * vec4(aVertex, 1.0); vec3 ecPos = (vec3(ecPos4))/ecPos4.w; if( uLightCount == 0 ) { vFrontColor = col + vec4(uMaterialSpecular, 1.0); } else { for( int i = 0; i < 8; i++ ) { Light l = getLight(i); if( i >= uLightCount ){ break; } if( l.type == 0 ) { AmbientLight( finalAmbient, ecPos, l ); } else if( l.type == 1 ) { DirectionalLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else if( l.type == 2 ) { PointLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else { SpotLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } } if( uUsingMat == false ) { vFrontColor = vec4( vec3( col ) * finalAmbient + vec3( col ) * finalDiffuse + vec3( col ) * finalSpecular, col[3] ); } else{ vFrontColor = vec4( uMaterialEmissive + (vec3(col) * uMaterialAmbient * finalAmbient ) + (vec3(col) * finalDiffuse) + (uMaterialSpecular * finalSpecular), col[3] ); } } vTexture.xy = aTexture.xy; gl_Position = uProjection * uView * uModel * vec4( aVertex, 1.0 );}", +Ic=function(a,b,z){var c=a.createShader(a.VERTEX_SHADER);a.shaderSource(c,b);a.compileShader(c);if(!a.getShaderParameter(c,a.COMPILE_STATUS))throw a.getShaderInfoLog(c);b=a.createShader(a.FRAGMENT_SHADER);a.shaderSource(b,z);a.compileShader(b);if(!a.getShaderParameter(b,a.COMPILE_STATUS))throw a.getShaderInfoLog(b);z=a.createProgram();a.attachShader(z,c);a.attachShader(z,b);a.linkProgram(z);if(!a.getProgramParameter(z,a.LINK_STATUS))throw"Error linking shaders.";return z},ed=function(a,b,z,c,e){return{x:a, +y:b,w:z,h:c}},mc=ed,ud=function(a,b,z,c,e){return{x:a,y:b,w:e?z:z-a,h:e?c:c-b}},vd=function(a,b,z,c,e){return{x:a-z/2,y:b-c/2,w:z,h:c}},W=function(){},E=function(){},B=function(){},F=function(){};E.prototype=new W;E.prototype.constructor=E;B.prototype=new W;B.prototype.constructor=B;F.prototype=new W;F.prototype.constructor=F;W.prototype.a3DOnlyFunction=r;e.shape=function(a,b,z,$,d){1<=arguments.length&&null!==arguments[0]&&a.isVisible()&&(e.pushMatrix(),Xb===c.CENTER?5===arguments.length?(e.translate(b- +$/2,z-d/2),e.scale($/a.getWidth(),d/a.getHeight())):3===arguments.length?e.translate(b-a.getWidth()/2,-a.getHeight()/2):e.translate(-a.getWidth()/2,-a.getHeight()/2):Xb===c.CORNER?5===arguments.length?(e.translate(b,z),e.scale($/a.getWidth(),d/a.getHeight())):3===arguments.length&&e.translate(b,z):Xb===c.CORNERS&&(5===arguments.length?($-=b,d-=z,e.translate(b,z),e.scale($/a.getWidth(),d/a.getHeight())):3===arguments.length&&e.translate(b,z)),a.draw(e),(1===arguments.length&&Xb===c.CENTER||1c.MIN_INT){var b=this.elements[0],z=this.elements[1],e=this.elements[2],d=this.elements[3],f=this.elements[4],g=this.elements[5];this.elements[0]=f/a;this.elements[3]=-d/a;this.elements[1]=-z/a;this.elements[4]=b/a;this.elements[2]=(z*g-f*e)/a;this.elements[5]=(d*e-b*g)/a;return!0}return!1},scale:function(a,b){a&&!b&&(b=a);a&& +b&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[3]*=a,this.elements[4]*=b)},invScale:function(a,b){a&&!b&&(b=a);this.scale(1/a,1/b)},apply:function(){var a;1===arguments.length&&arguments[0]instanceof Ya?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,this.elements[2],0,0,this.elements[5]],z=0,c=0;2>c;c++)for(var e=0;3>e;e++,z++)b[z]+=this.elements[3*c+0]*a[e+0]+this.elements[3* +c+1]*a[e+3];this.elements=b.slice()},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof Ya?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);var b=[0,0,a[2],0,0,a[5]];b[2]=a[2]+this.elements[2]*a[0]+this.elements[5]*a[1];b[5]=a[5]+this.elements[2]*a[3]+this.elements[5]*a[4];b[0]=this.elements[0]*a[0]+this.elements[3]*a[1];b[3]=this.elements[0]*a[3]+this.elements[3]*a[4];b[1]= +this.elements[1]*a[0]+this.elements[4]*a[1];b[4]=this.elements[1]*a[3]+this.elements[4]*a[4];this.elements=b.slice()},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);var c=this.elements[0],e=this.elements[1];this.elements[0]=b*c+a*e;this.elements[1]=-a*c+b*e;c=this.elements[3];e=this.elements[4];this.elements[3]=b*c+a*e;this.elements[4]=-a*c+b*e},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a-Math.PI)},print:function(){var a=fd(this.elements),a=""+e.nfs(this.elements[0], +a,4)+" "+e.nfs(this.elements[1],a,4)+" "+e.nfs(this.elements[2],a,4)+"\n"+e.nfs(this.elements[3],a,4)+" "+e.nfs(this.elements[4],a,4)+" "+e.nfs(this.elements[5],a,4)+"\n\n";e.println(a)}};var I=e.PMatrix3D=function(){this.reset()};I.prototype={set:function(){16===arguments.length?this.elements=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof I?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())}, +get:function(){var a=new I;a.set(this.elements);return a},reset:function(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},array:function(){return this.elements.slice()},translate:function(a,b,c){c===h&&(c=0);this.elements[3]+=a*this.elements[0]+b*this.elements[1]+c*this.elements[2];this.elements[7]+=a*this.elements[4]+b*this.elements[5]+c*this.elements[6];this.elements[11]+=a*this.elements[8]+b*this.elements[9]+c*this.elements[10];this.elements[15]+=a*this.elements[12]+b*this.elements[13]+c*this.elements[14]}, +transpose:function(){var a=this.elements[4];this.elements[4]=this.elements[1];this.elements[1]=a;a=this.elements[8];this.elements[8]=this.elements[2];this.elements[2]=a;a=this.elements[6];this.elements[6]=this.elements[9];this.elements[9]=a;a=this.elements[3];this.elements[3]=this.elements[12];this.elements[12]=a;a=this.elements[7];this.elements[7]=this.elements[13];this.elements[13]=a;a=this.elements[11];this.elements[11]=this.elements[14];this.elements[14]=a},mult:function(a,b){var c,e,d,f;a instanceof +PVector?(c=a.x,e=a.y,d=a.z,f=1,b||(b=new PVector)):a instanceof Array&&(c=a[0],e=a[1],d=a[2],f=a[3]||1,!b||3!==b.length&&4!==b.length)&&(b=[0,0,0]);b instanceof Array&&(3===b.length?(b[0]=this.elements[0]*c+this.elements[1]*e+this.elements[2]*d+this.elements[3],b[1]=this.elements[4]*c+this.elements[5]*e+this.elements[6]*d+this.elements[7],b[2]=this.elements[8]*c+this.elements[9]*e+this.elements[10]*d+this.elements[11]):4===b.length&&(b[0]=this.elements[0]*c+this.elements[1]*e+this.elements[2]*d+this.elements[3]* +f,b[1]=this.elements[4]*c+this.elements[5]*e+this.elements[6]*d+this.elements[7]*f,b[2]=this.elements[8]*c+this.elements[9]*e+this.elements[10]*d+this.elements[11]*f,b[3]=this.elements[12]*c+this.elements[13]*e+this.elements[14]*d+this.elements[15]*f));b instanceof PVector&&(b.x=this.elements[0]*c+this.elements[1]*e+this.elements[2]*d+this.elements[3],b.y=this.elements[4]*c+this.elements[5]*e+this.elements[6]*d+this.elements[7],b.z=this.elements[8]*c+this.elements[9]*e+this.elements[10]*d+this.elements[11]); +return b},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof I?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,e=0;4>e;e++)for(var d=0;4>d;d++,c++)b[c]+=this.elements[d+0]*a[4*e+0]+this.elements[d+4]*a[4*e+1]+this.elements[d+8]*a[4*e+2]+this.elements[d+12]*a[4*e+3];this.elements=b.slice()},apply:function(){var a;1===arguments.length&& +arguments[0]instanceof I?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,e=0;4>e;e++)for(var d=0;4>d;d++,c++)b[c]+=this.elements[4*e+0]*a[d+0]+this.elements[4*e+1]*a[d+4]+this.elements[4*e+2]*a[d+8]+this.elements[4*e+3]*a[d+12];this.elements=b.slice()},rotate:function(a,b,c,d){if(4>arguments.length)this.rotateZ(a);else{var f=new PVector(b,c,d),g= +f.mag();if(0!==g){1!=g&&(f.normalize(),b=f.x,c=f.y,d=f.z);var f=e.cos(a),g=e.sin(a),h=1-f;this.apply(h*b*b+f,h*b*c-g*d,h*b*d+g*c,0,h*b*c+g*d,h*c*c+f,h*c*d-g*b,0,h*b*d-g*c,h*c*d+g*b,h*d*d+f,0,0,0,0,1)}}},invApply:function(){Wb===h&&(Wb=new I);var a=arguments;Wb.set(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);if(!Wb.invert())return!1;this.preApply(Wb);return!0},rotateX:function(a){var b=e.cos(a);a=e.sin(a);this.apply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},rotateY:function(a){var b= +e.cos(a);a=e.sin(a);this.apply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},rotateZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},scale:function(a,b,c){!a||b||c?a&&(b&&!c)&&(c=1):b=c=a;a&&(b&&c)&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[2]*=c,this.elements[4]*=a,this.elements[5]*=b,this.elements[6]*=c,this.elements[8]*=a,this.elements[9]*=b,this.elements[10]*=c,this.elements[12]*=a,this.elements[13]*=b,this.elements[14]*=c)},skewX:function(a){a= +Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},skewY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},shearX:function(a){a=Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},shearY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},multX:function(a,b,c,e){return c?e?this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]*e:this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]:this.elements[0]*a+this.elements[1]* +b+this.elements[3]},multY:function(a,b,c,e){return c?e?this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]*e:this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]:this.elements[4]*a+this.elements[5]*b+this.elements[7]},multZ:function(a,b,c,e){return e?this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]*e:this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]},multW:function(a,b,c,e){return e?this.elements[12]*a+ +this.elements[13]*b+this.elements[14]*c+this.elements[15]*e:this.elements[12]*a+this.elements[13]*b+this.elements[14]*c+this.elements[15]},invert:function(){var a=this.elements[0]*this.elements[5]-this.elements[1]*this.elements[4],b=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4],c=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4],e=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5],d=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5], +f=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6],g=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12],h=this.elements[8]*this.elements[14]-this.elements[10]*this.elements[12],s=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],k=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],l=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13],n=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14], +p=a*n-b*l+c*k+e*s-d*h+f*g;if(1E-9>=Math.abs(p))return!1;var m=[];m[0]=+this.elements[5]*n-this.elements[6]*l+this.elements[7]*k;m[4]=-this.elements[4]*n+this.elements[6]*s-this.elements[7]*h;m[8]=+this.elements[4]*l-this.elements[5]*s+this.elements[7]*g;m[12]=-this.elements[4]*k+this.elements[5]*h-this.elements[6]*g;m[1]=-this.elements[1]*n+this.elements[2]*l-this.elements[3]*k;m[5]=+this.elements[0]*n-this.elements[2]*s+this.elements[3]*h;m[9]=-this.elements[0]*l+this.elements[1]*s-this.elements[3]* +g;m[13]=+this.elements[0]*k-this.elements[1]*h+this.elements[2]*g;m[2]=+this.elements[13]*f-this.elements[14]*d+this.elements[15]*e;m[6]=-this.elements[12]*f+this.elements[14]*c-this.elements[15]*b;m[10]=+this.elements[12]*d-this.elements[13]*c+this.elements[15]*a;m[14]=-this.elements[12]*e+this.elements[13]*b-this.elements[14]*a;m[3]=-this.elements[9]*f+this.elements[10]*d-this.elements[11]*e;m[7]=+this.elements[8]*f-this.elements[10]*c+this.elements[11]*b;m[11]=-this.elements[8]*d+this.elements[9]* +c-this.elements[11]*a;m[15]=+this.elements[8]*e-this.elements[9]*b+this.elements[10]*a;a=1/p;m[0]*=a;m[1]*=a;m[2]*=a;m[3]*=a;m[4]*=a;m[5]*=a;m[6]*=a;m[7]*=a;m[8]*=a;m[9]*=a;m[10]*=a;m[11]*=a;m[12]*=a;m[13]*=a;m[14]*=a;m[15]*=a;this.elements=m.slice();return!0},toString:function(){for(var a="",b=0;15>b;b++)a+=this.elements[b]+", ";return a+=this.elements[15]},print:function(){var a=fd(this.elements),a=""+e.nfs(this.elements[0],a,4)+" "+e.nfs(this.elements[1],a,4)+" "+e.nfs(this.elements[2],a,4)+" "+ +e.nfs(this.elements[3],a,4)+"\n"+e.nfs(this.elements[4],a,4)+" "+e.nfs(this.elements[5],a,4)+" "+e.nfs(this.elements[6],a,4)+" "+e.nfs(this.elements[7],a,4)+"\n"+e.nfs(this.elements[8],a,4)+" "+e.nfs(this.elements[9],a,4)+" "+e.nfs(this.elements[10],a,4)+" "+e.nfs(this.elements[11],a,4)+"\n"+e.nfs(this.elements[12],a,4)+" "+e.nfs(this.elements[13],a,4)+" "+e.nfs(this.elements[14],a,4)+" "+e.nfs(this.elements[15],a,4)+"\n\n";e.println(a)},invTranslate:function(a,b,c){this.preApply(1,0,0,-a,0,1,0,-b, +0,0,1,-c,0,0,0,1)},invRotateX:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},invRotateY:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},invRotateZ:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},invScale:function(a,b,c){this.preApply([1/a,0,0,0,0,1/b,0,0,0,0,1/c,0,0,0,0,1])}};var Za=e.PMatrixStack=function(){this.matrixStack=[]};Za.prototype.load=function(){var a= +ha.$newPMatrix();1===arguments.length?a.set(arguments[0]):a.set(arguments);this.matrixStack.push(a)};E.prototype.$newPMatrix=function(){return new Ya};B.prototype.$newPMatrix=function(){return new I};Za.prototype.push=function(){this.matrixStack.push(this.peek())};Za.prototype.pop=function(){return this.matrixStack.pop()};Za.prototype.peek=function(){var a=ha.$newPMatrix();a.set(this.matrixStack[this.matrixStack.length-1]);return a};Za.prototype.mult=function(a){this.matrixStack[this.matrixStack.length- +1].apply(a)};e.split=function(a,b){return a.split(b)};e.splitTokens=function(a,b){if(b===h)return a.split(/\s+/g);var c=b.split(/()/g),e="",d=a.length,f,g,k=[];for(f=0;f>8)};e.peg=function(a){return 0>a?0:255>>24)+L,255)<<24;c+=($-c)*L>>8;e+=(h-e)*L>>8;L=d+((pd-d)*L>>8);return b|(0>c?0:255e?0:255L?0:255>>24,h=a&e,k=a&d,w=a&f,l=L&e,m=L&d,n=L&f;return g(((a&b)>>>24)+c,255)<<24|h+((l-h)*c>>8)&e|k+((m-k)*c>>8)&d|w+((n-w)*c>>8)&f},add:function(a,L){var c=(L&b)>>>24;return g(((a& +b)>>>24)+c,255)<<24|g((a&e)+((L&e)>>8)*c,e)&e|g((a&d)+((L&d)>>8)*c,d)&d|g((a&f)+((L&f)*c>>8),f)},subtract:function(a,L){var c=(L&b)>>>24;return g(((a&b)>>>24)+c,255)<<24|h((a&e)-((L&e)>>8)*c,d)&e|h((a&d)-((L&d)>>8)*c,f)&d|h((a&f)-((L&f)*c>>8),0)},lightest:function(a,L){var c=(L&b)>>>24;return g(((a&b)>>>24)+c,255)<<24|h(a&e,((L&e)>>8)*c)&e|h(a&d,((L&d)>>8)*c)&d|h(a&f,(L&f)*c>>8)},darkest:function(a,L){var c=(L&b)>>>24,h=a&e,k=a&d,w=a&f,l=g(a&e,((L&e)>>8)*c),m=g(a&d,((L&d)>>8)*c),n=g(a&f,(L&f)*c>> +8);return g(((a&b)>>>24)+c,255)<<24|h+((l-h)*c>>8)&e|k+((m-k)*c>>8)&d|w+((n-w)*c>>8)&f},difference:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,h>V?h-V:V-h,k>l?k-l:l-k,w>m?w-m:m-w)},exclusion:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,h+V-(h*V>>7),k+l-(k*l>>7),w+m-(w*m>>7))},multiply:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c, +(g&b)>>>24,h,k,w,V,l,m,h*V>>8,k*l>>8,w*m>>8)},screen:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,255-((255-h)*(255-V)>>8),255-((255-k)*(255-l)>>8),255-((255-w)*(255-m)>>8))},hard_light:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,128>V?h*V>>7:255-((255-h)*(255-V)>>7),128>l?k*l>>7:255-((255-k)*(255-l)>>7),128>m?w*m>>7:255-((255-w)*(255-m)>>7))},soft_light:function(c,g){var h= +(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,(h*V>>7)+(h*h>>8)-(h*h*V>>15),(k*l>>7)+(k*k>>8)-(k*k*l>>15),(w*m>>7)+(w*w>>8)-(w*w*m>>15))},overlay:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,128>h?h*V>>7:255-((255-h)*(255-V)>>7),128>k?k*l>>7:255-((255-k)*(255-l)>>7),128>w?w*m>>7:255-((255-w)*(255-m)>>7))},dodge:function(c,g){var h=(g&b)>>>24,k=(c&e)>>16,w=(c&d)>>8,V=c&f,l=(g&e)>>16,m=(g&d)>> +8,n=g&f,p=255;255!==l&&(p=(k<<8)/(255-l),p=0>p?0:255r?0:255t?0:255>>24,k=(c&e)>>16,w=(c&d)>>8,V=c&f,l=(g&e)>>16,m=(g&d)>>8,n=g&f,p=0;0!==l&&(p=(255-k<<8)/l,p=255-(0>p?0:255r?0:255t?0:255b?0:b)<<24&c.ALPHA_MASK)):a=Va===c.RGB?ta(a,a,a,b):Va===c.HSB?ta(0,0,a/xa*ya,b):void 0,a):"number"===typeof a?$b(a):ta(xa,Ea,ya,ia)};e.color.toString=function(a){return"rgba("+((a&c.RED_MASK)>>>16)+","+((a&c.GREEN_MASK)>>>8)+","+(a&c.BLUE_MASK)+","+((a&c.ALPHA_MASK)>>>24)/255+")"};e.color.toInt= +function(a,b,e,d){return d<<24&c.ALPHA_MASK|a<<16&c.RED_MASK|b<<8&c.GREEN_MASK|e&c.BLUE_MASK};e.color.toArray=function(a){return[(a&c.RED_MASK)>>>16,(a&c.GREEN_MASK)>>>8,a&c.BLUE_MASK,(a&c.ALPHA_MASK)>>>24]};e.color.toGLArray=function(a){return[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255,((a&c.ALPHA_MASK)>>>24)/255]};e.color.toRGB=function(a,b,c){a=a>xa?xa:a;b=b>Ea?Ea:b;c=c>ya?ya:c;a=360*(a/xa);b=100*(b/Ea);c=100*(c/ya);var e=Math.round(255*(c/100));if(0===b)return[e, +e,e];a%=360;var d=a%60,f=Math.round(255*(c*(100-b)/1E4)),g=Math.round(255*(c*(6E3-b*d)/6E5));b=Math.round(255*(c*(6E3-b*(60-d))/6E5));switch(Math.floor(a/60)){case 0:return[e,b,f];case 1:return[g,e,f];case 2:return[f,e,b];case 3:return[f,g,e];case 4:return[b,f,e];case 5:return[e,f,g]}};e.brightness=function(a){return bb(a)[2]};e.saturation=function(a){return bb(a)[1]};e.hue=function(a){return bb(a)[0]};e.red=function(a){return((a&c.RED_MASK)>>>16)/255*xa};e.green=function(a){return((a&c.GREEN_MASK)>>> +8)/255*Ea};e.blue=function(a){return(a&c.BLUE_MASK)/255*ya};e.alpha=function(a){return((a&c.ALPHA_MASK)>>>24)/255*ia};e.lerpColor=function(a,b,d){var f,g,h,k,l,s;a=e.color(a);b=e.color(b);if(Va===c.HSB)return h=bb(a),a=((a&c.ALPHA_MASK)>>>24)/ia,g=bb(b),b=((b&c.ALPHA_MASK)>>>24)/ia,s=e.lerp(h[0],g[0],d),f=e.lerp(h[1],g[1],d),h=e.lerp(h[2],g[2],d),h=e.color.toRGB(s,f,h),d=e.lerp(a,b,d)*ia,d<<24&c.ALPHA_MASK|h[0]<<16&c.RED_MASK|h[1]<<8&c.GREEN_MASK|h[2]&c.BLUE_MASK;f=(a&c.RED_MASK)>>>16;g=(a&c.GREEN_MASK)>>> +8;h=a&c.BLUE_MASK;a=((a&c.ALPHA_MASK)>>>24)/ia;k=(b&c.RED_MASK)>>>16;l=(b&c.GREEN_MASK)>>>8;s=b&c.BLUE_MASK;b=((b&c.ALPHA_MASK)>>>24)/ia;f=e.lerp(f,k,d)|0;g=e.lerp(g,l,d)|0;h=e.lerp(h,s,d)|0;d=e.lerp(a,b,d)*ia;return d<<24&c.ALPHA_MASK|f<<16&c.RED_MASK|g<<8&c.GREEN_MASK|h&c.BLUE_MASK};e.colorMode=function(){Va=arguments[0];1b;b++)a[b]=0;a[10]=a[15]=1;W.prototype.applyMatrix.apply(this,a)};e.rotateX=function(a){K.rotateX(a);fa.invRotateX(a)}; +E.prototype.rotateZ=function(){throw"rotateZ() is not supported in 2D mode. Use rotate(float) instead.";};B.prototype.rotateZ=function(a){K.rotateZ(a);fa.invRotateZ(a)};e.rotateY=function(a){K.rotateY(a);fa.invRotateY(a)};E.prototype.rotate=function(a){K.rotateZ(a);fa.invRotateZ(a);g.rotate(a)};B.prototype.rotate=function(a){4>arguments.length?e.rotateZ(a):(K.rotate(a,arguments[1],arguments[2],arguments[3]),fa.rotate(-a,arguments[1],arguments[2],arguments[3]))};E.prototype.shearX=function(a){K.shearX(a); +g.transform(1,0,a,1,0,0)};B.prototype.shearX=function(a){K.shearX(a)};E.prototype.shearY=function(a){K.shearY(a);g.transform(1,a,0,1,0,0)};B.prototype.shearY=function(a){K.shearY(a)};e.pushStyle=function(){g.save();e.pushMatrix();bd.push({doFill:R,currentFillColor:La,doStroke:C,currentStrokeColor:ja,curTint:gb,curRectMode:qa,curColorMode:Va,colorModeX:xa,colorModeZ:ya,colorModeY:Ea,colorModeA:ia,curTextFont:ba,horizontalTextAlignment:nb,verticalTextAlignment:Wa,textMode:ic,curFontName:zb,curTextSize:Na, +curTextAscent:Xa,curTextDescent:Ma,curTextLeading:Aa})};e.popStyle=function(){var a=bd.pop();if(a)Sa(),e.popMatrix(),R=a.doFill,La=a.currentFillColor,C=a.doStroke,ja=a.currentStrokeColor,gb=a.curTint,qa=a.curRectMode,Va=a.curColorMode,xa=a.colorModeX,ya=a.colorModeZ,Ea=a.colorModeY,ia=a.colorModeA,ba=a.curTextFont,zb=a.curFontName,Na=a.curTextSize,nb=a.horizontalTextAlignment,Wa=a.verticalTextAlignment,ic=a.textMode,Xa=a.curTextAscent,Ma=a.curTextDescent,Aa=a.curTextLeading;else throw"Too many popStyle() without enough pushStyle()"; +};e.year=function(){return(new Date).getFullYear()};e.month=function(){return(new Date).getMonth()+1};e.day=function(){return(new Date).getDate()};e.hour=function(){return(new Date).getHours()};e.minute=function(){return(new Date).getMinutes()};e.second=function(){return(new Date).getSeconds()};e.millis=function(){return Date.now()-Oc};E.prototype.redraw=function(){cb();g.lineWidth=ea;var a=e.pmouseX,b=e.pmouseY;e.pmouseX=cc;e.pmouseY=dc;g.save();e.draw();Sa();cc=e.mouseX;dc=e.mouseY;e.pmouseX=a; +e.pmouseY=b};B.prototype.redraw=function(){cb();var a=e.pmouseX,b=e.pmouseY;e.pmouseX=cc;e.pmouseY=dc;g.clear(g.DEPTH_BUFFER_BIT);Fa={attributes:{},locations:{}};e.noLights();e.lightFalloff(1,0,0);e.shininess(1);e.ambient(255,255,255);e.specular(0,0,0);e.emissive(0,0,0);e.camera();e.draw();cc=e.mouseX;dc=e.mouseY;e.pmouseX=a;e.pmouseY=b};e.noLoop=function(){eb=Da=!1;clearInterval(ma);da.onPause()};e.loop=function(){eb||(tc=Date.now(),ec=0,ma=l.setInterval(function(){try{da.onFrameStart(),e.redraw(), +da.onFrameEnd()}catch(a){throw l.clearInterval(ma),a;}},Kc),eb=Da=!0,da.onLoop())};e.frameRate=function(a){tb=a;Kc=1E3/tb;Da&&(e.noLoop(),e.loop())};e.exit=function(){l.clearInterval(ma);var a=e.externals.canvas.id;q.splice(Zb[a],1);delete Zb[a];delete S.onmousedown;for(var b in M.lib)M.lib.hasOwnProperty(b)&&M.lib[b].hasOwnProperty("detach")&&M.lib[b].detach(e);for(a=wb.length;a--;){var c=wb[a];b=c.elem;var d=c.type,c=c.fn;b.removeEventListener?b.removeEventListener(d,c,!1):b.detachEvent&&b.detachEvent("on"+ +d,c)}da.onExit()};e.cursor=function(){if(1b||0>c||c>=a.height||b>=a.width)throw"x and y must be non-negative and less than the dimensions of the image";}else b=a.width>>>1,c=a.height>>>1;a='url("'+a.toDataURL()+'") '+b+" "+c+", default";S.style.cursor=a}else S.style.cursor=1===arguments.length?arguments[0]:od};e.noCursor=function(){S.style.cursor= +c.NOCURSOR};e.link=function(a,b){b!==h?l.open(a,b):l.location=a};e.beginDraw=r;e.endDraw=r;E.prototype.toImageData=function(a,b,c,d){a=a!==h?a:0;b=b!==h?b:0;c=c!==h?c:e.width;d=d!==h?d:e.height;return g.getImageData(a,b,c,d)};B.prototype.toImageData=function(a,b,c,d){a=a!==h?a:0;b=b!==h?b:0;c=c!==h?c:e.width;d=d!==h?d:e.height;var f=p.createElement("canvas").getContext("2d").createImageData(c,d),k=new ga(4*c*d);g.readPixels(a,b,c,d,g.RGBA,g.UNSIGNED_BYTE,k);a=0;b=k.length;for(var w=f.data;a>>c-1&1);)c--;for(var e="";0>>--c&1?"1":"0";return e};e.unbinary=function(a){for(var b=a.length-1,c=1,e=0;0<=b;){var d=a[b--];if("0"!==d&&"1"!==d)throw"the value passed into unbinary was not an 8 bit binary number";"1"===d&&(e+=c);c<<=1}return e};e.hex=function(a,b){1===arguments.length&&(b=a instanceof Char?4: +8);var c=a,e=b,e=e===h||null===e?e=8:e;0>c&&(c=4294967295+c+1);for(c=Number(c).toString(16).toUpperCase();c.length=e&&(c=c.substring(c.length-e,c.length));return c};e.unhex=function(a){if(a instanceof Array){for(var b=[],c=0;c 0.5){ discard; } } if(uIsDrawingText == 1){ float alpha = texture2D(uSampler, vTextureCoord).a; gl_FragColor = vec4(vFrontColor.rgb * alpha, alpha); } else{ gl_FragColor = vFrontColor; }}"); +na=Ic(g,"varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec4 aColor;uniform mat4 uView;uniform mat4 uProjection;uniform float uPointSize;void main(void) { vFrontColor = aColor; gl_PointSize = uPointSize; gl_Position = uProjection * uView * vec4(aVertex, 1.0);}","#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;uniform bool uSmooth;void main(void){ if(uSmooth == true){ float dist = distance(gl_PointCoord, vec2(0.5)); if(dist > 0.5){ discard; } } gl_FragColor = vFrontColor;}"); +e.strokeWeight(1);y=Ic(g,td,"#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;uniform sampler2D uSampler;uniform bool uUsingTexture;varying vec2 vTexture;void main(void){ if( uUsingTexture ){ gl_FragColor = vec4(texture2D(uSampler, vTexture.xy)) * vFrontColor; } else{ gl_FragColor = vFrontColor; }}");g.useProgram(y);Y("usingTexture3d",y,"usingTexture",ua);e.lightFalloff(1,0,0);e.shininess(1);e.ambient(255,255,255);e.specular(0,0,0);e.emissive(0,0,0);wc=g.createBuffer(); +g.bindBuffer(g.ARRAY_BUFFER,wc);g.bufferData(g.ARRAY_BUFFER,cd,g.STATIC_DRAW);xc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,xc);g.bufferData(g.ARRAY_BUFFER,rd,g.STATIC_DRAW);yc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,yc);g.bufferData(g.ARRAY_BUFFER,dd,g.STATIC_DRAW);gc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,gc);g.bufferData(g.ARRAY_BUFFER,Hc,g.STATIC_DRAW);zc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,zc);g.bufferData(g.ARRAY_BUFFER,sd,g.STATIC_DRAW);Tb=g.createBuffer();Ac=g.createBuffer(); +Pc=g.createBuffer();Bc=g.createBuffer();Qc=g.createBuffer();Rc=g.createBuffer();hc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,hc);g.bufferData(g.ARRAY_BUFFER,new A([0,0,0]),g.STATIC_DRAW);Cc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,Cc);g.bufferData(g.ARRAY_BUFFER,new A([1,1,0,-1,1,0,-1,-1,0,1,-1,0]),g.STATIC_DRAW);Dc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,Dc);g.bufferData(g.ARRAY_BUFFER,new A([0,0,1,0,1,1,0,1]),g.STATIC_DRAW);Ec=g.createBuffer();g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,Ec); +g.bufferData(g.ELEMENT_ARRAY_BUFFER,new v([0,1,2,2,3,0]),g.STATIC_DRAW);qb=new I;Ra=new I;K=new I;fa=new I;Ha=new I;e.camera();e.perspective();Ab=new Za;Bb=new Za;Sb=new I;fc=new I;xb=new I;yb=new I;uc=new I;vc=new I;vc.set(-1,3,-3,1,3,-6,3,0,-3,3,0,0,1,0,0,0);W.prototype.size.apply(this,arguments)}}();E.prototype.ambientLight=W.prototype.a3DOnlyFunction;B.prototype.ambientLight=function(a,b,e,d,f,h){if(O===c.MAX_LIGHTS)throw"can only create "+c.MAX_LIGHTS+" lights";d=new PVector(d,f,h);f=new I;f.scale(1, +-1,1);f.apply(K.array());f.mult(d,d);a=ta(a,b,e,0);a=[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255];g.useProgram(y);T("uLights.color.3d."+O,y,"uLights"+O+".color",a);T("uLights.position.3d."+O,y,"uLights"+O+".position",d.array());Y("uLights.type.3d."+O,y,"uLights"+O+".type",0);Y("uLightCount3d",y,"uLightCount",++O)};E.prototype.directionalLight=W.prototype.a3DOnlyFunction;B.prototype.directionalLight=function(a,b,e,d,f,h){if(O===c.MAX_LIGHTS)throw"can only create "+c.MAX_LIGHTS+ +" lights";g.useProgram(y);var k=new I;k.scale(1,-1,1);k.apply(K.array());k=k.array();d=[k[0]*d+k[4]*f+k[8]*h,k[1]*d+k[5]*f+k[9]*h,k[2]*d+k[6]*f+k[10]*h];a=ta(a,b,e,0);T("uLights.color.3d."+O,y,"uLights"+O+".color",[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255]);T("uLights.position.3d."+O,y,"uLights"+O+".position",d);Y("uLights.type.3d."+O,y,"uLights"+O+".type",1);Y("uLightCount3d",y,"uLightCount",++O)};E.prototype.lightFalloff=W.prototype.a3DOnlyFunction;B.prototype.lightFalloff= +function(a,b,c){g.useProgram(y);T("uFalloff3d",y,"uFalloff",[a,b,c])};E.prototype.lightSpecular=W.prototype.a3DOnlyFunction;B.prototype.lightSpecular=function(a,b,e){a=ta(a,b,e,0);a=[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255];g.useProgram(y);T("uSpecular3d",y,"uSpecular",a)};e.lights=function(){e.ambientLight(128,128,128);e.directionalLight(128,128,128,0,0,-1);e.lightFalloff(1,0,0);e.lightSpecular(0,0,0)};E.prototype.pointLight=W.prototype.a3DOnlyFunction;B.prototype.pointLight= +function(a,b,e,d,f,h){if(O===c.MAX_LIGHTS)throw"can only create "+c.MAX_LIGHTS+" lights";d=new PVector(d,f,h);f=new I;f.scale(1,-1,1);f.apply(K.array());f.mult(d,d);a=ta(a,b,e,0);a=[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255];g.useProgram(y);T("uLights.color.3d."+O,y,"uLights"+O+".color",a);T("uLights.position.3d."+O,y,"uLights"+O+".position",d.array());Y("uLights.type.3d."+O,y,"uLights"+O+".type",2);Y("uLightCount3d",y,"uLightCount",++O)};E.prototype.noLights=W.prototype.a3DOnlyFunction; +B.prototype.noLights=function(){O=0;g.useProgram(y);Y("uLightCount3d",y,"uLightCount",O)};E.prototype.spotLight=W.prototype.a3DOnlyFunction;B.prototype.spotLight=function(a,b,e,d,f,h,k,l,s,m,n){if(O===c.MAX_LIGHTS)throw"can only create "+c.MAX_LIGHTS+" lights";g.useProgram(y);d=new PVector(d,f,h);f=new I;f.scale(1,-1,1);f.apply(K.array());f.mult(d,d);f=f.array();k=[f[0]*k+f[4]*l+f[8]*s,f[1]*k+f[5]*l+f[9]*s,f[2]*k+f[6]*l+f[10]*s];a=ta(a,b,e,0);T("uLights.color.3d."+O,y,"uLights"+O+".color",[((a&c.RED_MASK)>>> +16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255]);T("uLights.position.3d."+O,y,"uLights"+O+".position",d.array());T("uLights.direction.3d."+O,y,"uLights"+O+".direction",k);T("uLights.concentration.3d."+O,y,"uLights"+O+".concentration",n);T("uLights.angle.3d."+O,y,"uLights"+O+".angle",m);Y("uLights.type.3d."+O,y,"uLights"+O+".type",3);Y("uLightCount3d",y,"uLightCount",++O)};E.prototype.beginCamera=function(){throw"beginCamera() is not available in 2D mode";};B.prototype.beginCamera=function(){if(kc)throw"You cannot call beginCamera() again before calling endCamera()"; +kc=!0;K=Ra;fa=qb};E.prototype.endCamera=function(){throw"endCamera() is not available in 2D mode";};B.prototype.endCamera=function(){if(!kc)throw"You cannot call endCamera() before calling beginCamera()";K.set(qb);fa.set(Ra);kc=!1};e.camera=function(a,b,c,d,f,g,k,l,s){a===h&&(Gc=e.width/2,rb=e.height/2,sb=rb/Math.tan(lc/2),a=Gc,b=rb,c=sb,d=Gc,f=rb,k=g=0,l=1,s=0);d=new PVector(a-d,b-f,c-g);var m=new PVector(k,l,s);d.normalize();s=PVector.cross(m,d);m=PVector.cross(d,s);s.normalize();m.normalize(); +k=s.x;l=s.y;s=s.z;f=m.x;g=m.y;var m=m.z,n=d.x,p=d.y;d=d.z;qb.set(k,l,s,0,f,g,m,0,n,p,d,0,0,0,0,1);qb.translate(-a,-b,-c);Ra.reset();Ra.invApply(k,l,s,0,f,g,m,0,n,p,d,0,0,0,0,1);Ra.translate(a,b,c);K.set(qb);fa.set(Ra)};e.perspective=function(a,b,c,d){0===arguments.length&&(rb=S.height/2,sb=rb/Math.tan(lc/2),Zc=sb/10,$c=10*sb,ad=e.width/e.height,a=lc,b=ad,c=Zc,d=$c);var f,g;f=c*Math.tan(a/2);g=-f;e.frustum(g*b,f*b,g,f,c,d)};E.prototype.frustum=function(){throw"Processing.js: frustum() is not supported in 2D mode"; +};B.prototype.frustum=function(a,b,c,e,d,f){Ha=new I;Ha.set(2*d/(b-a),0,(b+a)/(b-a),0,0,2*d/(e-c),(e+c)/(e-c),0,0,0,-(f+d)/(f-d),-(2*f*d)/(f-d),0,0,-1,0);a=new I;a.set(Ha);a.transpose();g.useProgram(J);U("projection2d",J,"uProjection",!1,a.array());g.useProgram(y);U("projection3d",y,"uProjection",!1,a.array());g.useProgram(na);U("uProjectionUS",na,"uProjection",!1,a.array())};e.ortho=function(a,b,c,d,f,h){0===arguments.length&&(a=0,b=e.width,c=0,d=e.height,f=-10,h=10);var k=2/(b-a),l=2/(d-c),s=-2/ +(h-f),m=-(b+a)/(b-a),n=-(d+c)/(d-c),p=-(h+f)/(h-f);Ha=new I;Ha.set(k,0,0,m,0,l,0,n,0,0,s,p,0,0,0,1);k=new I;k.set(Ha);k.transpose();g.useProgram(J);U("projection2d",J,"uProjection",!1,k.array());g.useProgram(y);U("projection3d",y,"uProjection",!1,k.array());g.useProgram(na);U("uProjectionUS",na,"uProjection",!1,k.array())};e.printProjection=function(){Ha.print()};e.printCamera=function(){qb.print()};E.prototype.box=W.prototype.a3DOnlyFunction;B.prototype.box=function(a,b,c){b&&c||(b=c=a);var e=new I; +e.scale(a,b,c);a=new I;a.scale(1,-1,1);a.apply(K.array());a.transpose();R&&(g.useProgram(y),U("model3d",y,"uModel",!1,e.array()),U("view3d",y,"uView",!1,a.array()),g.enable(g.POLYGON_OFFSET_FILL),g.polygonOffset(1,1),T("color3d",y,"uColor",ka),0a&&(a=3);2>b&&(b=2);if(a!==pb|| +b!==jc){var d=c.SINCOS_LENGTH/a,f=new A(a),h=new A(a);for(e=0;epb||2>jc)&&e.sphereDetail(30);var b=new I;b.scale(a,a,a);a=new I;a.scale(1,-1,1);a.apply(K.array());a.transpose();if(R){if(0d?0:d,f=1f?0:f);g[0]=a;g[1]=b;g[2]=e||0;g[3]=d||0;g[4]=f||0;g[5]=ka[0];g[6]=ka[1];g[7]=ka[2];g[8]=ka[3];g[9]=X[0];g[10]=X[1];g[11]=X[2];g[12]=X[3];g[13]=Gb;g[14]=Eb;g[15]=ub;t.push(g)};var gd=function(a, +b){var c=new I;c.scale(1,-1,1);c.apply(K.array());c.transpose();g.useProgram(na);U("uViewUS",na,"uView",!1,c.array());Y("uSmoothUS",na,"uSmooth",ra);Z("aVertexUS",na,"aVertex",3,hc);g.bufferData(g.ARRAY_BUFFER,new A(a),g.STREAM_DRAW);Z("aColorUS",na,"aColor",4,Bc);g.bufferData(g.ARRAY_BUFFER,new A(b),g.STREAM_DRAW);g.drawArrays(g.POINTS,0,a.length/3)},Ca=function(a,b,c){b="LINES"===b?g.LINES:"LINE_LOOP"===b?g.LINE_LOOP:g.LINE_STRIP;var e=new I;e.scale(1,-1,1);e.apply(K.array());e.transpose();g.useProgram(na); +U("uViewUS",na,"uView",!1,e.array());Z("aVertexUS",na,"aVertex",3,Ac);g.bufferData(g.ARRAY_BUFFER,new A(a),g.STREAM_DRAW);Z("aColorUS",na,"aColor",4,Qc);g.bufferData(g.ARRAY_BUFFER,new A(c),g.STREAM_DRAW);g.drawArrays(b,0,a.length/3)},$a=function(a,b,c,e){b="TRIANGLES"===b?g.TRIANGLES:"TRIANGLE_FAN"===b?g.TRIANGLE_FAN:g.TRIANGLE_STRIP;var d=new I;d.scale(1,-1,1);d.apply(K.array());d.transpose();g.useProgram(y);U("model3d",y,"uModel",!1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);U("view3d",y,"uView",!1,d.array()); +g.enable(g.POLYGON_OFFSET_FILL);g.polygonOffset(1,1);T("color3d",y,"uColor",[-1,0,0,0]);Z("vertex3d",y,"aVertex",3,Pc);g.bufferData(g.ARRAY_BUFFER,new A(a),g.STREAM_DRAW);ua&&null!==gb&&sc(c);Z("aColor3d",y,"aColor",4,Bc);g.bufferData(g.ARRAY_BUFFER,new A(c),g.STREAM_DRAW);sa("aNormal3d",y,"aNormal");ua&&(Y("uUsingTexture3d",y,"uUsingTexture",ua),Z("aTexture3d",y,"aTexture",2,Rc),g.bufferData(g.ARRAY_BUFFER,new A(e),g.STREAM_DRAW));g.drawArrays(b,0,a.length/3);g.disable(g.POLYGON_OFFSET_FILL)};E.prototype.endShape= +function(a){if(0!==t.length){(a=a===c.CLOSE)&&t.push(t[0]);var b=[],d=[],f=[],k=[],l;ib=!0;var w,m,s=t.length;for(w=0;wm;m++)b.push(l[m]);for(w=0;wm;m++)d.push(l[m]);for(w=0;wm;m++)f.push(l[m]);for(w=0;wm;m++)g.lineTo(t[w+m][0],t[w+m][1]);g.lineTo(l[0],l[1]);R&&(e.fill(t[w+3][5]),wa());C&&(e.stroke(t[w+3][6]),za());g.closePath()}else if(aa===c.QUAD_STRIP){if(3s;s++)e.push(l[s]);for(m=0;ms;s++)d.push(l[s]);for(m=0;ms;s++)f.push(l[s]);for(m=0;mm;m++)d.push(t[0][m]);for(m=9;13>m;m++)f.push(t[0][m]);k.push(t[0][3]);k.push(t[0][4])}if(!Cb||aa!==c.POLYGON&&aa!==h)if(!Db||aa!==c.POLYGON&&aa!==h){if(aa===c.POINTS){for(m=0;ms;s++)a.push(l[s]);gd(a,f)}else if(aa===c.LINES){for(m=0;ms;s++)a.push(l[s]);for(m=0;ms;s++)d.push(l[s]);Ca(a,"LINES",f)}else if(aa===c.TRIANGLES){if(2s;s++)for(b=0;3>b;b++)a.push(t[m+ +s][b]),e.push(t[m+s][b]);for(s=0;3>s;s++)for(b=3;5>b;b++)k.push(t[m+s][b]);for(s=0;3>s;s++)for(b=5;9>b;b++)d.push(t[m+s][b]),f.push(t[m+s][b+4]);C&&Ca(a,"LINE_LOOP",f);(R||ua)&&$a(e,"TRIANGLES",d,k)}}else if(aa===c.TRIANGLE_STRIP){if(2s;s++)for(b=0;3>b;b++)a.push(t[m+s][b]),e.push(t[m+s][b]);for(s=0;3>s;s++)for(b=3;5>b;b++)k.push(t[m+s][b]);for(s=0;3>s;s++)for(b=5;9>b;b++)f.push(t[m+s][b+4]),d.push(t[m+s][b]);(R||ua)&&$a(e,"TRIANGLE_STRIP", +d,k);C&&Ca(a,"LINE_LOOP",f)}}else if(aa===c.TRIANGLE_FAN){if(2m;m++)for(l=t[m],s=0;3>s;s++)a.push(l[s]);for(m=0;3>m;m++)for(l=t[m],s=9;13>s;s++)f.push(l[s]);C&&Ca(a,"LINE_LOOP",f);for(m=2;m+1s;s++)for(b=0;3>b;b++)a.push(t[m+s][b]);for(s=0;2>s;s++)for(b=9;13>b;b++)f.push(t[m+s][b]);C&&Ca(a,"LINE_STRIP",f)}(R||ua)&&$a(e,"TRIANGLE_FAN",d,k)}}else if(aa=== +c.QUADS)for(m=0;m+3s;s++)for(l=t[m+s],b=0;3>b;b++)a.push(l[b]);C&&Ca(a,"LINE_LOOP",f);if(R){e=[];d=[];k=[];for(s=0;3>s;s++)e.push(t[m][s]);for(s=5;9>s;s++)d.push(t[m][s]);for(s=0;3>s;s++)e.push(t[m+1][s]);for(s=5;9>s;s++)d.push(t[m+1][s]);for(s=0;3>s;s++)e.push(t[m+3][s]);for(s=5;9>s;s++)d.push(t[m+3][s]);for(s=0;3>s;s++)e.push(t[m+2][s]);for(s=5;9>s;s++)d.push(t[m+2][s]);ua&&(k.push(t[m+0][3]),k.push(t[m+0][4]),k.push(t[m+1][3]),k.push(t[m+1][4]),k.push(t[m+3][3]),k.push(t[m+ +3][4]),k.push(t[m+2][3]),k.push(t[m+2][4]));$a(e,"TRIANGLE_STRIP",d,k)}}else if(aa===c.QUAD_STRIP){if(3m;m++)for(l=t[m],s=0;3>s;s++)a.push(l[s]);for(m=0;2>m;m++)for(l=t[m],s=9;13>s;s++)f.push(l[s]);Ca(a,"LINE_STRIP",f);4s;s++)a.push(t[m+1][s]);for(s=0;3>s;s++)a.push(t[m+3][s]);for(s=0;3>s;s++)a.push(t[m+2][s]);for(s=0;3>s;s++)a.push(t[m+0][s]);for(s=9;13>s;s++)f.push(t[m+1][s]);for(s=9;13>s;s++)f.push(t[m+ +3][s]);for(s=9;13>s;s++)f.push(t[m+2][s]);for(s=9;13>s;s++)f.push(t[m+0][s]);C&&Ca(a,"LINE_STRIP",f)}(R||ua)&&$a(e,"TRIANGLE_LIST",d,k)}}else if(1===n){for(s=0;3>s;s++)a.push(t[0][s]);for(s=9;13>s;s++)f.push(t[0][s]);gd(a,f)}else{for(m=0;ms;s++)a.push(l[s]);for(s=5;9>s;s++)f.push(l[s])}C&&b?Ca(a,"LINE_LOOP",f):C&&!b&&Ca(a,"LINE_STRIP",f);(R||ua)&&$a(e,"TRIANGLE_FAN",d,k)}ua=!1;g.useProgram(y);Y("usingTexture3d",y,"uUsingTexture",ua)}else a=e,a.splice(a.length-3),f.splice(f.length- +4),C&&Ca(a,null,f),R&&$a(e,"TRIANGLES",d);else C&&Ca(e,null,f),R&&$a(e,null,d);Db=Cb=!1;va=[];oa=0}};var hd=function(a,b){var c=1/a,e=c*c,d=e*c;b.set(0,0,0,1,d,e,c,0,6*d,2*e,0,0,6*d,0,0,0)},id=function(){xb||(Sb=new I,xb=new I,Lc=!0);var a=oc;Sb.set((a-1)/2,(a+3)/2,(-3-a)/2,(1-a)/2,1-a,(-5-a)/2,a+2,(a-1)/2,(a-1)/2,0,(1-a)/2,0,0,1,0,0);hd(pc,xb);uc||(fc=new I);fc.set(Sb);fc.preApply(uc);xb.apply(Sb)};E.prototype.bezierVertex=function(){Db=!0;var a=[];if(ib)throw"vertex() must be used at least once before calling bezierVertex()"; +for(var b=0;b=d||hg;)g+=c.TWO_PI,h+=c.TWO_PI;h-g>c.TWO_PI&&(g=0,h=c.TWO_PI);d/=2;f/=2;a+=d;b+=f;g=0|0.5+2*g*e.RAD_TO_DEG;h=0|0.5+2*h*e.RAD_TO_DEG;var k,l;if(R){var m=C;C=!1;e.beginShape();e.vertex(a,b);for(k= +g;k<=h;k++)l=k%c.SINCOS_LENGTH,e.vertex(a+Vb[l]*d,b+Ub[l]*f);e.endShape(c.CLOSE);C=m}if(C){m=R;R=!1;e.beginShape();for(k=g;k<=h;k++)l=k%c.SINCOS_LENGTH,e.vertex(a+Vb[l]*d,b+Ub[l]*f);e.endShape();R=m}}};E.prototype.line=function(a,b,c,d){if(C)if(a=Math.round(a),c=Math.round(c),b=Math.round(b),d=Math.round(d),a===c&&b===d)e.point(a,b);else{for(var f=h,k=h,l=!0,f=K.array(),m=[1,0,0,0,1,0],s=0;6>s&&l;s++)l=f[s]===m[s];l&&(a===c?(b>d&&(f=b,b=d,d=f),d++,1===ea%2&&g.translate(0.5,0)):b===d&&(a>c&&(f=a,a= +c,c=f),c++,1===ea%2&&g.translate(0,0.5)),1===ea&&(k=g.lineCap,g.lineCap="butt"));g.beginPath();g.moveTo(a||0,b||0);g.lineTo(c||0,d||0);za();l&&(a===c&&1===ea%2?g.translate(-0.5,0):b===d&&1===ea%2&&g.translate(0,-0.5),1===ea&&(g.lineCap=k))}};B.prototype.line=function(a,b,c,d,f,k){if(f===h||k===h)k=0,f=d,d=c,c=0;a===d&&b===f&&c===k?e.point(a,b,c):(a=[a,b,c,d,f,k],b=new I,b.scale(1,-1,1),b.apply(K.array()),b.transpose(),0s||f>n)f=Math.min(s,n);if(k>s||k>n)k=Math.min(s,n);if(l>s||l>n)l=Math.min(s,n);if(m>s||m>n)m=Math.min(s,n);R&&!C||g.translate(0.5,0.5);g.beginPath();g.moveTo(a+f,b);g.lineTo(a+e-k,b);g.quadraticCurveTo(a+e,b,a+e,b+k);g.lineTo(a+ +e,b+d-l);g.quadraticCurveTo(a+e,b+d,a+e-l,b+d);g.lineTo(a+m,b+d);g.quadraticCurveTo(a,b+d,a,b+d-m);g.lineTo(a,b+f);g.quadraticCurveTo(a,b,a+f,b);R&&!C||g.translate(-0.5,-0.5);wa();za()}else C&&1===ea%2&&g.translate(0.5,0.5),g.beginPath(),g.rect(a,b,e,d),wa(),za(),C&&1===ea%2&&g.translate(-0.5,-0.5)};B.prototype.rect=function(a,b,e,d,f,k,l,m){if(f!==h)throw"rect() with rounded corners is not supported in 3D mode";qa===c.CORNERS?(e-=a,d-=b):qa===c.RADIUS?(e*=2,d*=2,a-=e/2,b-=d/2):qa===c.CENTER&&(a-= +e/2,b-=d/2);f=new I;f.translate(a,b,0);f.scale(e,d,1);f.transpose();b=new I;b.scale(1,-1,1);b.apply(K.array());b.transpose();0=d&&0>=f))if(la===c.RADIUS?(d*=2,f*=2):la=== +c.CORNERS?(d-=a,f-=b,a+=d/2,b+=f/2):la===c.CORNER&&(a+=d/2,b+=f/2),d===f)g.beginPath(),g.arc(a,b,d/2,0,c.TWO_PI,!1),wa(),za();else{d/=2;f/=2;var h=0.5522847498307933*d,k=0.5522847498307933*f;e.beginShape();e.vertex(a+d,b);e.bezierVertex(a+d,b-k,a+h,b-f,a,b-f);e.bezierVertex(a-h,b-f,a-d,b-k,a-d,b);e.bezierVertex(a-d,b+k,a-h,b+f,a,b+f);e.bezierVertex(a+h,b+f,a+d,b+k,a+d,b);e.endShape()}};B.prototype.ellipse=function(a,b,d,f){a=a||0;b=b||0;if(!(0>=d&&0>=f)){la===c.RADIUS?(d*=2,f*=2):la===c.CORNERS?(d-= +a,f-=b,a+=d/2,b+=f/2):la===c.CORNER&&(a+=d/2,b+=f/2);d/=2;f/=2;var g=0.5522847498307933*d,h=0.5522847498307933*f;e.beginShape();e.vertex(a+d,b);e.bezierVertex(a+d,b-h,0,a+g,b-f,0,a,b-f,0);e.bezierVertex(a-g,b-f,0,a-d,b-h,0,a-d,b,0);e.bezierVertex(a-d,b+h,0,a-g,b+f,0,a,b+f,0);e.bezierVertex(a+g,b+f,0,a+d,b+h,0,a+d,b,0);e.endShape();if(R){for(g=f=d=0;gd;d++)a.push(t[g][d]);for(d=5;9>d;d++)b.push(t[g][d])}$a(a,"TRIANGLE_FAN",b)}}};e.normal=function(a,b,d){if(3!==arguments.length||"number"!==typeof a||"number"!==typeof b||"number"!==typeof d)throw"normal() requires three numeric arguments.";Gb=a;Eb=b;ub=d;0!==aa&&(jb===c.NORMAL_MODE_AUTO?jb=c.NORMAL_MODE_SHAPE:jb===c.NORMAL_MODE_SHAPE&&(jb=c.NORMAL_MODE_VERTEX))};e.save=function(a, +b){return b!==h?l.open(b.toDataURL(),"_blank"):l.open(e.externals.canvas.toDataURL(),"_blank")};var wd=0;e.saveFrame=function(a){a===h&&(a="screen-####.png");a=a.replace(/#+/,function(a){for(var b=""+wd++;b.length=e.width||0>a||0>b||b>=e.height?d=0:Rb?(a=4*((0|a)+e.width*(0|b)),d=e.imageData.data,d=d[a+3]<<24&c.ALPHA_MASK| +d[a]<<16&c.RED_MASK|d[a+1]<<8&c.GREEN_MASK|d[a+2]&c.BLUE_MASK):(d=e.toImageData(0|a,0|b,1,1).data,d=d[3]<<24&c.ALPHA_MASK|d[0]<<16&c.RED_MASK|d[1]<<8&c.GREEN_MASK|d[2]&c.BLUE_MASK),d):void 0!==a?Lb(0,0,a.width,a.height,a):Kb(0,0,e.width,e.height)};e.createGraphics=function(a,b,c){var d=new M;d.size(a,b,c);d.background(0,0);return d};e.set=function(a,b,c,d){if(3===arguments.length)"number"===typeof c?aYc&&fb()):(c instanceof Ga||c.__isPImage)&&e.image(c,a,b);else if(4===arguments.length){if(d.isRemote)throw"Image is loaded remotely. Cannot set x,y.";var f=e.color.toArray(c),h=4*b*d.width+4*a,k=d.imageData.data;k[h]=f[0];k[h+1]=f[1];k[h+2]=f[2];k[h+3]=f[3]}};e.imageData={};e.pixels={getLength:function(){return e.imageData.data.length?e.imageData.data.length/4:0},getPixel:function(a){a*=4;var b=e.imageData.data;return b[a+3]<<24&4278190080|b[a+0]<< +16&16711680|b[a+1]<<8&65280|b[a+2]&255},setPixel:function(a,b){var c=4*a,d=e.imageData.data;d[c+0]=(b&16711680)>>>16;d[c+1]=(b&65280)>>>8;d[c+2]=b&255;d[c+3]=(b&4278190080)>>>24},toArray:function(){for(var a=[],b=e.imageData.width*e.imageData.height,c=e.imageData.data,d=0,f=0;darguments.length);if(a.sourceImg&&null===gb){var h=a.sourceImg;a.__isDirty&&a.updatePixels();g.drawImage(h,0,0,h.width,h.height,f.x,f.y,f.w,f.h)}else h=a.toImageData(),null!==gb&&(gb(h),a.__isDirty=!0),g.drawImage(Ja(h).canvas,0,0,a.width,a.height,f.x, +f.y,f.w,f.h)}};B.prototype.image=function(a,b,c,d,f){0=g&&(l=c),0>n&&(n=0),p>=d&&(p=c),n=b.pixels.getPixel(n),m=b.pixels.getPixel(m),p=b.pixels.getPixel(p),l=b.pixels.getPixel(l),h=77*(h>>16&255)+ +151*(h>>8&255)+28*(h&255),t=77*(m>>16&255)+151*(m>>8&255)+28*(m&255),r=77*(l>>16&255)+151*(l>>8&255)+28*(l&255),q=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),v=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),t=g&&(l=c),0>n&&(n=0),p>=d&&(p=c),n=b.pixels.getPixel(n),m=b.pixels.getPixel(m),p=b.pixels.getPixel(p),l=b.pixels.getPixel(l), +h=77*(h>>16&255)+151*(h>>8&255)+28*(h&255),t=77*(m>>16&255)+151*(m>>8&255)+28*(m&255),r=77*(l>>16&255)+151*(l>>8&255)+28*(l&255),q=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),v=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),t>h&&(k=m,h=t),r>h&&(k=l,h=r),q>h&&(k=n,h=q),v>h&&(k=p),e[c++]=k;b.pixels.set(e)};e.filter=function(a,b,d){var f,g,k,l;3===arguments.length?(d.loadPixels(),f=d):(e.loadPixels(),f=e);b===h&&(b=null);if(f.isRemote)throw"Image is loaded remotely. Cannot filter image.";var m=f.pixels.getLength(); +switch(a){case c.BLUR:var n=b||1,p=f,r,t,q,v,u,x,y,C,D;k=p.pixels.getLength();l=new A(k);m=new A(k);g=new A(k);k=new A(k);var F=0,G,E,H,n=e.floor(3.5*n),B,n=1>n?1:248>n?n:248;if(e.shared.blurRadius!==n){e.shared.blurRadius=n;e.shared.blurKernelSize=1+(e.shared.blurRadius<<1);e.shared.blurKernel=new A(e.shared.blurKernelSize);var I=e.shared.blurKernel,J=e.shared.blurKernelSize;for(B=0;Bx)u=-x,x=0;else{if(x>=B)break;u=0}for(H=u;H=B);H++)y=4*(x+F),u=J[H],v+=u*K[y+3],r+=u*K[y],t+=u*K[y+1],q+=u*K[y+2],p+=u,x++;y=F+G;k[y]=v/p;l[y]=r/p;m[y]=t/p;g[y]=q/p}F+=B}F=0;C=-C;D=C*B;for(E=0;EC)u=y=-C,x=G;else{if(C>=n)break;u=0;y=C;x=G+D}for(H=u;H=n);H++)u=J[H],v+=u*k[x],r+=u*l[x],t+=u*m[x],q+=u*g[x],p+=u,y++,x+=B;y= +4*(G+F);K[y]=r/p;K[y+1]=t/p;K[y+2]=q/p;K[y+3]=v/p}F+=B;D+=B;C++}break;case c.GRAY:if(f.format===c.ALPHA){for(l=0;l>16&255)+151*(g>>8&255)+28*(g&255)>>8,f.pixels.setPixel(l,g&c.ALPHA_MASK|k<<16|k<<8|k);break;case c.INVERT:for(l=0;lg||255>16&255,n=f.pixels.getPixel(l)>>8&255,B=f.pixels.getPixel(l)&255,F=255*(F*g>>8)/k,n=255*(n*g>>8)/k,B=255*(B*g>>8)/k,f.pixels.setPixel(l,4278190080&f.pixels.getPixel(l)|F<<16|n<<8|B);break;case c.OPAQUE:for(l=0;lb||1>16,e.max((f.pixels.getPixel(l)&c.GREEN_MASK)>>8,f.pixels.getPixel(l)&c.BLUE_MASK)),f.pixels.setPixel(l,f.pixels.getPixel(l)&c.ALPHA_MASK|(kc&&(g=c)):(a=c+a-e,g>a&&(g=a));fd&&(h=d)):(b=d+b-f,h>b&&(h=b));return!(0>=g||0>=h)};var pa={};pa[c.BLEND]=e.modes.blend;pa[c.ADD]=e.modes.add;pa[c.SUBTRACT]=e.modes.subtract;pa[c.LIGHTEST]=e.modes.lightest;pa[c.DARKEST]=e.modes.darkest;pa[c.REPLACE]=e.modes.replace;pa[c.DIFFERENCE]=e.modes.difference;pa[c.EXCLUSION]=e.modes.exclusion;pa[c.MULTIPLY]=e.modes.multiply;pa[c.SCREEN]= +e.modes.screen;pa[c.OVERLAY]=e.modes.overlay;pa[c.HARD_LIGHT]=e.modes.hard_light;pa[c.SOFT_LIGHT]=e.modes.soft_light;pa[c.DODGE]=e.modes.dodge;pa[c.BURN]=e.modes.burn;e.blit_resize=function(a,b,d,f,g,h,k,l,m,n,p,r,t){0>b&&(b=0);0>d&&(d=0);f>=a.width&&(f=a.width-1);g>=a.height&&(g=a.height-1);f-=b;g-=d;p-=m;r-=n;if(!(0>=p||0>=r||0>=f||0>=g||m>=k||n>=l||b>=a.width||d>=a.height)){f=Math.floor(f/p*c.PRECISIONF);g=Math.floor(g/r*c.PRECISIONF);var q=e.shared;q.srcXOffset=Math.floor(0>m?-m*f:b*c.PRECISIONF); +q.srcYOffset=Math.floor(0>n?-n*g:d*c.PRECISIONF);0>m&&(p+=m,m=0);0>n&&(r+=n,n=0);p=Math.min(p,k-m);r=Math.min(r,l-n);b=n*k+m;var v;q.srcBuffer=a.imageData.data;q.iw=a.width;q.iw1=a.width-1;q.ih1=a.height-1;d=pa[t];var u,x,y,C;m=c.ALPHA_MASK;n=c.RED_MASK;var A=c.GREEN_MASK,B=c.BLUE_MASK,F=c.PREC_MAXVAL,D=c.PRECISIONB,G=c.PREC_RED_SHIFT,H=c.PREC_ALPHA_SHIFT,E=q.srcBuffer,I=Math.min;for(t=0;t>D)*q.iw;q.v2=I((q.srcYOffset>> +D)+1,q.ih1)*q.iw;for(a=0;a>D,q.ll=q.ifU*q.fracV>>D,q.ur=q.fracU*q.ifV>>D,q.lr=q.fracU*q.fracV>>D,q.u1=q.sX>>D,q.u2=I(q.u1+1,q.iw1),u=4*(q.v1+q.u1),x=4*(q.v1+q.u2),y=4*(q.v2+q.u1),C=4*(q.v2+q.u2),q.cUL=E[u+3]<<24&m|E[u]<<16&n|E[u+1]<<8&A|E[u+2]&B,q.cUR=E[x+3]<<24&m|E[x]<<16&n|E[x+1]<<8&A|E[x+2]&B,q.cLL=E[y+3]<<24&m|E[y]<<16&n|E[y+1]<<8&A|E[y+2]&B,q.cLR=E[C+3]<<24&m|E[C]<<16&n|E[C+1]<<8&A| +E[C+2]&B,q.r=q.ul*((q.cUL&n)>>16)+q.ll*((q.cLL&n)>>16)+q.ur*((q.cUR&n)>>16)+q.lr*((q.cLR&n)>>16)<>>D&A,q.b=q.ul*(q.cUL&B)+q.ll*(q.cLL&B)+q.ur*(q.cUR&B)+q.lr*(q.cLR&B)>>>D,q.a=q.ul*((q.cUL&m)>>>24)+q.ll*((q.cLL&m)>>>24)+q.ur*((q.cUR&m)>>>24)+q.lr*((q.cLR&m)>>>24)<>>16,h[l+1]=(v&A)>>>8,h[l+2]=v&B,h[l+3]=(v&m)>>>24,q.sX+=f;b+=k;q.srcYOffset+=g}}};e.loadFont=function(a,b){if(a===h)throw"font name required in loadFont."; +if(-1===a.indexOf(".svg"))return b===h&&(b=ba.size),PFont.get(a,b);var c=e.loadGlyphs(a);return{name:a,css:"12px sans-serif",glyph:!0,units_per_em:c.units_per_em,horiz_adv_x:1/c.units_per_em*c.horiz_adv_x,ascent:c.ascent,descent:c.descent,width:function(b){for(var c=0,d=b.length,f=0;f":return a.greater;case "?":return a.question;case "@":return a.at;case "[":return a.bracketleft;case "\\":return a.backslash;case "]":return a.bracketright;case "^":return a.asciicircum;case "`":return a.grave;case "{":return a.braceleft;case "|":return a.bar;case "}":return a.braceright;case "~":return a.asciitilde;default:return a[b]}}catch(c){M.debug(c)}};E.prototype.text$line=function(a,b,d,f,h){f=f=0;if(ba.glyph){f= +e.glyphTable[zb];g.save();g.translate(b,d+Na);h!==c.RIGHT&&h!==c.CENTER||f.width(a);b=1/f.units_per_em*Na;g.scale(b,b);b=0;for(d=a.length;b Date: Fri, 28 Mar 2014 12:24:29 -0400 Subject: [PATCH 07/31] Make sync script executable --- sync.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 sync.sh diff --git a/sync.sh b/sync.sh old mode 100644 new mode 100755 From 8f9a478c30213723bbc69ad46286347f74370fd2 Mon Sep 17 00:00:00 2001 From: Pomax Date: Thu, 17 Apr 2014 14:03:40 -0700 Subject: [PATCH 08/31] 1.4.8 dl --- download/_posts/2014-03-25-v1.4.8.html | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 download/_posts/2014-03-25-v1.4.8.html diff --git a/download/_posts/2014-03-25-v1.4.8.html b/download/_posts/2014-03-25-v1.4.8.html new file mode 100644 index 0000000..773fb72 --- /dev/null +++ b/download/_posts/2014-03-25-v1.4.8.html @@ -0,0 +1,8 @@ +--- +title: Processing.js v1.4.8 +--- +
                    +
                  • Development - processing.js v1.4.8
                  • +
                  • Production - processing.min.js v1.4.8
                  • +

                    Alternatively, install through Bower by using bower install Processing.js

                    From ea7371d1c4e5e08b46f9c5beb2f5f8667b194c96 Mon Sep 17 00:00:00 2001 From: Pomax Date: Thu, 17 Apr 2014 14:05:09 -0700 Subject: [PATCH 09/31] date correct for blog --- blog/_posts/2014-04-17-processing-js-v1-4-8.html | 9 +++++++++ sync.sh | 0 2 files changed, 9 insertions(+) create mode 100644 blog/_posts/2014-04-17-processing-js-v1-4-8.html mode change 100755 => 100644 sync.sh diff --git a/blog/_posts/2014-04-17-processing-js-v1-4-8.html b/blog/_posts/2014-04-17-processing-js-v1-4-8.html new file mode 100644 index 0000000..c6b33c1 --- /dev/null +++ b/blog/_posts/2014-04-17-processing-js-v1-4-8.html @@ -0,0 +1,9 @@ +--- +layout: post +title: Processing.js v1.4.8 released +--- +

                    It's been a few weeks and PRocessing.js got a few PRs merge in, so it's time for a new +release: say hello to 1.4.8! This version has some fixes to PVector's rotate, support for +randomGaussian(), and several unit tests to make sure those fixes pass muster. You +can download the new version of Processing.js over on the download +section, and let us know what's still missing!

                    diff --git a/sync.sh b/sync.sh old mode 100755 new mode 100644 From 6f2a38712eb46656f48a865ba1a7d8d25c1cb8c6 Mon Sep 17 00:00:00 2001 From: Jon Buckley Date: Fri, 28 Mar 2014 12:24:29 -0400 Subject: [PATCH 10/31] Make sync script executable --- sync.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 sync.sh diff --git a/sync.sh b/sync.sh old mode 100644 new mode 100755 From ab6ee002476bfd5780be56718fdef79c1d4cfb19 Mon Sep 17 00:00:00 2001 From: Jon Buckley Date: Thu, 17 Apr 2014 17:35:46 -0400 Subject: [PATCH 11/31] Something to test PRs before they get merged --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..33b1554 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: ruby +rvm: +- 2.1.0 +install: bundle install +script: bundle exec jekyll build From c8e189127a3ddf53517203cd17ae3c289d023707 Mon Sep 17 00:00:00 2001 From: Jon Buckley Date: Thu, 17 Apr 2014 17:37:05 -0400 Subject: [PATCH 12/31] Add CNAME for processingjs.org --- CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 CNAME diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..1c989db --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +processingjs.org From d0f6d1c21e9aafa41f573c642838e10a74f4c605 Mon Sep 17 00:00:00 2001 From: Jon Buckley Date: Thu, 17 Apr 2014 18:04:58 -0400 Subject: [PATCH 13/31] sync files errrr day --- .travis.yml | 6 ++++++ sync.sh | 3 --- 2 files changed, 6 insertions(+), 3 deletions(-) delete mode 100755 sync.sh diff --git a/.travis.yml b/.travis.yml index 33b1554..5f34faa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,3 +3,9 @@ rvm: - 2.1.0 install: bundle install script: bundle exec jekyll build +script: bundle exec jekyll build +after_success: +- if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then echo "Deployments are only done for branches. "; exit 0; fi +- if [[ "$TRAVIS_BRANCH" != "master" ]]; then echo "Deployments are only done for the gh-pages branch. "; exit 0; fi +- echo "Deploying commit $TRAVIS_COMMIT" +- rsync -vaz _site/ -e ssh processingjs@ftp.processingjs.org:~/processingjs.org diff --git a/sync.sh b/sync.sh deleted file mode 100755 index 3085bbe..0000000 --- a/sync.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -rsync -vaz _site/ -e ssh processingjs@ftp.processingjs.org:~/processingjs.org From 3087897a1257f378316fe05cb7d643b82d086b79 Mon Sep 17 00:00:00 2001 From: Jon Buckley Date: Thu, 17 Apr 2014 18:31:34 -0400 Subject: [PATCH 14/31] Add ftp.processingjs.org to known_hosts --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 5f34faa..fbdc810 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,4 +8,5 @@ after_success: - if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then echo "Deployments are only done for branches. "; exit 0; fi - if [[ "$TRAVIS_BRANCH" != "master" ]]; then echo "Deployments are only done for the gh-pages branch. "; exit 0; fi - echo "Deploying commit $TRAVIS_COMMIT" +- echo "ftp.processingjs.org,66.33.221.248 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeGEiJ87RtUCZHAy3iJloLvcIJZnCA0k0naJJl9wYYr9wcIp9hqtsTK5SBKb/2omWYaOaIrlfKP2K2kI76BgIYydxlnyYrDTmeNiPiipR7KbSQeQQ6PUzlJfOjcxfSWBTQJUp5O+fSIW3y+P/iqzlaY5q9HRyyP47QrpwLV1C0eBpRJgaYj/WJ2nzR5JTXV2aPXPupygk5oyZq22TLkmrIEb+u+q+0iuKLZpMgUFeHcuMJF/XofZBoS/L5c2CpW/FsVMZr1GUXhFM7U8oGeQAmL0mrY2UwbwOz8cy4wlUbshFuPKEOHT29q2z5ZqpR2Svzhu4ljLl1cIJMk1L2FjCx" >> .ssh/known_hosts - rsync -vaz _site/ -e ssh processingjs@ftp.processingjs.org:~/processingjs.org From 4cfa4bebea22a844563b9ed81e7de02e41cb13f8 Mon Sep 17 00:00:00 2001 From: Jon Buckley Date: Thu, 17 Apr 2014 18:56:18 -0400 Subject: [PATCH 15/31] ugh --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index fbdc810..acd249e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,5 +8,5 @@ after_success: - if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then echo "Deployments are only done for branches. "; exit 0; fi - if [[ "$TRAVIS_BRANCH" != "master" ]]; then echo "Deployments are only done for the gh-pages branch. "; exit 0; fi - echo "Deploying commit $TRAVIS_COMMIT" -- echo "ftp.processingjs.org,66.33.221.248 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeGEiJ87RtUCZHAy3iJloLvcIJZnCA0k0naJJl9wYYr9wcIp9hqtsTK5SBKb/2omWYaOaIrlfKP2K2kI76BgIYydxlnyYrDTmeNiPiipR7KbSQeQQ6PUzlJfOjcxfSWBTQJUp5O+fSIW3y+P/iqzlaY5q9HRyyP47QrpwLV1C0eBpRJgaYj/WJ2nzR5JTXV2aPXPupygk5oyZq22TLkmrIEb+u+q+0iuKLZpMgUFeHcuMJF/XofZBoS/L5c2CpW/FsVMZr1GUXhFM7U8oGeQAmL0mrY2UwbwOz8cy4wlUbshFuPKEOHT29q2z5ZqpR2Svzhu4ljLl1cIJMk1L2FjCx" >> .ssh/known_hosts +- echo "ftp.processingjs.org,66.33.221.248 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeGEiJ87RtUCZHAy3iJloLvcIJZnCA0k0naJJl9wYYr9wcIp9hqtsTK5SBKb/2omWYaOaIrlfKP2K2kI76BgIYydxlnyYrDTmeNiPiipR7KbSQeQQ6PUzlJfOjcxfSWBTQJUp5O+fSIW3y+P/iqzlaY5q9HRyyP47QrpwLV1C0eBpRJgaYj/WJ2nzR5JTXV2aPXPupygk5oyZq22TLkmrIEb+u+q+0iuKLZpMgUFeHcuMJF/XofZBoS/L5c2CpW/FsVMZr1GUXhFM7U8oGeQAmL0mrY2UwbwOz8cy4wlUbshFuPKEOHT29q2z5ZqpR2Svzhu4ljLl1cIJMk1L2FjCx" >> ~/.ssh/known_hosts - rsync -vaz _site/ -e ssh processingjs@ftp.processingjs.org:~/processingjs.org From c8b777cd2bf0f4e9b69bc0c536494ec921531791 Mon Sep 17 00:00:00 2001 From: Jon Buckley Date: Thu, 17 Apr 2014 19:47:30 -0400 Subject: [PATCH 16/31] nope --- .travis.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index acd249e..318436a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,9 +4,3 @@ rvm: install: bundle install script: bundle exec jekyll build script: bundle exec jekyll build -after_success: -- if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then echo "Deployments are only done for branches. "; exit 0; fi -- if [[ "$TRAVIS_BRANCH" != "master" ]]; then echo "Deployments are only done for the gh-pages branch. "; exit 0; fi -- echo "Deploying commit $TRAVIS_COMMIT" -- echo "ftp.processingjs.org,66.33.221.248 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeGEiJ87RtUCZHAy3iJloLvcIJZnCA0k0naJJl9wYYr9wcIp9hqtsTK5SBKb/2omWYaOaIrlfKP2K2kI76BgIYydxlnyYrDTmeNiPiipR7KbSQeQQ6PUzlJfOjcxfSWBTQJUp5O+fSIW3y+P/iqzlaY5q9HRyyP47QrpwLV1C0eBpRJgaYj/WJ2nzR5JTXV2aPXPupygk5oyZq22TLkmrIEb+u+q+0iuKLZpMgUFeHcuMJF/XofZBoS/L5c2CpW/FsVMZr1GUXhFM7U8oGeQAmL0mrY2UwbwOz8cy4wlUbshFuPKEOHT29q2z5ZqpR2Svzhu4ljLl1cIJMk1L2FjCx" >> ~/.ssh/known_hosts -- rsync -vaz _site/ -e ssh processingjs@ftp.processingjs.org:~/processingjs.org From f8924bb2f974bf475defa224921dae7f8f24857e Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Tue, 3 Feb 2015 12:01:32 -0800 Subject: [PATCH 17/31] Update index.html --- community/index.html | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/community/index.html b/community/index.html index 53ddbb6..ffc5136 100644 --- a/community/index.html +++ b/community/index.html @@ -13,17 +13,6 @@

                    Community

                    -
                    - - - Bug Tracking with LightHouse -

                    The development team have chosen to go with LightHouse as the bug tracking system - for Processing.js. If you think you may have stumbled accross a bug, or you are - interested in joining in the development, visit - Processing.js at Lighthouse.

                    -
                    -
                    -
                    @@ -31,6 +20,10 @@

                    Community

                    The current fork of the Processing.js repo at GitHub. Developers wishing to contribute to Processing.js should sign-up at GitHub and pull the code to their local machines. Then any changes you make can be easily integrated into the master version.

                    +

                    The development team have also chosen to go with Github as the bug tracking system + for Processing.js. If you think you may have stumbled accross a bug, or you are + interested in joining in the development, visit + Processing.js on Github.

                    From f0efeced622164099544525cfbe11ec5c307ebf7 Mon Sep 17 00:00:00 2001 From: Pomax Date: Sat, 14 Feb 2015 21:44:52 -0800 Subject: [PATCH 18/31] old issues link --- reference/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/index.html b/reference/index.html index 68d83dd..9590788 100644 --- a/reference/index.html +++ b/reference/index.html @@ -8,7 +8,7 @@

                    Reference

                    The Processing.js community is working towards a 100% compatible API, allowing all native Java code to run in Javascript. Items highlighted in red are not yet implemented.

                    The original Processing reference can be found on the Processing website

                    -

                    If you encounter any problems with these commands or their documentation please file a bug +

                    If you encounter any problems with these commands or their documentation please file a bug

                    From d37229f9ee34a8ad14e98516d99ba5f3cff2557e Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Thu, 19 Mar 2015 18:17:15 -0700 Subject: [PATCH 19/31] Internal container is called "processingInstances" --- articles/_posts/2011-12-04-jsQuickStart.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/articles/_posts/2011-12-04-jsQuickStart.html b/articles/_posts/2011-12-04-jsQuickStart.html index 58a5704..d7d9882 100644 --- a/articles/_posts/2011-12-04-jsQuickStart.html +++ b/articles/_posts/2011-12-04-jsQuickStart.html @@ -348,12 +348,12 @@

                    Reaching out from the Processing code to JavaScript is easier than going the other way, since the JavaScript created by the Processing.js parser is not exposed directly - on the global object. Instead, you gain access using the Processing.instances property.

                    + on the global object. Instead, you gain access using the Processing.processingInstances property.

                    The Processing constructor keeps track of instances it creates, and makes them available using the getInstanceById() method. By default, when a <canvas> has a data-processing-sources attribute, its id is used as a unique identifier for the Processing instance. If - no id attribute is provided, you can use Processing.instances[0].

                    + no id attribute is provided, you can use Processing.processingInstances[0].

                    After you have a reference to the appropriate Processing instance, you can call into it like so:

                    @@ -414,7 +414,7 @@

                    Processing.js provides access to various DOM/JavaScript objects via the externals property

                    - Each Processing instance (i.e., Processing.instances) has an externals property, + Each Processing instance (i.e., Processing.processingInstances) has an externals property, which is an object containing references to various non-Processing DOM/JavaScript objects that can be useful. For example:

                      From 81d2732154ddb87fd6b7f2c6350260ee646b9ab2 Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Thu, 19 Mar 2015 18:35:52 -0700 Subject: [PATCH 20/31] revert - var is .instances --- articles/_posts/2011-12-04-jsQuickStart.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/articles/_posts/2011-12-04-jsQuickStart.html b/articles/_posts/2011-12-04-jsQuickStart.html index d7d9882..58a5704 100644 --- a/articles/_posts/2011-12-04-jsQuickStart.html +++ b/articles/_posts/2011-12-04-jsQuickStart.html @@ -348,12 +348,12 @@

                      Reaching out from the Processing code to JavaScript is easier than going the other way, since the JavaScript created by the Processing.js parser is not exposed directly - on the global object. Instead, you gain access using the Processing.processingInstances property.

                      + on the global object. Instead, you gain access using the Processing.instances property.

                      The Processing constructor keeps track of instances it creates, and makes them available using the getInstanceById() method. By default, when a <canvas> has a data-processing-sources attribute, its id is used as a unique identifier for the Processing instance. If - no id attribute is provided, you can use Processing.processingInstances[0].

                      + no id attribute is provided, you can use Processing.instances[0].

                      After you have a reference to the appropriate Processing instance, you can call into it like so:

                      @@ -414,7 +414,7 @@

                      Processing.js provides access to various DOM/JavaScript objects via the externals property

                      - Each Processing instance (i.e., Processing.processingInstances) has an externals property, + Each Processing instance (i.e., Processing.instances) has an externals property, which is an object containing references to various non-Processing DOM/JavaScript objects that can be useful. For example:

                        From c99b2e92d682a73bdae936acaf65a7e5334872a8 Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Tue, 31 May 2016 14:14:10 -0700 Subject: [PATCH 21/31] Create ISSUE_TEMPLATE.md --- ISSUE_TEMPLATE.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 ISSUE_TEMPLATE.md diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..666a153 --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,7 @@ +Thank you for finding a bug on the Processing.js website, or having a change request you'd like to see implemented. + +The Processing.js website is not under active maintenance at the moment, lacking developers that have +the time to work on it. As such, any bug you find might take a long time to get a fix. However, if +you're interested in fixing things yourself, I (Pomax) will be more than happy to review your suggested +changes and merge them in if they fix the problem you were having without introducing problems +due to side effects your code might have. From 70f79da6d4c4d8804b9e442bfa1b5dbb8cbb2778 Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Mon, 1 Aug 2016 12:17:02 -0700 Subject: [PATCH 22/31] Update 2011-11-20-virion.html --- exhibition/_posts/2011-11-20-virion.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exhibition/_posts/2011-11-20-virion.html b/exhibition/_posts/2011-11-20-virion.html index 15f5a1e..6982596 100644 --- a/exhibition/_posts/2011-11-20-virion.html +++ b/exhibition/_posts/2011-11-20-virion.html @@ -3,7 +3,7 @@
                        - Virion + Virion

                        by
                        Jonah Kagan, Varun Singh, Jonathan Koh, Charis Loke

                        A game written in Processing.js. Winner of Zynga's Hidden Agenda Facebook Game Competition

                        From 0dbd4f915aa5d7909ad04f476a4f482837294c6e Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Mon, 1 Aug 2016 12:22:00 -0700 Subject: [PATCH 23/31] Update index.html --- index.html | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/index.html b/index.html index e5f0aa3..a19ccdf 100644 --- a/index.html +++ b/index.html @@ -3,8 +3,8 @@ ---
                        - - Virion + + Virion

                        by Jonah Kagan, Varun Singh, Jonathan Koh, Charis Loke

                        @@ -19,13 +19,14 @@
                        -

                        Processing.js 1.4.8 released!

                        +

                        Latest release: Processing.js v1.6.0

                        -

                        It's been a few weeks and PRocessing.js got a few PRs merge in, so it's time for a new -release: say hello to 1.4.8! This version has some fixes to PVector's rotate, support for -randomGaussian(), and several unit tests to make sure those fixes pass muster. You -can download the new version of Processing.js over on the download -section, and let us know what's still missing!

                        +

                        Updates have been trickling in over the last few releases, and while the original dev team for Processing.js +moved on, there are a number of enthusiastic users who have been finding problems with the library and have been +willing to help fix them. As such, the current version has quite a few improvements compared to the version of +Processing.js you might find bundled with some processing bundles, but: if there are things it doesn't do that +you rely on, do head over to the Processing.js issue +tracker and let people know.

                        Want to help out?

                        @@ -38,11 +39,12 @@

                        Want to help out?

                        About Processing.js

                        -

                        Processing.js is the sister project of the popular Processing -visual programming language, designed for the web. Processing.js makes your data visualizations, -digital art, interactive animations, educational graphs, video games, etc. work using web standards -and without any plug-ins. You write code using the Processing language, include it in your web -page, and Processing.js does the rest. It's not magic, but almost.

                        +

                        Processing.js is a project based on the popular Processing +visual programming language, designed to bring Processing sketches to the web without a need for +special browser plugins. Processing.js makes your data visualizations, digital art, interactive +animations, educational graphs, video games, etc. work using web standards and without any plug-ins. +You write code using the Processing language, include it in your web page, and Processing.js does +the rest. It's not magic, but it's close.

                        Originally developed by Ben Fry and Casey Reas, Processing started as an open source programming language based on Java to help From 52d99f8670b1e8ed5a5ceee3be4b3275b8bd0450 Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Mon, 1 Aug 2016 12:22:57 -0700 Subject: [PATCH 24/31] Update 2011-07-14-processing-js-v1-2-3-released.html --- blog/_posts/2011-07-14-processing-js-v1-2-3-released.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/_posts/2011-07-14-processing-js-v1-2-3-released.html b/blog/_posts/2011-07-14-processing-js-v1-2-3-released.html index 79fbd62..55affa6 100644 --- a/blog/_posts/2011-07-14-processing-js-v1-2-3-released.html +++ b/blog/_posts/2011-07-14-processing-js-v1-2-3-released.html @@ -46,7 +46,7 @@ you thinking:

                          -
                        • Virion, winner of Zynga's Hidden Agenda Facebook Game Competition
                        • +
                        • Virion, winner of Zynga's Hidden Agenda Facebook Game Competition
                        • Visualizing foursquare checkins with Processing.js
                        • Beautiful Processing.js experiments
                        • Processing.js WebGL 3D demo
                        • From 4f0f5df6710b665d0c29ef29c74900f7712f5e97 Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Mon, 1 Aug 2016 12:24:46 -0700 Subject: [PATCH 25/31] Update index.html --- download/index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/download/index.html b/download/index.html index b7dd35f..c68c4fe 100644 --- a/download/index.html +++ b/download/index.html @@ -4,8 +4,10 @@ {% assign current = site.categories.download.first %}

                          Download {{ current.title }}

                          -

                          Download the latest Processing.js, including full and minified versions, examples, -an API-only version without the Processing parser, or a complete zip file of everything. +

                          Download the latest Processing.js from NPM.

                          + +

                          Alternatively, download it directly from the Github code repository.

                          + Released {{ current.date | date_to_long_string }}

                          {{ current.content }} From a15dcec9d3a08f49d7256005c3e6d26082a7f490 Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Mon, 1 Aug 2016 12:28:53 -0700 Subject: [PATCH 26/31] Create 2016-08-01-v0.6.0.html --- "download/_posts/ \t2016-08-01-v0.6.0.html" | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 "download/_posts/ \t2016-08-01-v0.6.0.html" diff --git "a/download/_posts/ \t2016-08-01-v0.6.0.html" "b/download/_posts/ \t2016-08-01-v0.6.0.html" new file mode 100644 index 0000000..96f6228 --- /dev/null +++ "b/download/_posts/ \t2016-08-01-v0.6.0.html" @@ -0,0 +1,8 @@ +--- +title: Processing.js v1.6.0 +--- +
                            +
                          • Development - processing.js v1.6.0
                          • +
                          • Production - processing.min.js v1.6.0
                          • +

                            Alternatively, install through NPM by using npom install processing-js

                            From 918076805b682f1f416f770caa330f7804509f3a Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Mon, 1 Aug 2016 12:29:19 -0700 Subject: [PATCH 27/31] Rename 2016-08-01-v0.6.0.html to 2016-08-01-v1.6.0.html --- .../_posts/2016-08-01-v1.6.0.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "download/_posts/ \t2016-08-01-v0.6.0.html" => download/_posts/2016-08-01-v1.6.0.html (100%) diff --git "a/download/_posts/ \t2016-08-01-v0.6.0.html" b/download/_posts/2016-08-01-v1.6.0.html similarity index 100% rename from "download/_posts/ \t2016-08-01-v0.6.0.html" rename to download/_posts/2016-08-01-v1.6.0.html From 65da6262c4ecf5181a55b8e11a5d1cea9682aa3e Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Mon, 1 Aug 2016 12:30:18 -0700 Subject: [PATCH 28/31] Update _config.yml --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index d5303c9..2931de2 100644 --- a/_config.yml +++ b/_config.yml @@ -1,4 +1,4 @@ # Github defaults safe: true lsi: false -pygments: true +highlighter: true From 01bc4020ac7b9c7791ada75bfe19c75c29beefbb Mon Sep 17 00:00:00 2001 From: Mike Kamermans Date: Mon, 1 Aug 2016 12:32:02 -0700 Subject: [PATCH 29/31] Update _config.yml --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 2931de2..93a2530 100644 --- a/_config.yml +++ b/_config.yml @@ -1,4 +1,4 @@ # Github defaults safe: true lsi: false -highlighter: true +highlighter: rouge From 3533bb017221253de30a9a88d18d7f3f609fd6a8 Mon Sep 17 00:00:00 2001 From: Pomax Date: Fri, 5 Jun 2020 15:05:55 -0700 Subject: [PATCH 30/31] This project is done --- .gitignore | 6 - .htaccess | 1 - .rvmrc | 1 - .travis.yml | 6 - 404.html | 5 - CNAME | 1 - Gemfile | 2 - ISSUE_TEMPLATE.md | 7 - README.md | 142 +- _config.yml | 4 - _layouts/default.html | 101 -- _layouts/post.html | 8 - _layouts/withcc.html | 10 - articles/_posts/2011-12-01-PomaxGuide.html | 1486 ----------------- .../_posts/2011-12-02-RenderingModes.html | 278 --- articles/_posts/2011-12-03-p5QuickStart.html | 471 ------ articles/_posts/2011-12-04-jsQuickStart.html | 595 ------- articles/_posts/template.html | 7 - articles/index.html | 12 - .../2010-02-03-processingjs-04-released.html | 92 - ...2010-02-17-processingjs-v050-released.html | 89 - ...2010-02-26-processingjs-v060-released.html | 56 - ...2010-03-24-processingjs-v070-released.html | 73 - ...2010-03-26-processingjs-v071-released.html | 24 - .../2010-04-09-processingjs-v08-released.html | 71 - .../2010-05-11-processingjs-v09-released.html | 100 -- ...2010-05-20-processingjs-v091-released.html | 29 - ...2010-06-16-processingjs-v094-released.html | 86 - ...2010-07-26-processingjs-v096-released.html | 66 - ...2010-08-16-processingjs-v097-released.html | 66 - .../2010-11-18-processingjs-v10-released.html | 73 - .../2011-03-01-processingjs-v11-released.html | 78 - .../2011-05-31-processingjs-v12-released.html | 168 -- ...2011-06-02-processingjs-v121-released.html | 22 - ...1-07-14-processing-js-v1-2-3-released.html | 137 -- ...011-08-02-processing-js-siggraph-2011.html | 24 - ...1-08-24-processing-js-v1-3-0-released.html | 164 -- ...011-09-05-meet-the-processing-js-team.html | 20 - ...1-10-06-processing-js-v1-3-5-released.html | 67 - ...1-10-13-processing-js-v1-3-6-released.html | 23 - .../2011-10-25-processing-js-workshops.html | 37 - ...2-07-31-processing-js-v1-4-0-released.html | 77 - ...012-08-08-processing-js-v1-4-1-hotfix.html | 19 - .../2014-03-25-processing-js-v1-4-7.html | 22 - .../2014-03-25-processing-js-v1-4-8.html | 9 - .../2014-04-17-processing-js-v1-4-8.html | 9 - blog/_posts/template.html | 10 - blog/index.html | 19 - community/index.html | 57 - css/bootstrap.css | 356 ---- css/processing-js.css | 239 --- css/syntax.css | 60 - download/_posts/2008-05-08-v0.0.0.html | 6 - download/_posts/2010-01-02-v0.0.0.html | 6 - download/_posts/2010-02-02-v0.4.0.html | 8 - download/_posts/2010-02-17-v0.5.0.html | 9 - download/_posts/2010-02-26-v0.6.0.html | 9 - download/_posts/2010-03-24-v0.7.0.html | 9 - download/_posts/2010-03-25-v0.7.1.html | 9 - download/_posts/2010-04-08-v0.8.0.html | 9 - download/_posts/2010-05-11-v0.9.0.html | 9 - download/_posts/2010-05-20-v0.9.1.html | 9 - download/_posts/2010-06-15-v0.9.3.html | 9 - download/_posts/2010-06-16-v0.9.4.html | 9 - download/_posts/2010-07-26-v0.9.6.html | 9 - download/_posts/2010-08-14-v0.9.7.html | 9 - download/_posts/2010-11-28-v1.0.0.html | 9 - download/_posts/2011-02-27-v1.1.0.html | 9 - download/_posts/2011-06-02-v1.2.1.html | 11 - download/_posts/2011-07-14-v1.2.3.html | 11 - download/_posts/2011-08-23-v1.3.0.html | 11 - download/_posts/2011-10-13-v1.3.6.html | 11 - download/_posts/2012-07-31-v1.4.0.html | 11 - download/_posts/2012-08-09-v1.4.1.html | 11 - download/_posts/2014-03-25-v1.4.7.html | 8 - download/_posts/2014-03-25-v1.4.8.html | 8 - download/_posts/2016-08-01-v1.6.0.html | 8 - download/_posts/template.html | 11 - download/archived.html | 14 - download/index.html | 18 - exhibition/_posts/2011-11-01-ui-dial.html | 8 - exhibition/_posts/2011-11-02-sparklines.html | 8 - .../_posts/2011-11-03-tower-of-defense.html | 8 - exhibition/_posts/2011-11-04-mouse.html | 8 - exhibition/_posts/2011-11-05-wiki.html | 8 - .../_posts/2011-11-06-balldroppings.html | 8 - exhibition/_posts/2011-11-07-twitch.html | 8 - exhibition/_posts/2011-11-08-bittorrent.html | 8 - exhibition/_posts/2011-11-09-askken.html | 8 - exhibition/_posts/2011-11-10-abstract.html | 8 - exhibition/_posts/2011-11-11-facebook.html | 8 - exhibition/_posts/2011-11-12-inbox.html | 8 - exhibition/_posts/2011-11-13-wordpress.html | 8 - exhibition/_posts/2011-11-14-drupal.html | 8 - exhibition/_posts/2011-11-15-asteroids.html | 8 - exhibition/_posts/2011-11-16-jsnake.html | 8 - .../_posts/2011-11-17-gif-tower-defense.html | 8 - exhibition/_posts/2011-11-18-letters.html | 10 - exhibition/_posts/2011-11-19-fizz-bloom.html | 9 - exhibition/_posts/2011-11-20-virion.html | 10 - exhibition/_posts/2011-11-21-kanji.html | 8 - .../_posts/2011-11-22-clearcongress.html | 8 - exhibition/_posts/2011-11-23-bezierinfo.html | 8 - exhibition/_posts/2011-11-24-tunealiser.html | 8 - exhibition/_posts/2011-11-25-toxiclibs.html | 8 - exhibition/_posts/2011-11-26-p5p.html | 8 - .../2011-11-27-animated-background.html | 8 - exhibition/_posts/2011-11-28-afl-flags.html | 8 - .../_posts/2011-11-29-twitter-flow.html | 8 - exhibition/_posts/2011-11-30-coaltrace.html | 9 - exhibition/_posts/2011-12-01-flocking.html | 8 - exhibition/_posts/2011-12-02-pewpew.html | 8 - exhibition/_posts/2011-12-03-fotn.html | 8 - .../_posts/2011-12-04-coffeescript.html | 8 - exhibition/_posts/2011-12-15-andor.html | 8 - exhibition/_posts/2011-12-24-advent-2011.html | 8 - .../_posts/2011-12-25-circle-of-fifths.html | 8 - .../_posts/2012-07-13-mylifeaquatic.html | 10 - exhibition/_posts/2013-04-26-delaunay.html | 8 - exhibition/_posts/template.html | 8 - exhibition/index.html | 10 - favicon.ico | Bin 1150 -> 0 bytes images/exhibition/abstract.jpg | Bin 43710 -> 0 bytes images/exhibition/advent-2011.png | Bin 16027 -> 0 bytes images/exhibition/afl-flags.png | Bin 22753 -> 0 bytes images/exhibition/andor.png | Bin 6275 -> 0 bytes images/exhibition/ask.png | Bin 14695 -> 0 bytes images/exhibition/astroid.jpg | Bin 2592 -> 0 bytes images/exhibition/balldroppings.gif | Bin 1044 -> 0 bytes images/exhibition/bezier.png | Bin 5541 -> 0 bytes images/exhibition/bittorrent.jpg | Bin 50042 -> 0 bytes images/exhibition/cecinestpasparis.png | Bin 33119 -> 0 bytes images/exhibition/circle-of-fifths.png | Bin 14839 -> 0 bytes images/exhibition/clearcongress.png | Bin 15834 -> 0 bytes images/exhibition/coaltrace.png | Bin 6940 -> 0 bytes images/exhibition/delaunay.png | Bin 40786 -> 0 bytes images/exhibition/drupal.png | Bin 8225 -> 0 bytes images/exhibition/dryly.png | Bin 21290 -> 0 bytes images/exhibition/facebook.png | Bin 16567 -> 0 bytes images/exhibition/fizz-processingjs.png | Bin 18667 -> 0 bytes images/exhibition/fotn.png | Bin 20568 -> 0 bytes images/exhibition/gmail.png | Bin 16658 -> 0 bytes images/exhibition/harry-flocking.png | Bin 6364 -> 0 bytes images/exhibition/kanji.png | Bin 19229 -> 0 bytes images/exhibition/letters.jpg | Bin 4325 -> 0 bytes .../mousedrivengraphicequalizer.gif | Bin 1283 -> 0 bytes images/exhibition/mylifeaquatic.png | Bin 14904 -> 0 bytes images/exhibition/pewpew.png | Bin 4698 -> 0 bytes images/exhibition/snake.jpg | Bin 5613 -> 0 bytes images/exhibition/sparklines.gif | Bin 1488 -> 0 bytes images/exhibition/towerOfDefense2.jpeg | Bin 4113 -> 0 bytes images/exhibition/towerofdefense.gif | Bin 2543 -> 0 bytes images/exhibition/toxiclibs.png | Bin 11876 -> 0 bytes images/exhibition/tunealiser.png | Bin 6656 -> 0 bytes images/exhibition/twitch.gif | Bin 2634 -> 0 bytes images/exhibition/twitterflow.png | Bin 2008 -> 0 bytes images/exhibition/uidial.gif | Bin 1501 -> 0 bytes images/exhibition/virion.png | Bin 22526 -> 0 bytes images/exhibition/wikivisualizations.gif | Bin 1670 -> 0 bytes .../exhibition/wordpress-logo-stacked-rgb.png | Bin 10774 -> 0 bytes images/exhibition/zepadovani.png | Bin 10640 -> 0 bytes images/forkme-right-orange.png | Bin 9267 -> 0 bytes images/github-v04.png | Bin 19407 -> 0 bytes images/github.gif | Bin 704 -> 0 bytes images/google-group.png | Bin 3584 -> 0 bytes images/header.png | Bin 1340 -> 0 bytes images/irc.gif | Bin 1047 -> 0 bytes images/jmartinho_tr-lines_2011.png | Bin 6218 -> 0 bytes images/lighthouseapp-logo.png | Bin 2142 -> 0 bytes images/processingjs.gif | Bin 950 -> 0 bytes images/seneca-logo.png | Bin 5031 -> 0 bytes images/somerights20.gif | Bin 1082 -> 0 bytes index.html | 90 - js/buzz.js | 855 ---------- js/jquery.tweet.min.js | 3 - js/processing.min.js | 431 ----- js/tabselector.js | 33 - learning/basic/additivewave/index.html | 277 --- learning/basic/alphamask/data/mask.jpg | Bin 2825 -> 0 bytes learning/basic/alphamask/data/test.jpg | Bin 2792 -> 0 bytes learning/basic/alphamask/index.html | 117 -- learning/basic/arctangent/index.html | 269 --- learning/basic/arm/index.html | 155 -- learning/basic/array/index.html | 133 -- learning/basic/array2d/index.html | 115 -- learning/basic/arrayobjects/index.html | 293 ---- .../backgroundimage/data/milan_rubbish.jpg | Bin 19754 -> 0 bytes learning/basic/backgroundimage/index.html | 133 -- learning/basic/bezier/index.html | 71 - learning/basic/bezierellipse/index.html | 411 ----- learning/basic/brightness/index.html | 127 -- .../charactersstrings/data/rathausFrog.jpg | Bin 8342 -> 0 bytes learning/basic/charactersstrings/index.html | 293 ---- learning/basic/clock/index.html | 127 -- learning/basic/colorwheel/index.html | 303 ---- learning/basic/compositeobjects/index.html | 421 ----- learning/basic/conditionals1/index.html | 97 -- learning/basic/conditionals2/index.html | 103 -- learning/basic/constrain/index.html | 163 -- learning/basic/coordinates/index.html | 163 -- learning/basic/creategraphics/data/mask.jpg | Bin 2825 -> 0 bytes learning/basic/creategraphics/data/test.jpg | Bin 2792 -> 0 bytes learning/basic/creategraphics/index.html | 129 -- learning/basic/createimage/data/mask.jpg | Bin 2825 -> 0 bytes learning/basic/createimage/data/test.jpg | Bin 2792 -> 0 bytes learning/basic/createimage/index.html | 99 -- learning/basic/creating/index.html | 107 -- learning/basic/datatypeconversion/index.html | 111 -- learning/basic/displaying/data/arch.jpg | Bin 23957 -> 0 bytes learning/basic/displaying/index.html | 83 - learning/basic/distance1d/index.html | 201 --- learning/basic/distance2d/index.html | 119 -- learning/basic/doublerandom/index.html | 79 - learning/basic/easing/index.html | 159 -- learning/basic/embeddediteration/index.html | 97 -- learning/basic/embeddedlinks/index.html | 283 ---- learning/basic/functions/index.html | 133 -- learning/basic/graphing2dequation/index.html | 157 -- learning/basic/hue/index.html | 125 -- learning/basic/incrementdecrement/index.html | 187 --- learning/basic/index.html | 154 -- learning/basic/inheritance/index.html | 311 ---- learning/basic/integersfloats/index.html | 141 -- learning/basic/iteration/index.html | 185 -- learning/basic/keyboard/data/brugges.jpg | Bin 34371 -> 0 bytes learning/basic/keyboard/index.html | 159 -- learning/basic/keyboardfunctions/index.html | 353 ---- learning/basic/letters/index.html | 243 --- learning/basic/lineargradient/index.html | 289 ---- learning/basic/loadingimages/index.html | 55 - learning/basic/logicaloperators/index.html | 169 -- learning/basic/loop/index.html | 157 -- learning/basic/milliseconds/index.html | 103 -- learning/basic/modulo/index.html | 125 -- learning/basic/mouse1d/index.html | 201 --- learning/basic/mouse2d/index.html | 93 -- learning/basic/mousefunctions/index.html | 273 --- learning/basic/mousepress/index.html | 91 - learning/basic/mousesignals/index.html | 215 --- .../basic/multipleconstructors/index.html | 187 --- learning/basic/neighborhood/index.html | 1199 ------------- learning/basic/noise1d/index.html | 145 -- learning/basic/noise2d/index.html | 181 -- learning/basic/noise3d/index.html | 207 --- learning/basic/noisewave/index.html | 241 --- learning/basic/noloop/index.html | 125 -- learning/basic/objects/index.html | 287 ---- learning/basic/operatorprecedence/index.html | 213 --- learning/basic/piechart/index.html | 91 - learning/basic/pointillism/data/eames.jpg | Bin 44496 -> 0 bytes learning/basic/pointillism/data/sunflower.jpg | Bin 36656 -> 0 bytes learning/basic/pointillism/index.html | 129 -- learning/basic/pointslines/index.html | 129 -- learning/basic/polartocartesian/index.html | 193 --- learning/basic/radialgradient/index.html | 231 --- learning/basic/random/index.html | 75 - learning/basic/reading/data/cait.jpg | Bin 7920 -> 0 bytes learning/basic/reading/index.html | 177 -- learning/basic/recursion/index.html | 129 -- learning/basic/recursion2/index.html | 129 -- learning/basic/redraw/index.html | 141 -- learning/basic/relativity/index.html | 145 -- learning/basic/rotate/index.html | 147 -- learning/basic/saturation/index.html | 127 -- learning/basic/scale/index.html | 151 -- learning/basic/setupdraw/index.html | 119 -- learning/basic/shapeprimitives/index.html | 77 - learning/basic/simplecurves/index.html | 323 ---- learning/basic/sine/index.html | 185 -- learning/basic/sinecosine/index.html | 231 --- learning/basic/sinewave/index.html | 221 --- learning/basic/sprite/data/sky.jpg | Bin 3766 -> 0 bytes learning/basic/sprite/data/teddy.gif | Bin 746 -> 0 bytes learning/basic/sprite/index.html | 185 -- learning/basic/statementscomments/index.html | 77 - learning/basic/storinginput/index.html | 157 -- learning/basic/translate/index.html | 163 -- .../basic/transparency/data/construct.jpg | Bin 34699 -> 0 bytes learning/basic/transparency/data/wash.jpg | Bin 34685 -> 0 bytes learning/basic/transparency/index.html | 117 -- learning/basic/triangleflower/index.html | 183 -- learning/basic/trianglestrip/index.html | 137 -- learning/basic/truefalse/index.html | 133 -- learning/basic/variables/index.html | 95 -- learning/basic/variablescope/index.html | 233 --- learning/basic/vertices/index.html | 179 -- learning/basic/wavegradient/index.html | 141 -- learning/basic/widthheight/index.html | 67 - learning/basic/words/index.html | 121 -- learning/custom/index.html | 18 - learning/custom/intersect/index.html | 244 --- learning/custom/molten/index.html | 292 ---- learning/custom/snake/data/dirt.jpg | Bin 34606 -> 0 bytes learning/custom/snake/index.html | 159 -- learning/index.html | 388 ----- learning/screens/Picture-14.png | Bin 18978 -> 0 bytes learning/screens/Picture-15.png | Bin 29282 -> 0 bytes learning/screens/Picture-16.png | Bin 1367 -> 0 bytes learning/screens/Picture-17.png | Bin 2821 -> 0 bytes learning/screens/Picture-18.png | Bin 4099 -> 0 bytes learning/screens/Picture-19.png | Bin 2647 -> 0 bytes learning/screens/Picture-20.png | Bin 8807 -> 0 bytes learning/screens/Picture-21.png | Bin 1323 -> 0 bytes learning/screens/Picture-22.png | Bin 8423 -> 0 bytes learning/screens/Picture-23.png | Bin 2916 -> 0 bytes learning/screens/Picture-24.png | Bin 855 -> 0 bytes learning/screens/Picture-25.png | Bin 3673 -> 0 bytes learning/screens/Picture-26.png | Bin 887 -> 0 bytes learning/screens/Picture-27.png | Bin 698 -> 0 bytes learning/screens/Picture-28.png | Bin 1415 -> 0 bytes learning/screens/Picture-29.png | Bin 1823 -> 0 bytes learning/screens/Picture-30.png | Bin 1336 -> 0 bytes learning/screens/Picture-31.png | Bin 1982 -> 0 bytes learning/screens/Picture-32.png | Bin 1858 -> 0 bytes learning/screens/Picture-33.png | Bin 1381 -> 0 bytes learning/screens/Picture-34.png | Bin 6815 -> 0 bytes learning/screens/Picture-35.png | Bin 8575 -> 0 bytes learning/screens/Picture-36.png | Bin 842 -> 0 bytes learning/screens/Picture-37.png | Bin 916 -> 0 bytes learning/screens/Picture-38.png | Bin 5586 -> 0 bytes learning/screens/Picture-39.png | Bin 7204 -> 0 bytes learning/screens/Picture-40.png | Bin 1831 -> 0 bytes learning/screens/Picture-41.png | Bin 779 -> 0 bytes learning/screens/Picture-42.png | Bin 2964 -> 0 bytes learning/screens/Picture-43.png | Bin 1603 -> 0 bytes learning/screens/Picture-44.png | Bin 781 -> 0 bytes learning/screens/Picture-45.png | Bin 1756 -> 0 bytes learning/screens/Picture-46.png | Bin 1468 -> 0 bytes learning/screens/Picture-47.png | Bin 2955 -> 0 bytes learning/screens/Picture-48.png | Bin 1426 -> 0 bytes learning/screens/Picture-49.png | Bin 1559 -> 0 bytes learning/screens/Picture-50.png | Bin 3669 -> 0 bytes learning/screens/Picture-51.png | Bin 3288 -> 0 bytes learning/screens/Picture-52.png | Bin 2220 -> 0 bytes learning/screens/molten2.png | Bin 7532 -> 0 bytes .../animatedsprite/data/PT_Shifty_0000.gif | Bin 314 -> 0 bytes .../animatedsprite/data/PT_Shifty_0001.gif | Bin 314 -> 0 bytes .../animatedsprite/data/PT_Shifty_0002.gif | Bin 318 -> 0 bytes .../animatedsprite/data/PT_Shifty_0003.gif | Bin 328 -> 0 bytes .../animatedsprite/data/PT_Shifty_0004.gif | Bin 343 -> 0 bytes .../animatedsprite/data/PT_Shifty_0005.gif | Bin 379 -> 0 bytes .../animatedsprite/data/PT_Shifty_0006.gif | Bin 420 -> 0 bytes .../animatedsprite/data/PT_Shifty_0007.gif | Bin 501 -> 0 bytes .../animatedsprite/data/PT_Shifty_0008.gif | Bin 615 -> 0 bytes .../animatedsprite/data/PT_Shifty_0009.gif | Bin 733 -> 0 bytes .../animatedsprite/data/PT_Shifty_0010.gif | Bin 806 -> 0 bytes .../animatedsprite/data/PT_Shifty_0011.gif | Bin 842 -> 0 bytes .../animatedsprite/data/PT_Shifty_0012.gif | Bin 877 -> 0 bytes .../animatedsprite/data/PT_Shifty_0013.gif | Bin 877 -> 0 bytes .../animatedsprite/data/PT_Shifty_0014.gif | Bin 951 -> 0 bytes .../animatedsprite/data/PT_Shifty_0015.gif | Bin 934 -> 0 bytes .../animatedsprite/data/PT_Shifty_0016.gif | Bin 917 -> 0 bytes .../animatedsprite/data/PT_Shifty_0017.gif | Bin 907 -> 0 bytes .../animatedsprite/data/PT_Shifty_0018.gif | Bin 907 -> 0 bytes .../animatedsprite/data/PT_Shifty_0019.gif | Bin 892 -> 0 bytes .../animatedsprite/data/PT_Shifty_0020.gif | Bin 854 -> 0 bytes .../animatedsprite/data/PT_Shifty_0021.gif | Bin 841 -> 0 bytes .../animatedsprite/data/PT_Shifty_0022.gif | Bin 886 -> 0 bytes .../animatedsprite/data/PT_Shifty_0023.gif | Bin 805 -> 0 bytes .../animatedsprite/data/PT_Shifty_0024.gif | Bin 733 -> 0 bytes .../animatedsprite/data/PT_Shifty_0025.gif | Bin 667 -> 0 bytes .../animatedsprite/data/PT_Shifty_0026.gif | Bin 596 -> 0 bytes .../animatedsprite/data/PT_Shifty_0027.gif | Bin 539 -> 0 bytes .../animatedsprite/data/PT_Shifty_0028.gif | Bin 503 -> 0 bytes .../animatedsprite/data/PT_Shifty_0029.gif | Bin 451 -> 0 bytes .../animatedsprite/data/PT_Shifty_0030.gif | Bin 392 -> 0 bytes .../animatedsprite/data/PT_Shifty_0031.gif | Bin 351 -> 0 bytes .../animatedsprite/data/PT_Shifty_0032.gif | Bin 333 -> 0 bytes .../animatedsprite/data/PT_Shifty_0033.gif | Bin 323 -> 0 bytes .../animatedsprite/data/PT_Shifty_0034.gif | Bin 316 -> 0 bytes .../animatedsprite/data/PT_Shifty_0035.gif | Bin 316 -> 0 bytes .../animatedsprite/data/PT_Shifty_0036.gif | Bin 315 -> 0 bytes .../animatedsprite/data/PT_Shifty_0037.gif | Bin 312 -> 0 bytes .../animatedsprite/data/PT_Teddy_0000.gif | Bin 305 -> 0 bytes .../animatedsprite/data/PT_Teddy_0001.gif | Bin 309 -> 0 bytes .../animatedsprite/data/PT_Teddy_0002.gif | Bin 310 -> 0 bytes .../animatedsprite/data/PT_Teddy_0003.gif | Bin 310 -> 0 bytes .../animatedsprite/data/PT_Teddy_0004.gif | Bin 315 -> 0 bytes .../animatedsprite/data/PT_Teddy_0005.gif | Bin 329 -> 0 bytes .../animatedsprite/data/PT_Teddy_0006.gif | Bin 339 -> 0 bytes .../animatedsprite/data/PT_Teddy_0007.gif | Bin 354 -> 0 bytes .../animatedsprite/data/PT_Teddy_0008.gif | Bin 390 -> 0 bytes .../animatedsprite/data/PT_Teddy_0009.gif | Bin 415 -> 0 bytes .../animatedsprite/data/PT_Teddy_0010.gif | Bin 451 -> 0 bytes .../animatedsprite/data/PT_Teddy_0011.gif | Bin 482 -> 0 bytes .../animatedsprite/data/PT_Teddy_0012.gif | Bin 546 -> 0 bytes .../animatedsprite/data/PT_Teddy_0013.gif | Bin 566 -> 0 bytes .../animatedsprite/data/PT_Teddy_0014.gif | Bin 607 -> 0 bytes .../animatedsprite/data/PT_Teddy_0015.gif | Bin 692 -> 0 bytes .../animatedsprite/data/PT_Teddy_0016.gif | Bin 778 -> 0 bytes .../animatedsprite/data/PT_Teddy_0017.gif | Bin 853 -> 0 bytes .../animatedsprite/data/PT_Teddy_0018.gif | Bin 914 -> 0 bytes .../animatedsprite/data/PT_Teddy_0019.gif | Bin 936 -> 0 bytes .../animatedsprite/data/PT_Teddy_0020.gif | Bin 968 -> 0 bytes .../animatedsprite/data/PT_Teddy_0021.gif | Bin 971 -> 0 bytes .../animatedsprite/data/PT_Teddy_0022.gif | Bin 987 -> 0 bytes .../animatedsprite/data/PT_Teddy_0023.gif | Bin 1013 -> 0 bytes .../animatedsprite/data/PT_Teddy_0024.gif | Bin 1014 -> 0 bytes .../animatedsprite/data/PT_Teddy_0025.gif | Bin 1002 -> 0 bytes .../animatedsprite/data/PT_Teddy_0026.gif | Bin 976 -> 0 bytes .../animatedsprite/data/PT_Teddy_0027.gif | Bin 984 -> 0 bytes .../animatedsprite/data/PT_Teddy_0028.gif | Bin 936 -> 0 bytes .../animatedsprite/data/PT_Teddy_0029.gif | Bin 891 -> 0 bytes .../animatedsprite/data/PT_Teddy_0030.gif | Bin 826 -> 0 bytes .../animatedsprite/data/PT_Teddy_0031.gif | Bin 717 -> 0 bytes .../animatedsprite/data/PT_Teddy_0032.gif | Bin 625 -> 0 bytes .../animatedsprite/data/PT_Teddy_0033.gif | Bin 543 -> 0 bytes .../animatedsprite/data/PT_Teddy_0034.gif | Bin 486 -> 0 bytes .../animatedsprite/data/PT_Teddy_0035.gif | Bin 468 -> 0 bytes .../animatedsprite/data/PT_Teddy_0036.gif | Bin 453 -> 0 bytes .../animatedsprite/data/PT_Teddy_0037.gif | Bin 440 -> 0 bytes .../animatedsprite/data/PT_Teddy_0038.gif | Bin 428 -> 0 bytes .../animatedsprite/data/PT_Teddy_0039.gif | Bin 410 -> 0 bytes .../animatedsprite/data/PT_Teddy_0040.gif | Bin 387 -> 0 bytes .../animatedsprite/data/PT_Teddy_0041.gif | Bin 351 -> 0 bytes .../animatedsprite/data/PT_Teddy_0042.gif | Bin 329 -> 0 bytes .../animatedsprite/data/PT_Teddy_0043.gif | Bin 322 -> 0 bytes .../animatedsprite/data/PT_Teddy_0044.gif | Bin 318 -> 0 bytes .../animatedsprite/data/PT_Teddy_0045.gif | Bin 315 -> 0 bytes .../animatedsprite/data/PT_Teddy_0046.gif | Bin 310 -> 0 bytes .../animatedsprite/data/PT_Teddy_0047.gif | Bin 311 -> 0 bytes .../animatedsprite/data/PT_Teddy_0048.gif | Bin 311 -> 0 bytes .../animatedsprite/data/PT_Teddy_0049.gif | Bin 312 -> 0 bytes .../animatedsprite/data/PT_Teddy_0050.gif | Bin 312 -> 0 bytes .../animatedsprite/data/PT_Teddy_0051.gif | Bin 311 -> 0 bytes .../animatedsprite/data/PT_Teddy_0052.gif | Bin 308 -> 0 bytes .../animatedsprite/data/PT_Teddy_0053.gif | Bin 306 -> 0 bytes .../animatedsprite/data/PT_Teddy_0054.gif | Bin 303 -> 0 bytes .../animatedsprite/data/PT_Teddy_0055.gif | Bin 303 -> 0 bytes .../animatedsprite/data/PT_Teddy_0056.gif | Bin 306 -> 0 bytes .../animatedsprite/data/PT_Teddy_0057.gif | Bin 308 -> 0 bytes .../animatedsprite/data/PT_Teddy_0058.gif | Bin 306 -> 0 bytes .../animatedsprite/data/PT_Teddy_0059.gif | Bin 306 -> 0 bytes learning/topic/animatedsprite/index.html | 407 ----- learning/topic/animator/index.html | 183 -- learning/topic/blur/data/trees.jpg | Bin 34820 -> 0 bytes learning/topic/blur/index.html | 181 -- learning/topic/bounce/index.html | 193 --- learning/topic/bouncybubbles/index.html | 385 ----- learning/topic/brightness/data/wires.jpg | Bin 12813 -> 0 bytes learning/topic/brightness/index.html | 189 --- learning/topic/brownian/index.html | 197 --- learning/topic/button/index.html | 401 ----- learning/topic/buttons/index.html | 877 ---------- learning/topic/chain/index.html | 269 --- learning/topic/circlecollision/index.html | 659 -------- learning/topic/collision/index.html | 321 ---- learning/topic/continuouslines/index.html | 73 - learning/topic/convolution/data/end.jpg | Bin 36399 -> 0 bytes learning/topic/convolution/index.html | 301 ---- learning/topic/conway/index.html | 317 ---- learning/topic/customtool/data/milan.jpg | Bin 8729 -> 0 bytes learning/topic/customtool/data/paris.jpg | Bin 67866 -> 0 bytes learning/topic/customtool/index.html | 345 ---- learning/topic/edgedetection/data/house.jpg | Bin 26723 -> 0 bytes learning/topic/edgedetection/index.html | 167 -- learning/topic/flocking/index.html | 1445 ---------------- learning/topic/fluid/index.html | 829 --------- learning/topic/follow1/index.html | 161 -- learning/topic/follow2/index.html | 169 -- learning/topic/follow3/index.html | 177 -- learning/topic/handles/index.html | 561 ------- learning/topic/histogram/data/cdi01_g.jpg | Bin 26047 -> 0 bytes learning/topic/histogram/index.html | 185 -- learning/topic/imagebutton/data/base.gif | Bin 774 -> 0 bytes learning/topic/imagebutton/data/down.gif | Bin 656 -> 0 bytes learning/topic/imagebutton/data/roll.gif | Bin 774 -> 0 bytes learning/topic/imagebutton/index.html | 419 ----- learning/topic/index.html | 97 -- learning/topic/koch/index.html | 699 -------- learning/topic/linear/index.html | 107 -- .../topic/linearimage/data/florence03.jpg | Bin 58018 -> 0 bytes learning/topic/linearimage/index.html | 231 --- learning/topic/loadfile1/data/positions.txt | 206 --- learning/topic/loadfile1/index.html | 123 -- learning/topic/loadfile2/data/cars2.tsv | 1 - learning/topic/loadfile2/index.html | 287 ---- learning/topic/mandelbrot/index.html | 281 ---- learning/topic/movingoncurves/index.html | 203 --- .../topic/multipleparticlesystems/index.html | 1323 --------------- learning/topic/pattern/index.html | 139 -- learning/topic/penrosesnowflake/index.html | 825 --------- learning/topic/penrosetile/index.html | 933 ----------- learning/topic/pentigree/index.html | 717 -------- learning/topic/pixelarray/data/ystone08.jpg | Bin 56999 -> 0 bytes learning/topic/pixelarray/index.html | 185 -- learning/topic/puff/index.html | 353 ---- learning/topic/pulses/index.html | 141 -- learning/topic/reach1/index.html | 191 --- learning/topic/reach2/index.html | 243 --- learning/topic/reach3/index.html | 311 ---- learning/topic/reflection1/index.html | 513 ------ learning/topic/reflection2/index.html | 701 -------- learning/topic/rollover/index.html | 355 ---- learning/topic/scribbleplotter/index.html | 367 ---- learning/topic/scrollbar/data/seedBottom.jpg | Bin 13319 -> 0 bytes learning/topic/scrollbar/data/seedTop.jpg | Bin 15044 -> 0 bytes learning/topic/scrollbar/index.html | 495 ------ .../topic/sequential/data/PT_anim0000.gif | Bin 3840 -> 0 bytes .../topic/sequential/data/PT_anim0001.gif | Bin 3819 -> 0 bytes .../topic/sequential/data/PT_anim0002.gif | Bin 3910 -> 0 bytes .../topic/sequential/data/PT_anim0003.gif | Bin 3750 -> 0 bytes .../topic/sequential/data/PT_anim0004.gif | Bin 3681 -> 0 bytes .../topic/sequential/data/PT_anim0005.gif | Bin 3657 -> 0 bytes .../topic/sequential/data/PT_anim0006.gif | Bin 3437 -> 0 bytes .../topic/sequential/data/PT_anim0007.gif | Bin 3547 -> 0 bytes .../topic/sequential/data/PT_anim0008.gif | Bin 3631 -> 0 bytes .../topic/sequential/data/PT_anim0009.gif | Bin 3651 -> 0 bytes .../topic/sequential/data/PT_anim0010.gif | Bin 3695 -> 0 bytes .../topic/sequential/data/PT_anim0011.gif | Bin 3827 -> 0 bytes learning/topic/sequential/index.html | 100 -- .../topic/simpleparticlesystem/index.html | 1055 ------------ learning/topic/smoke/index.html | 1063 ------------ .../smokeparticlesystem/data/texture.gif | Bin 1829 -> 0 bytes learning/topic/smokeparticlesystem/index.html | 1299 -------------- learning/topic/softbody/index.html | 397 ----- learning/topic/spore1/index.html | 525 ------ learning/topic/spore2/index.html | 689 -------- learning/topic/spring/index.html | 393 ----- learning/topic/springs/index.html | 645 ------- learning/topic/tickle/index.html | 131 -- learning/topic/tileimages/index.html | 159 -- learning/topic/tree/index.html | 227 --- learning/topic/wolfram/index.html | 521 ------ reference/Array/index.html | 142 -- reference/ArrayList/index.html | 166 -- reference/HALF_PI.gif | Bin 2296 -> 0 bytes reference/HALF_PI/index.html | 110 -- reference/HashMap/index.html | 74 - reference/Object/index.html | 164 -- reference/PFont.gif | Bin 646 -> 0 bytes reference/PFont/index.html | 76 - reference/PFont_list_/index.html | 59 - reference/PGraphics/index.html | 95 -- reference/PGraphics_beginDraw_/index.html | 62 - reference/PGraphics_endDraw_/index.html | 61 - reference/PI.gif | Bin 2451 -> 0 bytes reference/PI/index.html | 112 -- reference/PImage.jpg | Bin 10095 -> 0 bytes reference/PImage/index.html | 147 -- reference/PImage_blend_/index.html | 144 -- reference/PImage_blend_add.jpg | Bin 7988 -> 0 bytes reference/PImage_blend_darkest.jpg | Bin 9234 -> 0 bytes reference/PImage_blend_lightest.jpg | Bin 8760 -> 0 bytes reference/PImage_blend_subtract.jpg | Bin 8754 -> 0 bytes reference/PImage_copy.jpg | Bin 11455 -> 0 bytes reference/PImage_copy_/index.html | 101 -- reference/PImage_filter_/index.html | 85 - reference/PImage_get.jpg | Bin 7336 -> 0 bytes reference/PImage_get2.jpg | Bin 11455 -> 0 bytes reference/PImage_get_/index.html | 95 -- reference/PImage_height.jpg | Bin 5084 -> 0 bytes reference/PImage_height/index.html | 48 - reference/PImage_loadPixels_/index.html | 62 - reference/PImage_mask_/index.html | 73 - reference/PImage_pixels.jpg | Bin 9799 -> 0 bytes reference/PImage_pixels/index.html | 70 - reference/PImage_resize.jpg | Bin 28170 -> 0 bytes reference/PImage_resize_/index.html | 74 - reference/PImage_resize_2.jpg | Bin 28546 -> 0 bytes reference/PImage_save_/index.html | 70 - reference/PImage_set.jpg | Bin 8815 -> 0 bytes reference/PImage_set_/index.html | 81 - reference/PImage_updatePixels_/index.html | 81 - reference/PImage_width.jpg | Bin 5084 -> 0 bytes reference/PImage_width/index.html | 48 - reference/PShape/index.html | 123 -- reference/PShape_disableStyle.jpg | Bin 6894 -> 0 bytes reference/PShape_disableStyle_/index.html | 59 - reference/PShape_enableStyle.jpg | Bin 7193 -> 0 bytes reference/PShape_enableStyle_/index.html | 60 - reference/PShape_getChild.jpg | Bin 3919 -> 0 bytes reference/PShape_getChild_/index.html | 67 - reference/PShape_height/index.html | 53 - reference/PShape_isVisible_/index.html | 64 - reference/PShape_rotateX_/index.html | 76 - reference/PShape_rotateY_/index.html | 76 - reference/PShape_rotateZ_/index.html | 76 - reference/PShape_rotate_/index.html | 78 - reference/PShape_scale_/index.html | 92 - reference/PShape_setVisible_/index.html | 68 - reference/PShape_translate_/index.html | 84 - reference/PShape_visible.jpg | Bin 7629 -> 0 bytes reference/PShape_width/index.html | 53 - reference/PVector/index.html | 165 -- reference/PVector_add_/index.html | 126 -- reference/PVector_angleBetween_/index.html | 63 - reference/PVector_array_/index.html | 57 - reference/PVector_cross_/index.html | 57 - reference/PVector_dist_/index.html | 73 - reference/PVector_div_/index.html | 130 -- reference/PVector_dot_/index.html | 86 - reference/PVector_get_/index.html | 63 - reference/PVector_limit_/index.html | 56 - reference/PVector_mag_/index.html | 60 - reference/PVector_mult_/index.html | 130 -- reference/PVector_normalize_/index.html | 52 - reference/PVector_set_/index.html | 103 -- reference/PVector_sub_/index.html | 125 -- reference/PVector_x/index.html | 58 - reference/PVector_y/index.html | 59 - reference/PVector_z/index.html | 58 - reference/QUARTER_PI/index.html | 82 - reference/String/index.html | 246 --- reference/String_charAt_/index.html | 64 - reference/String_equals_/index.html | 67 - reference/String_indexOf_/index.html | 69 - reference/String_length_/index.html | 59 - reference/String_substring_/index.html | 69 - reference/String_toLowerCase_/index.html | 58 - reference/String_toUpperCase_/index.html | 58 - reference/TWO_PI.gif | Bin 2631 -> 0 bytes reference/TWO_PI/index.html | 110 -- reference/XMLElement/index.html | 122 -- .../XMLElement_getChildCount_/index.html | 69 - reference/XMLElement_getChild_/index.html | 95 -- reference/XMLElement_getChildren_/index.html | 91 - reference/XMLElement_getContent_/index.html | 73 - .../XMLElement_getFloatAttribute_/index.html | 86 - .../XMLElement_getIntAttribute_/index.html | 85 - reference/XMLElement_getName_/index.html | 71 - .../XMLElement_getStringAttribute_/index.html | 86 - reference/abs_/index.html | 90 - reference/acos_/index.html | 66 - reference/add assign/index.html | 118 -- reference/addition/index.html | 128 -- reference/alpha_.gif | Bin 2433 -> 0 bytes reference/alpha_/index.html | 120 -- reference/ambientLight_.gif | Bin 317 -> 0 bytes reference/ambientLight_/index.html | 95 -- reference/ambient_.jpg | Bin 3158 -> 0 bytes reference/ambient_/index.html | 85 - reference/append_/index.html | 62 - reference/applyMatrix_.gif | Bin 713 -> 0 bytes reference/applyMatrix_/index.html | 76 - reference/arc_.gif | Bin 2410 -> 0 bytes reference/arc_/index.html | 170 -- reference/array access/index.html | 128 -- reference/arrayCopy_/index.html | 78 - reference/asin_/index.html | 68 - reference/assign/index.html | 108 -- reference/atan2_/index.html | 120 -- reference/atan_/index.html | 68 - reference/background_.gif | Bin 1771 -> 0 bytes reference/background_/index.html | 202 --- reference/background_2.gif | Bin 2249 -> 0 bytes reference/background_3.jpg | Bin 3706 -> 0 bytes reference/beginCamera_.gif | Bin 314 -> 0 bytes reference/beginCamera_/index.html | 68 - reference/beginShape_.gif | Bin 2160 -> 0 bytes reference/beginShape_/index.html | 252 --- reference/beginShape_0.gif | Bin 2477 -> 0 bytes reference/beginShape_2.gif | Bin 2138 -> 0 bytes reference/beginShape_3.gif | Bin 2242 -> 0 bytes reference/beginShape_4.gif | Bin 2276 -> 0 bytes reference/beginShape_5.gif | Bin 2511 -> 0 bytes reference/beginShape_6.gif | Bin 2777 -> 0 bytes reference/beginShape_65.gif | Bin 2565 -> 0 bytes reference/beginShape_7.gif | Bin 2541 -> 0 bytes reference/beginShape_8.gif | Bin 2636 -> 0 bytes reference/beginShape_9.gif | Bin 2272 -> 0 bytes reference/bezierDetail_.gif | Bin 386 -> 0 bytes reference/bezierDetail_/index.html | 73 - reference/bezierPoint_.gif | Bin 295 -> 0 bytes reference/bezierPoint_/index.html | 83 - reference/bezierTangent_.gif | Bin 407 -> 0 bytes reference/bezierTangent_/index.html | 104 -- reference/bezierTangent_2.gif | Bin 355 -> 0 bytes reference/bezierVertex_.gif | Bin 2224 -> 0 bytes reference/bezierVertex_/index.html | 212 --- reference/bezierVertex_2.gif | Bin 2312 -> 0 bytes reference/bezier_.gif | Bin 2319 -> 0 bytes reference/bezier_/index.html | 156 -- reference/bezier_2.gif | Bin 2300 -> 0 bytes reference/binary_/index.html | 65 - reference/bitwise AND/index.html | 150 -- reference/bitwise OR/index.html | 128 -- reference/blendColor_/index.html | 77 - reference/blend_/index.html | 136 -- reference/blend_add.jpg | Bin 7988 -> 0 bytes reference/blend_color.gif | Bin 561 -> 0 bytes reference/blend_darkest.jpg | Bin 9234 -> 0 bytes reference/blend_lightest.jpg | Bin 8760 -> 0 bytes reference/blend_subtract.jpg | Bin 8754 -> 0 bytes reference/blue_.gif | Bin 2500 -> 0 bytes reference/blue_/index.html | 122 -- reference/boolean.gif | Bin 2565 -> 0 bytes reference/boolean/index.html | 128 -- reference/boolean_/index.html | 115 -- reference/box_.gif | Bin 451 -> 0 bytes reference/box_/index.html | 72 - reference/box_2.gif | Bin 344 -> 0 bytes reference/break/index.html | 88 - reference/brightness_.gif | Bin 362 -> 0 bytes reference/brightness_/index.html | 67 - reference/byte/index.html | 118 -- reference/byte_/index.html | 118 -- reference/camera_/index.html | 103 -- reference/case/index.html | 132 -- reference/ceil_/index.html | 98 -- reference/char/index.html | 114 -- reference/char_/index.html | 124 -- reference/class/index.html | 170 -- reference/color datatype/index.html | 158 -- reference/color.gif | Bin 2484 -> 0 bytes reference/colorMode_.jpg | Bin 1528 -> 0 bytes reference/colorMode_/index.html | 186 --- reference/colorMode_2.jpg | Bin 1713 -> 0 bytes reference/color_.gif | Bin 2358 -> 0 bytes reference/color_/index.html | 168 -- reference/comma/index.html | 100 -- reference/comment/index.html | 112 -- reference/concat_/index.html | 61 - reference/conditional/index.html | 160 -- reference/constrain_/index.html | 138 -- reference/continue/index.html | 82 - reference/copy_.jpg | Bin 11147 -> 0 bytes reference/copy_/index.html | 96 -- reference/cos_.gif | Bin 2496 -> 0 bytes reference/cos_/index.html | 110 -- reference/createFont_/index.html | 96 -- reference/createGraphics_/index.html | 170 -- reference/createImage.jpg | Bin 1535 -> 0 bytes reference/createImage_/index.html | 142 -- reference/createImage_2.jpg | Bin 1570 -> 0 bytes reference/crisp/index.html | 145 -- reference/curly braces/index.html | 128 -- reference/cursor_/index.html | 83 - reference/curveDetail_.gif | Bin 399 -> 0 bytes reference/curveDetail_/index.html | 80 - reference/curvePoint_.gif | Bin 301 -> 0 bytes reference/curvePoint_/index.html | 81 - reference/curveTangent_.gif | Bin 246 -> 0 bytes reference/curveTangent_/index.html | 82 - reference/curveTightness_.gif | Bin 2436 -> 0 bytes reference/curveTightness_/index.html | 166 -- reference/curveVertex_.gif | Bin 2400 -> 0 bytes reference/curveVertex_/index.html | 148 -- reference/curve_.gif | Bin 2253 -> 0 bytes reference/curve_/index.html | 146 -- reference/day_/index.html | 146 -- reference/decrement/index.html | 104 -- reference/default/index.html | 126 -- reference/degrees_/index.html | 100 -- reference/directionalLight_.jpg | Bin 2634 -> 0 bytes reference/directionalLight_/index.html | 92 - reference/directionalLight_2.jpg | Bin 2325 -> 0 bytes reference/directional_ambient_.jpg | Bin 3171 -> 0 bytes reference/dist_/index.html | 170 -- reference/divide assign/index.html | 112 -- reference/divide/index.html | 110 -- reference/doc comment/index.html | 110 -- reference/dot/index.html | 170 -- reference/double/index.html | 118 -- reference/draw_/index.html | 156 -- reference/ellipseMode_.gif | Bin 2432 -> 0 bytes reference/ellipseMode_/index.html | 104 -- reference/ellipse_.gif | Bin 2406 -> 0 bytes reference/ellipse_/index.html | 142 -- reference/else.gif | Bin 2171 -> 0 bytes reference/else2.gif | Bin 2201 -> 0 bytes reference/else_/index.html | 162 -- reference/emissive_.jpg | Bin 3484 -> 0 bytes reference/emissive_/index.html | 83 - reference/endCamera_/index.html | 58 - reference/endShape_.gif | Bin 2375 -> 0 bytes reference/endShape_/index.html | 122 -- reference/equality/index.html | 134 -- reference/exit_/index.html | 96 -- reference/exp_/index.html | 46 - reference/expand_/index.html | 72 - reference/extends/index.html | 108 -- reference/false/index.html | 74 - reference/fill_.gif | Bin 369 -> 0 bytes reference/fill_/index.html | 202 --- reference/fill_2.gif | Bin 369 -> 0 bytes reference/filter_.jpg | Bin 9151 -> 0 bytes reference/filter_/index.html | 93 -- reference/filter_2.gif | Bin 853 -> 0 bytes reference/filter_blur.jpg | Bin 2656 -> 0 bytes reference/filter_gray.jpg | Bin 8769 -> 0 bytes reference/filter_invert.jpg | Bin 12807 -> 0 bytes reference/filter_posterize.jpg | Bin 9496 -> 0 bytes reference/filter_threshold.jpg | Bin 10116 -> 0 bytes reference/final/index.html | 58 - reference/float/index.html | 116 -- reference/float_/index.html | 122 -- reference/floor_/index.html | 102 -- reference/focused/index.html | 37 - reference/font/index.html | 97 -- reference/for_.gif | Bin 2253 -> 0 bytes reference/for_/index.html | 154 -- reference/for_2.gif | Bin 2190 -> 0 bytes reference/for_3.gif | Bin 2159 -> 0 bytes reference/for_4.gif | Bin 2270 -> 0 bytes reference/frameCount/index.html | 90 - reference/frameRate/index.html | 78 - reference/frameRate_/index.html | 128 -- reference/frustum_.gif | Bin 413 -> 0 bytes reference/frustum_/index.html | 83 - reference/get_.jpg | Bin 3704 -> 0 bytes reference/get_/index.html | 158 -- reference/get_2.jpg | Bin 3623 -> 0 bytes reference/globalKeyEvents/index.html | 126 -- reference/greater than or equal to/index.html | 130 -- reference/greater than/index.html | 130 -- reference/green_.gif | Bin 1356 -> 0 bytes reference/green_/index.html | 118 -- reference/height.gif | Bin 1972 -> 0 bytes reference/height/index.html | 70 - reference/hex_/index.html | 70 - reference/hint_/index.html | 74 - reference/hour_/index.html | 126 -- reference/hue_.gif | Bin 362 -> 0 bytes reference/hue_/index.html | 66 - reference/if_.gif | Bin 2241 -> 0 bytes reference/if_/index.html | 122 -- reference/imageMode_.jpg | Bin 8158 -> 0 bytes reference/imageMode_/index.html | 68 - reference/image_.jpg | Bin 24126 -> 0 bytes reference/image_/index.html | 192 --- reference/image_2.jpg | Bin 3917 -> 0 bytes reference/implements/index.html | 40 - reference/import/index.html | 57 - reference/increment/index.html | 104 -- reference/index.html | 472 ------ reference/inequality/index.html | 130 -- reference/int/index.html | 110 -- reference/int_/index.html | 118 -- reference/join_/index.html | 76 - reference/key/index.html | 134 -- reference/keyCode/index.html | 162 -- reference/keyPressed/index.html | 136 -- reference/keyPressed_/index.html | 146 -- reference/keyReleased_/index.html | 144 -- reference/keyTyped_/index.html | 138 -- reference/left shift/index.html | 144 -- reference/lerpColor.jpg | Bin 1984 -> 0 bytes reference/lerpColor_/index.html | 146 -- reference/lerp_.gif | Bin 2160 -> 0 bytes reference/lerp_/index.html | 164 -- reference/lerp_2.gif | Bin 2253 -> 0 bytes reference/less than or equal to/index.html | 132 -- reference/less than/index.html | 132 -- reference/lightFalloff_/index.html | 64 - reference/lightSpecular_.jpg | Bin 3397 -> 0 bytes reference/lightSpecular_/index.html | 78 - reference/lights_.jpg | Bin 3609 -> 0 bytes reference/lights_/index.html | 73 - reference/lights_2.jpg | Bin 3609 -> 0 bytes reference/line_.gif | Bin 2175 -> 0 bytes reference/line_/index.html | 182 -- reference/line_2.gif | Bin 2242 -> 0 bytes reference/line_3.gif | Bin 2282 -> 0 bytes reference/link_/index.html | 122 -- reference/loadBytes_/index.html | 74 - reference/loadFont_.gif | Bin 2606 -> 0 bytes reference/loadFont_/index.html | 123 -- reference/loadImage_.jpg | Bin 24134 -> 0 bytes reference/loadImage_/index.html | 176 -- reference/loadPixels_.jpg | Bin 4751 -> 0 bytes reference/loadPixels_/index.html | 120 -- reference/loadShape_/index.html | 77 - reference/loadStrings_/index.html | 122 -- reference/log_/index.html | 54 - reference/logical AND/index.html | 126 -- reference/logical NOT/index.html | 120 -- reference/logical OR/index.html | 124 -- reference/logicalAND.gif | Bin 2237 -> 0 bytes reference/logicalNOT.gif | Bin 2565 -> 0 bytes reference/logicalOR.gif | Bin 2146 -> 0 bytes reference/long/index.html | 64 - reference/lookat_.gif | Bin 380 -> 0 bytes reference/loop_/index.html | 132 -- reference/mag_.gif | Bin 381 -> 0 bytes reference/mag_/index.html | 77 - reference/map_/index.html | 76 - reference/mask_.jpg | Bin 5680 -> 0 bytes reference/matchAll_/index.html | 64 - reference/match_/index.html | 86 - reference/max_/index.html | 142 -- reference/millis_/index.html | 116 -- reference/min_/index.html | 142 -- reference/minus/index.html | 118 -- reference/minute_/index.html | 126 -- reference/modelX_/index.html | 105 -- reference/modelY_/index.html | 105 -- reference/modelZ_/index.html | 105 -- reference/modulo/index.html | 122 -- reference/month_/index.html | 144 -- reference/mouseButton/index.html | 152 -- reference/mouseClicked_/index.html | 146 -- reference/mouseDragged_/index.html | 144 -- reference/mouseMoved_/index.html | 140 -- reference/mouseOut_/index.html | 150 -- reference/mouseOver_/index.html | 150 -- reference/mousePressed/index.html | 120 -- reference/mousePressed_/index.html | 150 -- reference/mouseReleased_/index.html | 144 -- reference/mouseX/index.html | 118 -- reference/mouseY/index.html | 120 -- reference/multiline comment/index.html | 110 -- reference/multiply assign/index.html | 112 -- reference/multiply/index.html | 110 -- reference/new/index.html | 98 -- reference/nf_/index.html | 182 -- reference/nfc_/index.html | 76 - reference/nfp_/index.html | 96 -- reference/nfs_/index.html | 94 -- reference/noCursor_/index.html | 51 - reference/noFill_.gif | Bin 2504 -> 0 bytes reference/noFill_/index.html | 100 -- reference/noLights_/index.html | 37 - reference/noLoop_/index.html | 156 -- reference/noSmooth_.gif | Bin 640 -> 0 bytes reference/noSmooth_/index.html | 53 - reference/noStroke_.gif | Bin 2351 -> 0 bytes reference/noStroke_/index.html | 98 -- reference/noTint_.jpg | Bin 8027 -> 0 bytes reference/noTint_/index.html | 51 - reference/noiseDetail_/index.html | 82 - reference/noiseSeed_/index.html | 68 - reference/noise_/index.html | 162 -- reference/norm_/index.html | 134 -- reference/normal_/index.html | 60 - reference/null/index.html | 42 - reference/online/index.html | 39 - reference/ortho_.gif | Bin 454 -> 0 bytes reference/ortho_/index.html | 80 - reference/parentheses/index.html | 140 -- reference/pauseOnBlur/index.html | 92 - reference/perspective_.gif | Bin 471 -> 0 bytes reference/perspective_/index.html | 76 - reference/pgraphics.jpg | Bin 1414 -> 0 bytes reference/pixels.gif | Bin 2090 -> 0 bytes reference/pixels_/index.html | 118 -- reference/pjs directive/index.html | 97 -- reference/pmouseX/index.html | 122 -- reference/pmouseY/index.html | 122 -- reference/pointLight_.jpg | Bin 2470 -> 0 bytes reference/pointLight_/index.html | 85 - reference/point_.gif | Bin 2160 -> 0 bytes reference/point_/index.html | 134 -- reference/point_2.gif | Bin 2149 -> 0 bytes reference/popMatrix_/index.html | 110 -- reference/popStyle_/index.html | 69 - reference/pop_.gif | Bin 2375 -> 0 bytes reference/pow_/index.html | 114 -- reference/preload/index.html | 88 - reference/printCamera_/index.html | 50 - reference/printMatrix_/index.html | 61 - reference/printProjection_/index.html | 48 - reference/print_/index.html | 118 -- reference/println_/index.html | 126 -- reference/private/index.html | 40 - reference/public/index.html | 54 - reference/pushMatrix_.gif | Bin 2375 -> 0 bytes reference/pushMatrix_/index.html | 128 -- reference/pushStyle-2.gif | Bin 1925 -> 0 bytes reference/pushStyle.gif | Bin 1285 -> 0 bytes reference/pushStyle_/index.html | 70 - reference/quad_.gif | Bin 2432 -> 0 bytes reference/quad_/index.html | 169 -- reference/radians_/index.html | 98 -- reference/randomSeed_/index.html | 62 - reference/random_/index.html | 126 -- reference/rect()/index.html | 136 -- reference/rectMode_.gif | Bin 2425 -> 0 bytes reference/rectMode_/index.html | 104 -- reference/rect_.gif | Bin 2477 -> 0 bytes reference/rect_/index.html | 182 -- reference/red_.gif | Bin 2481 -> 0 bytes reference/red_/index.html | 124 -- reference/redraw_/index.html | 126 -- reference/requestImage_/index.html | 82 - reference/resetMatrix_.gif | Bin 440 -> 0 bytes reference/resetMatrix_/index.html | 63 - reference/return/index.html | 186 --- reference/reverse_/index.html | 57 - reference/right shift/index.html | 132 -- reference/rotateX_.gif | Bin 288 -> 0 bytes reference/rotateX_/index.html | 72 - reference/rotateY_.gif | Bin 347 -> 0 bytes reference/rotateY_/index.html | 72 - reference/rotateZ_.gif | Bin 396 -> 0 bytes reference/rotateZ_/index.html | 72 - reference/rotate_.gif | Bin 2491 -> 0 bytes reference/rotate_/index.html | 114 -- reference/round_/index.html | 116 -- reference/saturation_.gif | Bin 362 -> 0 bytes reference/saturation_/index.html | 66 - reference/saveFrame_/index.html | 91 - reference/saveStrings_/index.html | 65 - reference/save_/index.html | 60 - reference/scale_.gif | Bin 2473 -> 0 bytes reference/scale_/index.html | 170 -- reference/scale_2.gif | Bin 2585 -> 0 bytes reference/scale_3.gif | Bin 2656 -> 0 bytes reference/screen/index.html | 39 - reference/screenX_/index.html | 90 - reference/screenY_/index.html | 90 - reference/screenZ_/index.html | 58 - reference/second_/index.html | 128 -- reference/semi colon/index.html | 98 -- reference/set_.gif | Bin 2160 -> 0 bytes reference/set_/index.html | 162 -- reference/set_2.jpg | Bin 1730 -> 0 bytes reference/set_3.jpg | Bin 4588 -> 0 bytes reference/setup_/index.html | 132 -- reference/shapeMode.jpg | Bin 6150 -> 0 bytes reference/shapeMode_/index.html | 67 - reference/shape_/index.html | 94 -- reference/shininess_.jpg | Bin 3981 -> 0 bytes reference/shininess_/index.html | 71 - reference/shorten_/index.html | 60 - reference/sin_.gif | Bin 1835 -> 0 bytes reference/sin_/index.html | 116 -- reference/size_/index.html | 132 -- reference/smooth_.gif | Bin 2062 -> 0 bytes reference/smooth_/index.html | 116 -- reference/sort_/index.html | 71 - reference/specular_.jpg | Bin 4419 -> 0 bytes reference/specular_/index.html | 90 - reference/sphereDetail_/index.html | 82 - reference/sphere_.gif | Bin 2034 -> 0 bytes reference/sphere_/index.html | 58 - reference/splice_/index.html | 79 - reference/splitTokens_/index.html | 74 - reference/split_/index.html | 71 - reference/spotLight_.jpg | Bin 2300 -> 0 bytes reference/spotLight_/index.html | 103 -- reference/spotLight_2.jpg | Bin 2154 -> 0 bytes reference/sq_.gif | Bin 2180 -> 0 bytes reference/sq_/index.html | 108 -- reference/sqrt_.gif | Bin 2206 -> 0 bytes reference/sqrt_/index.html | 116 -- reference/static/index.html | 91 - reference/status_/index.html | 59 - reference/str_/index.html | 124 -- reference/strokeCap_.gif | Bin 393 -> 0 bytes reference/strokeCap_/index.html | 63 - reference/strokeJoin_.gif | Bin 267 -> 0 bytes reference/strokeJoin_/index.html | 87 - reference/strokeJoin_2.gif | Bin 267 -> 0 bytes reference/strokeJoin_3.gif | Bin 268 -> 0 bytes reference/strokeWeight_.gif | Bin 2204 -> 0 bytes reference/strokeWeight_/index.html | 112 -- reference/stroke_.gif | Bin 2414 -> 0 bytes reference/stroke_/index.html | 196 --- reference/stroke_2.gif | Bin 2508 -> 0 bytes reference/subset_/index.html | 73 - reference/subtract assign/index.html | 112 -- reference/super/index.html | 100 -- reference/svg.jpg | Bin 6937 -> 0 bytes reference/switch_/index.html | 214 --- reference/tan_.gif | Bin 330 -> 0 bytes reference/tan_/index.html | 64 - reference/textAlign_.gif | Bin 633 -> 0 bytes reference/textAlign_/index.html | 91 - reference/textAscent_.gif | Bin 1400 -> 0 bytes reference/textAscent_/index.html | 67 - reference/textDescent_.gif | Bin 1403 -> 0 bytes reference/textDescent_/index.html | 67 - reference/textFont_.gif | Bin 2606 -> 0 bytes reference/textFont_/index.html | 146 -- reference/textLeading_.gif | Bin 1419 -> 0 bytes reference/textLeading_/index.html | 84 - reference/textMode_.gif | Bin 1241 -> 0 bytes reference/textMode_/index.html | 88 - reference/textSize_.gif | Bin 748 -> 0 bytes reference/textSize_/index.html | 76 - reference/textWidth_.gif | Bin 1154 -> 0 bytes reference/textWidth_/index.html | 81 - reference/text_.gif | Bin 3283 -> 0 bytes reference/text_/index.html | 230 --- reference/text_3.gif | Bin 3142 -> 0 bytes reference/text_X.gif | Bin 2756 -> 0 bytes reference/textureMode_.gif | Bin 6853 -> 0 bytes reference/textureMode_/index.html | 75 - reference/textureMode_2.gif | Bin 6853 -> 0 bytes reference/texture_.gif | Bin 6853 -> 0 bytes reference/texture_/index.html | 68 - reference/this/index.html | 102 -- reference/tint_.jpg | Bin 24403 -> 0 bytes reference/tint_/index.html | 226 --- reference/tint_2.jpg | Bin 24063 -> 0 bytes reference/translate_.gif | Bin 2477 -> 0 bytes reference/translate_/index.html | 152 -- reference/translate_2.gif | Bin 2272 -> 0 bytes reference/translate_3.gif | Bin 2561 -> 0 bytes reference/transparent/index.html | 192 --- reference/triangle_.gif | Bin 2451 -> 0 bytes reference/triangle_/index.html | 148 -- reference/trim_/index.html | 68 - reference/true/index.html | 78 - reference/unbinary_/index.html | 62 - reference/unhex_/index.html | 60 - reference/updatePixels_.jpg | Bin 4751 -> 0 bytes reference/updatePixels_/index.html | 112 -- reference/updatePixels_2.jpg | Bin 2582 -> 0 bytes reference/vertex_.gif | Bin 2160 -> 0 bytes reference/vertex_/index.html | 208 --- reference/vertex_2.gif | Bin 5220 -> 0 bytes reference/vertex_3.gif | Bin 2149 -> 0 bytes reference/void/index.html | 112 -- reference/while_.gif | Bin 2190 -> 0 bytes reference/while_/index.html | 124 -- reference/width.gif | Bin 1980 -> 0 bytes reference/width/index.html | 68 - reference/year_/index.html | 146 -- sketches/2d1.pde | 17 - sketches/bannerSketch.pde | 132 -- sketches/basic-example.pde | 53 - sketches/jmartinho_tr-lines_2011.pde | 166 -- sketches/my-life-aquatic/Boid.pde | 134 -- sketches/my-life-aquatic/Bubble.pde | 27 - sketches/my-life-aquatic/Fish.pde | 400 ----- sketches/my-life-aquatic/Flagellum.pde | 79 - sketches/my-life-aquatic/Food.pde | 105 -- sketches/my-life-aquatic/explosion.mp3 | Bin 17308 -> 0 bytes sketches/my-life-aquatic/explosion.ogg | Bin 14286 -> 0 bytes sketches/my-life-aquatic/gulp.mp3 | Bin 9613 -> 0 bytes sketches/my-life-aquatic/gulp.ogg | Bin 10240 -> 0 bytes sketches/my-life-aquatic/pond.pde | 103 -- sketches/mysketch.pde | 268 --- sketches/mysketch2.pde | 36 - sketches/mysketch3.pde | 46 - sketches/mysketch4.pde | 56 - sketches/mysketch5.pde | 56 - sketches/mysketch6.pde | 60 - sketches/mysketch7.pde | 76 - sketches/mysketch8.pde | 118 -- sketches/sketch1.pde | 80 - sketches/sketch2.pde | 110 -- sketches/sketch3.pde | 112 -- sketches/sketch4.pde | 158 -- sketches/sketch5.pde | 212 --- sketches/webgl1.pde | 10 - sketches/webgl2.pde | 47 - tools/jsbeautify.js | 974 ----------- tools/processing-helper.html | 35 - tools/processing-helper.js | 99 -- 1142 files changed, 7 insertions(+), 96725 deletions(-) delete mode 100644 .gitignore delete mode 100644 .htaccess delete mode 100644 .rvmrc delete mode 100644 .travis.yml delete mode 100644 404.html delete mode 100644 CNAME delete mode 100644 Gemfile delete mode 100644 ISSUE_TEMPLATE.md delete mode 100644 _config.yml delete mode 100644 _layouts/default.html delete mode 100644 _layouts/post.html delete mode 100644 _layouts/withcc.html delete mode 100644 articles/_posts/2011-12-01-PomaxGuide.html delete mode 100644 articles/_posts/2011-12-02-RenderingModes.html delete mode 100644 articles/_posts/2011-12-03-p5QuickStart.html delete mode 100644 articles/_posts/2011-12-04-jsQuickStart.html delete mode 100644 articles/_posts/template.html delete mode 100644 articles/index.html delete mode 100644 blog/_posts/2010-02-03-processingjs-04-released.html delete mode 100644 blog/_posts/2010-02-17-processingjs-v050-released.html delete mode 100644 blog/_posts/2010-02-26-processingjs-v060-released.html delete mode 100644 blog/_posts/2010-03-24-processingjs-v070-released.html delete mode 100644 blog/_posts/2010-03-26-processingjs-v071-released.html delete mode 100644 blog/_posts/2010-04-09-processingjs-v08-released.html delete mode 100644 blog/_posts/2010-05-11-processingjs-v09-released.html delete mode 100644 blog/_posts/2010-05-20-processingjs-v091-released.html delete mode 100644 blog/_posts/2010-06-16-processingjs-v094-released.html delete mode 100644 blog/_posts/2010-07-26-processingjs-v096-released.html delete mode 100644 blog/_posts/2010-08-16-processingjs-v097-released.html delete mode 100644 blog/_posts/2010-11-18-processingjs-v10-released.html delete mode 100644 blog/_posts/2011-03-01-processingjs-v11-released.html delete mode 100644 blog/_posts/2011-05-31-processingjs-v12-released.html delete mode 100644 blog/_posts/2011-06-02-processingjs-v121-released.html delete mode 100644 blog/_posts/2011-07-14-processing-js-v1-2-3-released.html delete mode 100644 blog/_posts/2011-08-02-processing-js-siggraph-2011.html delete mode 100644 blog/_posts/2011-08-24-processing-js-v1-3-0-released.html delete mode 100644 blog/_posts/2011-09-05-meet-the-processing-js-team.html delete mode 100644 blog/_posts/2011-10-06-processing-js-v1-3-5-released.html delete mode 100644 blog/_posts/2011-10-13-processing-js-v1-3-6-released.html delete mode 100644 blog/_posts/2011-10-25-processing-js-workshops.html delete mode 100644 blog/_posts/2012-07-31-processing-js-v1-4-0-released.html delete mode 100644 blog/_posts/2012-08-08-processing-js-v1-4-1-hotfix.html delete mode 100644 blog/_posts/2014-03-25-processing-js-v1-4-7.html delete mode 100644 blog/_posts/2014-03-25-processing-js-v1-4-8.html delete mode 100644 blog/_posts/2014-04-17-processing-js-v1-4-8.html delete mode 100644 blog/_posts/template.html delete mode 100644 blog/index.html delete mode 100644 community/index.html delete mode 100644 css/bootstrap.css delete mode 100644 css/processing-js.css delete mode 100644 css/syntax.css delete mode 100644 download/_posts/2008-05-08-v0.0.0.html delete mode 100644 download/_posts/2010-01-02-v0.0.0.html delete mode 100644 download/_posts/2010-02-02-v0.4.0.html delete mode 100644 download/_posts/2010-02-17-v0.5.0.html delete mode 100644 download/_posts/2010-02-26-v0.6.0.html delete mode 100644 download/_posts/2010-03-24-v0.7.0.html delete mode 100644 download/_posts/2010-03-25-v0.7.1.html delete mode 100644 download/_posts/2010-04-08-v0.8.0.html delete mode 100644 download/_posts/2010-05-11-v0.9.0.html delete mode 100644 download/_posts/2010-05-20-v0.9.1.html delete mode 100644 download/_posts/2010-06-15-v0.9.3.html delete mode 100644 download/_posts/2010-06-16-v0.9.4.html delete mode 100644 download/_posts/2010-07-26-v0.9.6.html delete mode 100644 download/_posts/2010-08-14-v0.9.7.html delete mode 100644 download/_posts/2010-11-28-v1.0.0.html delete mode 100644 download/_posts/2011-02-27-v1.1.0.html delete mode 100644 download/_posts/2011-06-02-v1.2.1.html delete mode 100644 download/_posts/2011-07-14-v1.2.3.html delete mode 100644 download/_posts/2011-08-23-v1.3.0.html delete mode 100644 download/_posts/2011-10-13-v1.3.6.html delete mode 100644 download/_posts/2012-07-31-v1.4.0.html delete mode 100644 download/_posts/2012-08-09-v1.4.1.html delete mode 100644 download/_posts/2014-03-25-v1.4.7.html delete mode 100644 download/_posts/2014-03-25-v1.4.8.html delete mode 100644 download/_posts/2016-08-01-v1.6.0.html delete mode 100644 download/_posts/template.html delete mode 100644 download/archived.html delete mode 100644 download/index.html delete mode 100644 exhibition/_posts/2011-11-01-ui-dial.html delete mode 100644 exhibition/_posts/2011-11-02-sparklines.html delete mode 100644 exhibition/_posts/2011-11-03-tower-of-defense.html delete mode 100644 exhibition/_posts/2011-11-04-mouse.html delete mode 100644 exhibition/_posts/2011-11-05-wiki.html delete mode 100644 exhibition/_posts/2011-11-06-balldroppings.html delete mode 100644 exhibition/_posts/2011-11-07-twitch.html delete mode 100644 exhibition/_posts/2011-11-08-bittorrent.html delete mode 100644 exhibition/_posts/2011-11-09-askken.html delete mode 100644 exhibition/_posts/2011-11-10-abstract.html delete mode 100644 exhibition/_posts/2011-11-11-facebook.html delete mode 100644 exhibition/_posts/2011-11-12-inbox.html delete mode 100644 exhibition/_posts/2011-11-13-wordpress.html delete mode 100644 exhibition/_posts/2011-11-14-drupal.html delete mode 100644 exhibition/_posts/2011-11-15-asteroids.html delete mode 100644 exhibition/_posts/2011-11-16-jsnake.html delete mode 100644 exhibition/_posts/2011-11-17-gif-tower-defense.html delete mode 100644 exhibition/_posts/2011-11-18-letters.html delete mode 100644 exhibition/_posts/2011-11-19-fizz-bloom.html delete mode 100644 exhibition/_posts/2011-11-20-virion.html delete mode 100644 exhibition/_posts/2011-11-21-kanji.html delete mode 100644 exhibition/_posts/2011-11-22-clearcongress.html delete mode 100644 exhibition/_posts/2011-11-23-bezierinfo.html delete mode 100644 exhibition/_posts/2011-11-24-tunealiser.html delete mode 100644 exhibition/_posts/2011-11-25-toxiclibs.html delete mode 100644 exhibition/_posts/2011-11-26-p5p.html delete mode 100644 exhibition/_posts/2011-11-27-animated-background.html delete mode 100644 exhibition/_posts/2011-11-28-afl-flags.html delete mode 100644 exhibition/_posts/2011-11-29-twitter-flow.html delete mode 100644 exhibition/_posts/2011-11-30-coaltrace.html delete mode 100644 exhibition/_posts/2011-12-01-flocking.html delete mode 100644 exhibition/_posts/2011-12-02-pewpew.html delete mode 100644 exhibition/_posts/2011-12-03-fotn.html delete mode 100644 exhibition/_posts/2011-12-04-coffeescript.html delete mode 100644 exhibition/_posts/2011-12-15-andor.html delete mode 100644 exhibition/_posts/2011-12-24-advent-2011.html delete mode 100644 exhibition/_posts/2011-12-25-circle-of-fifths.html delete mode 100644 exhibition/_posts/2012-07-13-mylifeaquatic.html delete mode 100644 exhibition/_posts/2013-04-26-delaunay.html delete mode 100644 exhibition/_posts/template.html delete mode 100644 exhibition/index.html delete mode 100644 favicon.ico delete mode 100644 images/exhibition/abstract.jpg delete mode 100644 images/exhibition/advent-2011.png delete mode 100644 images/exhibition/afl-flags.png delete mode 100644 images/exhibition/andor.png delete mode 100644 images/exhibition/ask.png delete mode 100644 images/exhibition/astroid.jpg delete mode 100644 images/exhibition/balldroppings.gif delete mode 100644 images/exhibition/bezier.png delete mode 100644 images/exhibition/bittorrent.jpg delete mode 100644 images/exhibition/cecinestpasparis.png delete mode 100644 images/exhibition/circle-of-fifths.png delete mode 100644 images/exhibition/clearcongress.png delete mode 100644 images/exhibition/coaltrace.png delete mode 100644 images/exhibition/delaunay.png delete mode 100644 images/exhibition/drupal.png delete mode 100644 images/exhibition/dryly.png delete mode 100644 images/exhibition/facebook.png delete mode 100644 images/exhibition/fizz-processingjs.png delete mode 100644 images/exhibition/fotn.png delete mode 100644 images/exhibition/gmail.png delete mode 100644 images/exhibition/harry-flocking.png delete mode 100644 images/exhibition/kanji.png delete mode 100644 images/exhibition/letters.jpg delete mode 100644 images/exhibition/mousedrivengraphicequalizer.gif delete mode 100644 images/exhibition/mylifeaquatic.png delete mode 100644 images/exhibition/pewpew.png delete mode 100644 images/exhibition/snake.jpg delete mode 100644 images/exhibition/sparklines.gif delete mode 100644 images/exhibition/towerOfDefense2.jpeg delete mode 100644 images/exhibition/towerofdefense.gif delete mode 100644 images/exhibition/toxiclibs.png delete mode 100644 images/exhibition/tunealiser.png delete mode 100644 images/exhibition/twitch.gif delete mode 100644 images/exhibition/twitterflow.png delete mode 100644 images/exhibition/uidial.gif delete mode 100644 images/exhibition/virion.png delete mode 100644 images/exhibition/wikivisualizations.gif delete mode 100644 images/exhibition/wordpress-logo-stacked-rgb.png delete mode 100644 images/exhibition/zepadovani.png delete mode 100644 images/forkme-right-orange.png delete mode 100644 images/github-v04.png delete mode 100644 images/github.gif delete mode 100644 images/google-group.png delete mode 100644 images/header.png delete mode 100644 images/irc.gif delete mode 100644 images/jmartinho_tr-lines_2011.png delete mode 100644 images/lighthouseapp-logo.png delete mode 100644 images/processingjs.gif delete mode 100644 images/seneca-logo.png delete mode 100644 images/somerights20.gif delete mode 100644 index.html delete mode 100644 js/buzz.js delete mode 100644 js/jquery.tweet.min.js delete mode 100644 js/processing.min.js delete mode 100644 js/tabselector.js delete mode 100644 learning/basic/additivewave/index.html delete mode 100644 learning/basic/alphamask/data/mask.jpg delete mode 100644 learning/basic/alphamask/data/test.jpg delete mode 100644 learning/basic/alphamask/index.html delete mode 100644 learning/basic/arctangent/index.html delete mode 100644 learning/basic/arm/index.html delete mode 100644 learning/basic/array/index.html delete mode 100644 learning/basic/array2d/index.html delete mode 100644 learning/basic/arrayobjects/index.html delete mode 100644 learning/basic/backgroundimage/data/milan_rubbish.jpg delete mode 100644 learning/basic/backgroundimage/index.html delete mode 100644 learning/basic/bezier/index.html delete mode 100644 learning/basic/bezierellipse/index.html delete mode 100644 learning/basic/brightness/index.html delete mode 100644 learning/basic/charactersstrings/data/rathausFrog.jpg delete mode 100644 learning/basic/charactersstrings/index.html delete mode 100644 learning/basic/clock/index.html delete mode 100644 learning/basic/colorwheel/index.html delete mode 100644 learning/basic/compositeobjects/index.html delete mode 100644 learning/basic/conditionals1/index.html delete mode 100644 learning/basic/conditionals2/index.html delete mode 100644 learning/basic/constrain/index.html delete mode 100644 learning/basic/coordinates/index.html delete mode 100644 learning/basic/creategraphics/data/mask.jpg delete mode 100644 learning/basic/creategraphics/data/test.jpg delete mode 100644 learning/basic/creategraphics/index.html delete mode 100644 learning/basic/createimage/data/mask.jpg delete mode 100644 learning/basic/createimage/data/test.jpg delete mode 100644 learning/basic/createimage/index.html delete mode 100644 learning/basic/creating/index.html delete mode 100644 learning/basic/datatypeconversion/index.html delete mode 100644 learning/basic/displaying/data/arch.jpg delete mode 100644 learning/basic/displaying/index.html delete mode 100644 learning/basic/distance1d/index.html delete mode 100644 learning/basic/distance2d/index.html delete mode 100644 learning/basic/doublerandom/index.html delete mode 100644 learning/basic/easing/index.html delete mode 100644 learning/basic/embeddediteration/index.html delete mode 100644 learning/basic/embeddedlinks/index.html delete mode 100644 learning/basic/functions/index.html delete mode 100644 learning/basic/graphing2dequation/index.html delete mode 100644 learning/basic/hue/index.html delete mode 100644 learning/basic/incrementdecrement/index.html delete mode 100644 learning/basic/index.html delete mode 100644 learning/basic/inheritance/index.html delete mode 100644 learning/basic/integersfloats/index.html delete mode 100644 learning/basic/iteration/index.html delete mode 100644 learning/basic/keyboard/data/brugges.jpg delete mode 100644 learning/basic/keyboard/index.html delete mode 100644 learning/basic/keyboardfunctions/index.html delete mode 100644 learning/basic/letters/index.html delete mode 100644 learning/basic/lineargradient/index.html delete mode 100644 learning/basic/loadingimages/index.html delete mode 100644 learning/basic/logicaloperators/index.html delete mode 100644 learning/basic/loop/index.html delete mode 100644 learning/basic/milliseconds/index.html delete mode 100644 learning/basic/modulo/index.html delete mode 100644 learning/basic/mouse1d/index.html delete mode 100644 learning/basic/mouse2d/index.html delete mode 100644 learning/basic/mousefunctions/index.html delete mode 100644 learning/basic/mousepress/index.html delete mode 100644 learning/basic/mousesignals/index.html delete mode 100644 learning/basic/multipleconstructors/index.html delete mode 100644 learning/basic/neighborhood/index.html delete mode 100644 learning/basic/noise1d/index.html delete mode 100644 learning/basic/noise2d/index.html delete mode 100644 learning/basic/noise3d/index.html delete mode 100644 learning/basic/noisewave/index.html delete mode 100644 learning/basic/noloop/index.html delete mode 100644 learning/basic/objects/index.html delete mode 100644 learning/basic/operatorprecedence/index.html delete mode 100644 learning/basic/piechart/index.html delete mode 100644 learning/basic/pointillism/data/eames.jpg delete mode 100644 learning/basic/pointillism/data/sunflower.jpg delete mode 100644 learning/basic/pointillism/index.html delete mode 100644 learning/basic/pointslines/index.html delete mode 100644 learning/basic/polartocartesian/index.html delete mode 100644 learning/basic/radialgradient/index.html delete mode 100644 learning/basic/random/index.html delete mode 100644 learning/basic/reading/data/cait.jpg delete mode 100644 learning/basic/reading/index.html delete mode 100644 learning/basic/recursion/index.html delete mode 100644 learning/basic/recursion2/index.html delete mode 100644 learning/basic/redraw/index.html delete mode 100644 learning/basic/relativity/index.html delete mode 100644 learning/basic/rotate/index.html delete mode 100644 learning/basic/saturation/index.html delete mode 100644 learning/basic/scale/index.html delete mode 100644 learning/basic/setupdraw/index.html delete mode 100644 learning/basic/shapeprimitives/index.html delete mode 100644 learning/basic/simplecurves/index.html delete mode 100644 learning/basic/sine/index.html delete mode 100644 learning/basic/sinecosine/index.html delete mode 100644 learning/basic/sinewave/index.html delete mode 100644 learning/basic/sprite/data/sky.jpg delete mode 100644 learning/basic/sprite/data/teddy.gif delete mode 100644 learning/basic/sprite/index.html delete mode 100644 learning/basic/statementscomments/index.html delete mode 100644 learning/basic/storinginput/index.html delete mode 100644 learning/basic/translate/index.html delete mode 100644 learning/basic/transparency/data/construct.jpg delete mode 100644 learning/basic/transparency/data/wash.jpg delete mode 100644 learning/basic/transparency/index.html delete mode 100644 learning/basic/triangleflower/index.html delete mode 100644 learning/basic/trianglestrip/index.html delete mode 100644 learning/basic/truefalse/index.html delete mode 100644 learning/basic/variables/index.html delete mode 100644 learning/basic/variablescope/index.html delete mode 100644 learning/basic/vertices/index.html delete mode 100644 learning/basic/wavegradient/index.html delete mode 100644 learning/basic/widthheight/index.html delete mode 100644 learning/basic/words/index.html delete mode 100644 learning/custom/index.html delete mode 100644 learning/custom/intersect/index.html delete mode 100644 learning/custom/molten/index.html delete mode 100644 learning/custom/snake/data/dirt.jpg delete mode 100644 learning/custom/snake/index.html delete mode 100644 learning/index.html delete mode 100644 learning/screens/Picture-14.png delete mode 100644 learning/screens/Picture-15.png delete mode 100644 learning/screens/Picture-16.png delete mode 100644 learning/screens/Picture-17.png delete mode 100644 learning/screens/Picture-18.png delete mode 100644 learning/screens/Picture-19.png delete mode 100644 learning/screens/Picture-20.png delete mode 100644 learning/screens/Picture-21.png delete mode 100644 learning/screens/Picture-22.png delete mode 100644 learning/screens/Picture-23.png delete mode 100644 learning/screens/Picture-24.png delete mode 100644 learning/screens/Picture-25.png delete mode 100644 learning/screens/Picture-26.png delete mode 100644 learning/screens/Picture-27.png delete mode 100644 learning/screens/Picture-28.png delete mode 100644 learning/screens/Picture-29.png delete mode 100644 learning/screens/Picture-30.png delete mode 100644 learning/screens/Picture-31.png delete mode 100644 learning/screens/Picture-32.png delete mode 100644 learning/screens/Picture-33.png delete mode 100644 learning/screens/Picture-34.png delete mode 100644 learning/screens/Picture-35.png delete mode 100644 learning/screens/Picture-36.png delete mode 100644 learning/screens/Picture-37.png delete mode 100644 learning/screens/Picture-38.png delete mode 100644 learning/screens/Picture-39.png delete mode 100644 learning/screens/Picture-40.png delete mode 100644 learning/screens/Picture-41.png delete mode 100644 learning/screens/Picture-42.png delete mode 100644 learning/screens/Picture-43.png delete mode 100644 learning/screens/Picture-44.png delete mode 100644 learning/screens/Picture-45.png delete mode 100644 learning/screens/Picture-46.png delete mode 100644 learning/screens/Picture-47.png delete mode 100644 learning/screens/Picture-48.png delete mode 100644 learning/screens/Picture-49.png delete mode 100644 learning/screens/Picture-50.png delete mode 100644 learning/screens/Picture-51.png delete mode 100644 learning/screens/Picture-52.png delete mode 100644 learning/screens/molten2.png delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0000.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0001.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0002.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0003.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0004.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0005.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0006.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0007.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0008.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0009.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0010.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0011.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0012.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0013.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0014.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0015.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0016.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0017.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0018.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0019.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0020.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0021.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0022.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0023.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0024.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0025.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0026.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0027.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0028.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0029.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0030.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0031.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0032.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0033.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0034.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0035.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0036.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Shifty_0037.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0000.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0001.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0002.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0003.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0004.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0005.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0006.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0007.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0008.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0009.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0010.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0011.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0012.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0013.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0014.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0015.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0016.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0017.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0018.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0019.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0020.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0021.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0022.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0023.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0024.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0025.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0026.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0027.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0028.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0029.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0030.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0031.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0032.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0033.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0034.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0035.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0036.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0037.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0038.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0039.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0040.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0041.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0042.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0043.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0044.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0045.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0046.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0047.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0048.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0049.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0050.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0051.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0052.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0053.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0054.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0055.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0056.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0057.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0058.gif delete mode 100644 learning/topic/animatedsprite/data/PT_Teddy_0059.gif delete mode 100644 learning/topic/animatedsprite/index.html delete mode 100644 learning/topic/animator/index.html delete mode 100644 learning/topic/blur/data/trees.jpg delete mode 100644 learning/topic/blur/index.html delete mode 100644 learning/topic/bounce/index.html delete mode 100644 learning/topic/bouncybubbles/index.html delete mode 100644 learning/topic/brightness/data/wires.jpg delete mode 100644 learning/topic/brightness/index.html delete mode 100644 learning/topic/brownian/index.html delete mode 100644 learning/topic/button/index.html delete mode 100644 learning/topic/buttons/index.html delete mode 100644 learning/topic/chain/index.html delete mode 100644 learning/topic/circlecollision/index.html delete mode 100644 learning/topic/collision/index.html delete mode 100644 learning/topic/continuouslines/index.html delete mode 100644 learning/topic/convolution/data/end.jpg delete mode 100644 learning/topic/convolution/index.html delete mode 100644 learning/topic/conway/index.html delete mode 100644 learning/topic/customtool/data/milan.jpg delete mode 100644 learning/topic/customtool/data/paris.jpg delete mode 100644 learning/topic/customtool/index.html delete mode 100644 learning/topic/edgedetection/data/house.jpg delete mode 100644 learning/topic/edgedetection/index.html delete mode 100644 learning/topic/flocking/index.html delete mode 100644 learning/topic/fluid/index.html delete mode 100644 learning/topic/follow1/index.html delete mode 100644 learning/topic/follow2/index.html delete mode 100644 learning/topic/follow3/index.html delete mode 100644 learning/topic/handles/index.html delete mode 100644 learning/topic/histogram/data/cdi01_g.jpg delete mode 100644 learning/topic/histogram/index.html delete mode 100644 learning/topic/imagebutton/data/base.gif delete mode 100644 learning/topic/imagebutton/data/down.gif delete mode 100644 learning/topic/imagebutton/data/roll.gif delete mode 100644 learning/topic/imagebutton/index.html delete mode 100644 learning/topic/index.html delete mode 100644 learning/topic/koch/index.html delete mode 100644 learning/topic/linear/index.html delete mode 100644 learning/topic/linearimage/data/florence03.jpg delete mode 100644 learning/topic/linearimage/index.html delete mode 100644 learning/topic/loadfile1/data/positions.txt delete mode 100644 learning/topic/loadfile1/index.html delete mode 100644 learning/topic/loadfile2/data/cars2.tsv delete mode 100644 learning/topic/loadfile2/index.html delete mode 100644 learning/topic/mandelbrot/index.html delete mode 100644 learning/topic/movingoncurves/index.html delete mode 100644 learning/topic/multipleparticlesystems/index.html delete mode 100644 learning/topic/pattern/index.html delete mode 100644 learning/topic/penrosesnowflake/index.html delete mode 100644 learning/topic/penrosetile/index.html delete mode 100644 learning/topic/pentigree/index.html delete mode 100644 learning/topic/pixelarray/data/ystone08.jpg delete mode 100644 learning/topic/pixelarray/index.html delete mode 100644 learning/topic/puff/index.html delete mode 100644 learning/topic/pulses/index.html delete mode 100644 learning/topic/reach1/index.html delete mode 100644 learning/topic/reach2/index.html delete mode 100644 learning/topic/reach3/index.html delete mode 100644 learning/topic/reflection1/index.html delete mode 100644 learning/topic/reflection2/index.html delete mode 100644 learning/topic/rollover/index.html delete mode 100644 learning/topic/scribbleplotter/index.html delete mode 100644 learning/topic/scrollbar/data/seedBottom.jpg delete mode 100644 learning/topic/scrollbar/data/seedTop.jpg delete mode 100644 learning/topic/scrollbar/index.html delete mode 100644 learning/topic/sequential/data/PT_anim0000.gif delete mode 100644 learning/topic/sequential/data/PT_anim0001.gif delete mode 100644 learning/topic/sequential/data/PT_anim0002.gif delete mode 100644 learning/topic/sequential/data/PT_anim0003.gif delete mode 100644 learning/topic/sequential/data/PT_anim0004.gif delete mode 100644 learning/topic/sequential/data/PT_anim0005.gif delete mode 100644 learning/topic/sequential/data/PT_anim0006.gif delete mode 100644 learning/topic/sequential/data/PT_anim0007.gif delete mode 100644 learning/topic/sequential/data/PT_anim0008.gif delete mode 100644 learning/topic/sequential/data/PT_anim0009.gif delete mode 100644 learning/topic/sequential/data/PT_anim0010.gif delete mode 100644 learning/topic/sequential/data/PT_anim0011.gif delete mode 100644 learning/topic/sequential/index.html delete mode 100644 learning/topic/simpleparticlesystem/index.html delete mode 100644 learning/topic/smoke/index.html delete mode 100644 learning/topic/smokeparticlesystem/data/texture.gif delete mode 100644 learning/topic/smokeparticlesystem/index.html delete mode 100644 learning/topic/softbody/index.html delete mode 100644 learning/topic/spore1/index.html delete mode 100644 learning/topic/spore2/index.html delete mode 100644 learning/topic/spring/index.html delete mode 100644 learning/topic/springs/index.html delete mode 100644 learning/topic/tickle/index.html delete mode 100644 learning/topic/tileimages/index.html delete mode 100644 learning/topic/tree/index.html delete mode 100644 learning/topic/wolfram/index.html delete mode 100644 reference/Array/index.html delete mode 100644 reference/ArrayList/index.html delete mode 100644 reference/HALF_PI.gif delete mode 100644 reference/HALF_PI/index.html delete mode 100644 reference/HashMap/index.html delete mode 100644 reference/Object/index.html delete mode 100644 reference/PFont.gif delete mode 100644 reference/PFont/index.html delete mode 100644 reference/PFont_list_/index.html delete mode 100644 reference/PGraphics/index.html delete mode 100644 reference/PGraphics_beginDraw_/index.html delete mode 100644 reference/PGraphics_endDraw_/index.html delete mode 100644 reference/PI.gif delete mode 100644 reference/PI/index.html delete mode 100644 reference/PImage.jpg delete mode 100644 reference/PImage/index.html delete mode 100644 reference/PImage_blend_/index.html delete mode 100644 reference/PImage_blend_add.jpg delete mode 100644 reference/PImage_blend_darkest.jpg delete mode 100644 reference/PImage_blend_lightest.jpg delete mode 100644 reference/PImage_blend_subtract.jpg delete mode 100644 reference/PImage_copy.jpg delete mode 100644 reference/PImage_copy_/index.html delete mode 100644 reference/PImage_filter_/index.html delete mode 100644 reference/PImage_get.jpg delete mode 100644 reference/PImage_get2.jpg delete mode 100644 reference/PImage_get_/index.html delete mode 100644 reference/PImage_height.jpg delete mode 100644 reference/PImage_height/index.html delete mode 100644 reference/PImage_loadPixels_/index.html delete mode 100644 reference/PImage_mask_/index.html delete mode 100644 reference/PImage_pixels.jpg delete mode 100644 reference/PImage_pixels/index.html delete mode 100644 reference/PImage_resize.jpg delete mode 100644 reference/PImage_resize_/index.html delete mode 100644 reference/PImage_resize_2.jpg delete mode 100644 reference/PImage_save_/index.html delete mode 100644 reference/PImage_set.jpg delete mode 100644 reference/PImage_set_/index.html delete mode 100644 reference/PImage_updatePixels_/index.html delete mode 100644 reference/PImage_width.jpg delete mode 100644 reference/PImage_width/index.html delete mode 100644 reference/PShape/index.html delete mode 100644 reference/PShape_disableStyle.jpg delete mode 100644 reference/PShape_disableStyle_/index.html delete mode 100644 reference/PShape_enableStyle.jpg delete mode 100644 reference/PShape_enableStyle_/index.html delete mode 100644 reference/PShape_getChild.jpg delete mode 100644 reference/PShape_getChild_/index.html delete mode 100644 reference/PShape_height/index.html delete mode 100644 reference/PShape_isVisible_/index.html delete mode 100644 reference/PShape_rotateX_/index.html delete mode 100644 reference/PShape_rotateY_/index.html delete mode 100644 reference/PShape_rotateZ_/index.html delete mode 100644 reference/PShape_rotate_/index.html delete mode 100644 reference/PShape_scale_/index.html delete mode 100644 reference/PShape_setVisible_/index.html delete mode 100644 reference/PShape_translate_/index.html delete mode 100644 reference/PShape_visible.jpg delete mode 100644 reference/PShape_width/index.html delete mode 100644 reference/PVector/index.html delete mode 100644 reference/PVector_add_/index.html delete mode 100644 reference/PVector_angleBetween_/index.html delete mode 100644 reference/PVector_array_/index.html delete mode 100644 reference/PVector_cross_/index.html delete mode 100644 reference/PVector_dist_/index.html delete mode 100644 reference/PVector_div_/index.html delete mode 100644 reference/PVector_dot_/index.html delete mode 100644 reference/PVector_get_/index.html delete mode 100644 reference/PVector_limit_/index.html delete mode 100644 reference/PVector_mag_/index.html delete mode 100644 reference/PVector_mult_/index.html delete mode 100644 reference/PVector_normalize_/index.html delete mode 100644 reference/PVector_set_/index.html delete mode 100644 reference/PVector_sub_/index.html delete mode 100644 reference/PVector_x/index.html delete mode 100644 reference/PVector_y/index.html delete mode 100644 reference/PVector_z/index.html delete mode 100644 reference/QUARTER_PI/index.html delete mode 100644 reference/String/index.html delete mode 100644 reference/String_charAt_/index.html delete mode 100644 reference/String_equals_/index.html delete mode 100644 reference/String_indexOf_/index.html delete mode 100644 reference/String_length_/index.html delete mode 100644 reference/String_substring_/index.html delete mode 100644 reference/String_toLowerCase_/index.html delete mode 100644 reference/String_toUpperCase_/index.html delete mode 100644 reference/TWO_PI.gif delete mode 100644 reference/TWO_PI/index.html delete mode 100644 reference/XMLElement/index.html delete mode 100644 reference/XMLElement_getChildCount_/index.html delete mode 100644 reference/XMLElement_getChild_/index.html delete mode 100644 reference/XMLElement_getChildren_/index.html delete mode 100644 reference/XMLElement_getContent_/index.html delete mode 100644 reference/XMLElement_getFloatAttribute_/index.html delete mode 100644 reference/XMLElement_getIntAttribute_/index.html delete mode 100644 reference/XMLElement_getName_/index.html delete mode 100644 reference/XMLElement_getStringAttribute_/index.html delete mode 100644 reference/abs_/index.html delete mode 100644 reference/acos_/index.html delete mode 100644 reference/add assign/index.html delete mode 100644 reference/addition/index.html delete mode 100644 reference/alpha_.gif delete mode 100644 reference/alpha_/index.html delete mode 100644 reference/ambientLight_.gif delete mode 100644 reference/ambientLight_/index.html delete mode 100644 reference/ambient_.jpg delete mode 100644 reference/ambient_/index.html delete mode 100644 reference/append_/index.html delete mode 100644 reference/applyMatrix_.gif delete mode 100644 reference/applyMatrix_/index.html delete mode 100644 reference/arc_.gif delete mode 100644 reference/arc_/index.html delete mode 100644 reference/array access/index.html delete mode 100644 reference/arrayCopy_/index.html delete mode 100644 reference/asin_/index.html delete mode 100644 reference/assign/index.html delete mode 100644 reference/atan2_/index.html delete mode 100644 reference/atan_/index.html delete mode 100644 reference/background_.gif delete mode 100644 reference/background_/index.html delete mode 100644 reference/background_2.gif delete mode 100644 reference/background_3.jpg delete mode 100644 reference/beginCamera_.gif delete mode 100644 reference/beginCamera_/index.html delete mode 100644 reference/beginShape_.gif delete mode 100644 reference/beginShape_/index.html delete mode 100644 reference/beginShape_0.gif delete mode 100644 reference/beginShape_2.gif delete mode 100644 reference/beginShape_3.gif delete mode 100644 reference/beginShape_4.gif delete mode 100644 reference/beginShape_5.gif delete mode 100644 reference/beginShape_6.gif delete mode 100644 reference/beginShape_65.gif delete mode 100644 reference/beginShape_7.gif delete mode 100644 reference/beginShape_8.gif delete mode 100644 reference/beginShape_9.gif delete mode 100644 reference/bezierDetail_.gif delete mode 100644 reference/bezierDetail_/index.html delete mode 100644 reference/bezierPoint_.gif delete mode 100644 reference/bezierPoint_/index.html delete mode 100644 reference/bezierTangent_.gif delete mode 100644 reference/bezierTangent_/index.html delete mode 100644 reference/bezierTangent_2.gif delete mode 100644 reference/bezierVertex_.gif delete mode 100644 reference/bezierVertex_/index.html delete mode 100644 reference/bezierVertex_2.gif delete mode 100644 reference/bezier_.gif delete mode 100644 reference/bezier_/index.html delete mode 100644 reference/bezier_2.gif delete mode 100644 reference/binary_/index.html delete mode 100644 reference/bitwise AND/index.html delete mode 100644 reference/bitwise OR/index.html delete mode 100644 reference/blendColor_/index.html delete mode 100644 reference/blend_/index.html delete mode 100644 reference/blend_add.jpg delete mode 100644 reference/blend_color.gif delete mode 100644 reference/blend_darkest.jpg delete mode 100644 reference/blend_lightest.jpg delete mode 100644 reference/blend_subtract.jpg delete mode 100644 reference/blue_.gif delete mode 100644 reference/blue_/index.html delete mode 100644 reference/boolean.gif delete mode 100644 reference/boolean/index.html delete mode 100644 reference/boolean_/index.html delete mode 100644 reference/box_.gif delete mode 100644 reference/box_/index.html delete mode 100644 reference/box_2.gif delete mode 100644 reference/break/index.html delete mode 100644 reference/brightness_.gif delete mode 100644 reference/brightness_/index.html delete mode 100644 reference/byte/index.html delete mode 100644 reference/byte_/index.html delete mode 100644 reference/camera_/index.html delete mode 100644 reference/case/index.html delete mode 100644 reference/ceil_/index.html delete mode 100644 reference/char/index.html delete mode 100644 reference/char_/index.html delete mode 100644 reference/class/index.html delete mode 100644 reference/color datatype/index.html delete mode 100644 reference/color.gif delete mode 100644 reference/colorMode_.jpg delete mode 100644 reference/colorMode_/index.html delete mode 100644 reference/colorMode_2.jpg delete mode 100644 reference/color_.gif delete mode 100644 reference/color_/index.html delete mode 100644 reference/comma/index.html delete mode 100644 reference/comment/index.html delete mode 100644 reference/concat_/index.html delete mode 100644 reference/conditional/index.html delete mode 100644 reference/constrain_/index.html delete mode 100644 reference/continue/index.html delete mode 100644 reference/copy_.jpg delete mode 100644 reference/copy_/index.html delete mode 100644 reference/cos_.gif delete mode 100644 reference/cos_/index.html delete mode 100644 reference/createFont_/index.html delete mode 100644 reference/createGraphics_/index.html delete mode 100644 reference/createImage.jpg delete mode 100644 reference/createImage_/index.html delete mode 100644 reference/createImage_2.jpg delete mode 100644 reference/crisp/index.html delete mode 100644 reference/curly braces/index.html delete mode 100644 reference/cursor_/index.html delete mode 100644 reference/curveDetail_.gif delete mode 100644 reference/curveDetail_/index.html delete mode 100644 reference/curvePoint_.gif delete mode 100644 reference/curvePoint_/index.html delete mode 100644 reference/curveTangent_.gif delete mode 100644 reference/curveTangent_/index.html delete mode 100644 reference/curveTightness_.gif delete mode 100644 reference/curveTightness_/index.html delete mode 100644 reference/curveVertex_.gif delete mode 100644 reference/curveVertex_/index.html delete mode 100644 reference/curve_.gif delete mode 100644 reference/curve_/index.html delete mode 100644 reference/day_/index.html delete mode 100644 reference/decrement/index.html delete mode 100644 reference/default/index.html delete mode 100644 reference/degrees_/index.html delete mode 100644 reference/directionalLight_.jpg delete mode 100644 reference/directionalLight_/index.html delete mode 100644 reference/directionalLight_2.jpg delete mode 100644 reference/directional_ambient_.jpg delete mode 100644 reference/dist_/index.html delete mode 100644 reference/divide assign/index.html delete mode 100644 reference/divide/index.html delete mode 100644 reference/doc comment/index.html delete mode 100644 reference/dot/index.html delete mode 100644 reference/double/index.html delete mode 100644 reference/draw_/index.html delete mode 100644 reference/ellipseMode_.gif delete mode 100644 reference/ellipseMode_/index.html delete mode 100644 reference/ellipse_.gif delete mode 100644 reference/ellipse_/index.html delete mode 100644 reference/else.gif delete mode 100644 reference/else2.gif delete mode 100644 reference/else_/index.html delete mode 100644 reference/emissive_.jpg delete mode 100644 reference/emissive_/index.html delete mode 100644 reference/endCamera_/index.html delete mode 100644 reference/endShape_.gif delete mode 100644 reference/endShape_/index.html delete mode 100644 reference/equality/index.html delete mode 100644 reference/exit_/index.html delete mode 100644 reference/exp_/index.html delete mode 100644 reference/expand_/index.html delete mode 100644 reference/extends/index.html delete mode 100644 reference/false/index.html delete mode 100644 reference/fill_.gif delete mode 100644 reference/fill_/index.html delete mode 100644 reference/fill_2.gif delete mode 100644 reference/filter_.jpg delete mode 100644 reference/filter_/index.html delete mode 100644 reference/filter_2.gif delete mode 100644 reference/filter_blur.jpg delete mode 100644 reference/filter_gray.jpg delete mode 100644 reference/filter_invert.jpg delete mode 100644 reference/filter_posterize.jpg delete mode 100644 reference/filter_threshold.jpg delete mode 100644 reference/final/index.html delete mode 100644 reference/float/index.html delete mode 100644 reference/float_/index.html delete mode 100644 reference/floor_/index.html delete mode 100644 reference/focused/index.html delete mode 100644 reference/font/index.html delete mode 100644 reference/for_.gif delete mode 100644 reference/for_/index.html delete mode 100644 reference/for_2.gif delete mode 100644 reference/for_3.gif delete mode 100644 reference/for_4.gif delete mode 100644 reference/frameCount/index.html delete mode 100644 reference/frameRate/index.html delete mode 100644 reference/frameRate_/index.html delete mode 100644 reference/frustum_.gif delete mode 100644 reference/frustum_/index.html delete mode 100644 reference/get_.jpg delete mode 100644 reference/get_/index.html delete mode 100644 reference/get_2.jpg delete mode 100644 reference/globalKeyEvents/index.html delete mode 100644 reference/greater than or equal to/index.html delete mode 100644 reference/greater than/index.html delete mode 100644 reference/green_.gif delete mode 100644 reference/green_/index.html delete mode 100644 reference/height.gif delete mode 100644 reference/height/index.html delete mode 100644 reference/hex_/index.html delete mode 100644 reference/hint_/index.html delete mode 100644 reference/hour_/index.html delete mode 100644 reference/hue_.gif delete mode 100644 reference/hue_/index.html delete mode 100644 reference/if_.gif delete mode 100644 reference/if_/index.html delete mode 100644 reference/imageMode_.jpg delete mode 100644 reference/imageMode_/index.html delete mode 100644 reference/image_.jpg delete mode 100644 reference/image_/index.html delete mode 100644 reference/image_2.jpg delete mode 100644 reference/implements/index.html delete mode 100644 reference/import/index.html delete mode 100644 reference/increment/index.html delete mode 100644 reference/index.html delete mode 100644 reference/inequality/index.html delete mode 100644 reference/int/index.html delete mode 100644 reference/int_/index.html delete mode 100644 reference/join_/index.html delete mode 100644 reference/key/index.html delete mode 100644 reference/keyCode/index.html delete mode 100644 reference/keyPressed/index.html delete mode 100644 reference/keyPressed_/index.html delete mode 100644 reference/keyReleased_/index.html delete mode 100644 reference/keyTyped_/index.html delete mode 100644 reference/left shift/index.html delete mode 100644 reference/lerpColor.jpg delete mode 100644 reference/lerpColor_/index.html delete mode 100644 reference/lerp_.gif delete mode 100644 reference/lerp_/index.html delete mode 100644 reference/lerp_2.gif delete mode 100644 reference/less than or equal to/index.html delete mode 100644 reference/less than/index.html delete mode 100644 reference/lightFalloff_/index.html delete mode 100644 reference/lightSpecular_.jpg delete mode 100644 reference/lightSpecular_/index.html delete mode 100644 reference/lights_.jpg delete mode 100644 reference/lights_/index.html delete mode 100644 reference/lights_2.jpg delete mode 100644 reference/line_.gif delete mode 100644 reference/line_/index.html delete mode 100644 reference/line_2.gif delete mode 100644 reference/line_3.gif delete mode 100644 reference/link_/index.html delete mode 100644 reference/loadBytes_/index.html delete mode 100644 reference/loadFont_.gif delete mode 100644 reference/loadFont_/index.html delete mode 100644 reference/loadImage_.jpg delete mode 100644 reference/loadImage_/index.html delete mode 100644 reference/loadPixels_.jpg delete mode 100644 reference/loadPixels_/index.html delete mode 100644 reference/loadShape_/index.html delete mode 100644 reference/loadStrings_/index.html delete mode 100644 reference/log_/index.html delete mode 100644 reference/logical AND/index.html delete mode 100644 reference/logical NOT/index.html delete mode 100644 reference/logical OR/index.html delete mode 100644 reference/logicalAND.gif delete mode 100644 reference/logicalNOT.gif delete mode 100644 reference/logicalOR.gif delete mode 100644 reference/long/index.html delete mode 100644 reference/lookat_.gif delete mode 100644 reference/loop_/index.html delete mode 100644 reference/mag_.gif delete mode 100644 reference/mag_/index.html delete mode 100644 reference/map_/index.html delete mode 100644 reference/mask_.jpg delete mode 100644 reference/matchAll_/index.html delete mode 100644 reference/match_/index.html delete mode 100644 reference/max_/index.html delete mode 100644 reference/millis_/index.html delete mode 100644 reference/min_/index.html delete mode 100644 reference/minus/index.html delete mode 100644 reference/minute_/index.html delete mode 100644 reference/modelX_/index.html delete mode 100644 reference/modelY_/index.html delete mode 100644 reference/modelZ_/index.html delete mode 100644 reference/modulo/index.html delete mode 100644 reference/month_/index.html delete mode 100644 reference/mouseButton/index.html delete mode 100644 reference/mouseClicked_/index.html delete mode 100644 reference/mouseDragged_/index.html delete mode 100644 reference/mouseMoved_/index.html delete mode 100644 reference/mouseOut_/index.html delete mode 100644 reference/mouseOver_/index.html delete mode 100644 reference/mousePressed/index.html delete mode 100644 reference/mousePressed_/index.html delete mode 100644 reference/mouseReleased_/index.html delete mode 100644 reference/mouseX/index.html delete mode 100644 reference/mouseY/index.html delete mode 100644 reference/multiline comment/index.html delete mode 100644 reference/multiply assign/index.html delete mode 100644 reference/multiply/index.html delete mode 100644 reference/new/index.html delete mode 100644 reference/nf_/index.html delete mode 100644 reference/nfc_/index.html delete mode 100644 reference/nfp_/index.html delete mode 100644 reference/nfs_/index.html delete mode 100644 reference/noCursor_/index.html delete mode 100644 reference/noFill_.gif delete mode 100644 reference/noFill_/index.html delete mode 100644 reference/noLights_/index.html delete mode 100644 reference/noLoop_/index.html delete mode 100644 reference/noSmooth_.gif delete mode 100644 reference/noSmooth_/index.html delete mode 100644 reference/noStroke_.gif delete mode 100644 reference/noStroke_/index.html delete mode 100644 reference/noTint_.jpg delete mode 100644 reference/noTint_/index.html delete mode 100644 reference/noiseDetail_/index.html delete mode 100644 reference/noiseSeed_/index.html delete mode 100644 reference/noise_/index.html delete mode 100644 reference/norm_/index.html delete mode 100644 reference/normal_/index.html delete mode 100644 reference/null/index.html delete mode 100644 reference/online/index.html delete mode 100644 reference/ortho_.gif delete mode 100644 reference/ortho_/index.html delete mode 100644 reference/parentheses/index.html delete mode 100644 reference/pauseOnBlur/index.html delete mode 100644 reference/perspective_.gif delete mode 100644 reference/perspective_/index.html delete mode 100644 reference/pgraphics.jpg delete mode 100644 reference/pixels.gif delete mode 100644 reference/pixels_/index.html delete mode 100644 reference/pjs directive/index.html delete mode 100644 reference/pmouseX/index.html delete mode 100644 reference/pmouseY/index.html delete mode 100644 reference/pointLight_.jpg delete mode 100644 reference/pointLight_/index.html delete mode 100644 reference/point_.gif delete mode 100644 reference/point_/index.html delete mode 100644 reference/point_2.gif delete mode 100644 reference/popMatrix_/index.html delete mode 100644 reference/popStyle_/index.html delete mode 100644 reference/pop_.gif delete mode 100644 reference/pow_/index.html delete mode 100644 reference/preload/index.html delete mode 100644 reference/printCamera_/index.html delete mode 100644 reference/printMatrix_/index.html delete mode 100644 reference/printProjection_/index.html delete mode 100644 reference/print_/index.html delete mode 100644 reference/println_/index.html delete mode 100644 reference/private/index.html delete mode 100644 reference/public/index.html delete mode 100644 reference/pushMatrix_.gif delete mode 100644 reference/pushMatrix_/index.html delete mode 100644 reference/pushStyle-2.gif delete mode 100644 reference/pushStyle.gif delete mode 100644 reference/pushStyle_/index.html delete mode 100644 reference/quad_.gif delete mode 100644 reference/quad_/index.html delete mode 100644 reference/radians_/index.html delete mode 100644 reference/randomSeed_/index.html delete mode 100644 reference/random_/index.html delete mode 100644 reference/rect()/index.html delete mode 100644 reference/rectMode_.gif delete mode 100644 reference/rectMode_/index.html delete mode 100644 reference/rect_.gif delete mode 100644 reference/rect_/index.html delete mode 100644 reference/red_.gif delete mode 100644 reference/red_/index.html delete mode 100644 reference/redraw_/index.html delete mode 100644 reference/requestImage_/index.html delete mode 100644 reference/resetMatrix_.gif delete mode 100644 reference/resetMatrix_/index.html delete mode 100644 reference/return/index.html delete mode 100644 reference/reverse_/index.html delete mode 100644 reference/right shift/index.html delete mode 100644 reference/rotateX_.gif delete mode 100644 reference/rotateX_/index.html delete mode 100644 reference/rotateY_.gif delete mode 100644 reference/rotateY_/index.html delete mode 100644 reference/rotateZ_.gif delete mode 100644 reference/rotateZ_/index.html delete mode 100644 reference/rotate_.gif delete mode 100644 reference/rotate_/index.html delete mode 100644 reference/round_/index.html delete mode 100644 reference/saturation_.gif delete mode 100644 reference/saturation_/index.html delete mode 100644 reference/saveFrame_/index.html delete mode 100644 reference/saveStrings_/index.html delete mode 100644 reference/save_/index.html delete mode 100644 reference/scale_.gif delete mode 100644 reference/scale_/index.html delete mode 100644 reference/scale_2.gif delete mode 100644 reference/scale_3.gif delete mode 100644 reference/screen/index.html delete mode 100644 reference/screenX_/index.html delete mode 100644 reference/screenY_/index.html delete mode 100644 reference/screenZ_/index.html delete mode 100644 reference/second_/index.html delete mode 100644 reference/semi colon/index.html delete mode 100644 reference/set_.gif delete mode 100644 reference/set_/index.html delete mode 100644 reference/set_2.jpg delete mode 100644 reference/set_3.jpg delete mode 100644 reference/setup_/index.html delete mode 100644 reference/shapeMode.jpg delete mode 100644 reference/shapeMode_/index.html delete mode 100644 reference/shape_/index.html delete mode 100644 reference/shininess_.jpg delete mode 100644 reference/shininess_/index.html delete mode 100644 reference/shorten_/index.html delete mode 100644 reference/sin_.gif delete mode 100644 reference/sin_/index.html delete mode 100644 reference/size_/index.html delete mode 100644 reference/smooth_.gif delete mode 100644 reference/smooth_/index.html delete mode 100644 reference/sort_/index.html delete mode 100644 reference/specular_.jpg delete mode 100644 reference/specular_/index.html delete mode 100644 reference/sphereDetail_/index.html delete mode 100644 reference/sphere_.gif delete mode 100644 reference/sphere_/index.html delete mode 100644 reference/splice_/index.html delete mode 100644 reference/splitTokens_/index.html delete mode 100644 reference/split_/index.html delete mode 100644 reference/spotLight_.jpg delete mode 100644 reference/spotLight_/index.html delete mode 100644 reference/spotLight_2.jpg delete mode 100644 reference/sq_.gif delete mode 100644 reference/sq_/index.html delete mode 100644 reference/sqrt_.gif delete mode 100644 reference/sqrt_/index.html delete mode 100644 reference/static/index.html delete mode 100644 reference/status_/index.html delete mode 100644 reference/str_/index.html delete mode 100644 reference/strokeCap_.gif delete mode 100644 reference/strokeCap_/index.html delete mode 100644 reference/strokeJoin_.gif delete mode 100644 reference/strokeJoin_/index.html delete mode 100644 reference/strokeJoin_2.gif delete mode 100644 reference/strokeJoin_3.gif delete mode 100644 reference/strokeWeight_.gif delete mode 100644 reference/strokeWeight_/index.html delete mode 100644 reference/stroke_.gif delete mode 100644 reference/stroke_/index.html delete mode 100644 reference/stroke_2.gif delete mode 100644 reference/subset_/index.html delete mode 100644 reference/subtract assign/index.html delete mode 100644 reference/super/index.html delete mode 100644 reference/svg.jpg delete mode 100644 reference/switch_/index.html delete mode 100644 reference/tan_.gif delete mode 100644 reference/tan_/index.html delete mode 100644 reference/textAlign_.gif delete mode 100644 reference/textAlign_/index.html delete mode 100644 reference/textAscent_.gif delete mode 100644 reference/textAscent_/index.html delete mode 100644 reference/textDescent_.gif delete mode 100644 reference/textDescent_/index.html delete mode 100644 reference/textFont_.gif delete mode 100644 reference/textFont_/index.html delete mode 100644 reference/textLeading_.gif delete mode 100644 reference/textLeading_/index.html delete mode 100644 reference/textMode_.gif delete mode 100644 reference/textMode_/index.html delete mode 100644 reference/textSize_.gif delete mode 100644 reference/textSize_/index.html delete mode 100644 reference/textWidth_.gif delete mode 100644 reference/textWidth_/index.html delete mode 100644 reference/text_.gif delete mode 100644 reference/text_/index.html delete mode 100644 reference/text_3.gif delete mode 100644 reference/text_X.gif delete mode 100644 reference/textureMode_.gif delete mode 100644 reference/textureMode_/index.html delete mode 100644 reference/textureMode_2.gif delete mode 100644 reference/texture_.gif delete mode 100644 reference/texture_/index.html delete mode 100644 reference/this/index.html delete mode 100644 reference/tint_.jpg delete mode 100644 reference/tint_/index.html delete mode 100644 reference/tint_2.jpg delete mode 100644 reference/translate_.gif delete mode 100644 reference/translate_/index.html delete mode 100644 reference/translate_2.gif delete mode 100644 reference/translate_3.gif delete mode 100644 reference/transparent/index.html delete mode 100644 reference/triangle_.gif delete mode 100644 reference/triangle_/index.html delete mode 100644 reference/trim_/index.html delete mode 100644 reference/true/index.html delete mode 100644 reference/unbinary_/index.html delete mode 100644 reference/unhex_/index.html delete mode 100644 reference/updatePixels_.jpg delete mode 100644 reference/updatePixels_/index.html delete mode 100644 reference/updatePixels_2.jpg delete mode 100644 reference/vertex_.gif delete mode 100644 reference/vertex_/index.html delete mode 100644 reference/vertex_2.gif delete mode 100644 reference/vertex_3.gif delete mode 100644 reference/void/index.html delete mode 100644 reference/while_.gif delete mode 100644 reference/while_/index.html delete mode 100644 reference/width.gif delete mode 100644 reference/width/index.html delete mode 100644 reference/year_/index.html delete mode 100644 sketches/2d1.pde delete mode 100644 sketches/bannerSketch.pde delete mode 100644 sketches/basic-example.pde delete mode 100644 sketches/jmartinho_tr-lines_2011.pde delete mode 100644 sketches/my-life-aquatic/Boid.pde delete mode 100644 sketches/my-life-aquatic/Bubble.pde delete mode 100644 sketches/my-life-aquatic/Fish.pde delete mode 100644 sketches/my-life-aquatic/Flagellum.pde delete mode 100644 sketches/my-life-aquatic/Food.pde delete mode 100644 sketches/my-life-aquatic/explosion.mp3 delete mode 100644 sketches/my-life-aquatic/explosion.ogg delete mode 100644 sketches/my-life-aquatic/gulp.mp3 delete mode 100644 sketches/my-life-aquatic/gulp.ogg delete mode 100644 sketches/my-life-aquatic/pond.pde delete mode 100644 sketches/mysketch.pde delete mode 100644 sketches/mysketch2.pde delete mode 100644 sketches/mysketch3.pde delete mode 100644 sketches/mysketch4.pde delete mode 100644 sketches/mysketch5.pde delete mode 100644 sketches/mysketch6.pde delete mode 100644 sketches/mysketch7.pde delete mode 100644 sketches/mysketch8.pde delete mode 100644 sketches/sketch1.pde delete mode 100644 sketches/sketch2.pde delete mode 100644 sketches/sketch3.pde delete mode 100644 sketches/sketch4.pde delete mode 100644 sketches/sketch5.pde delete mode 100644 sketches/webgl1.pde delete mode 100644 sketches/webgl2.pde delete mode 100644 tools/jsbeautify.js delete mode 100644 tools/processing-helper.html delete mode 100644 tools/processing-helper.js diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 5499180..0000000 --- a/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -# OS X ignores -.DS_Store - -# Jekyll ignores -_site -Gemfile.lock diff --git a/.htaccess b/.htaccess deleted file mode 100644 index 91c358e..0000000 --- a/.htaccess +++ /dev/null @@ -1 +0,0 @@ -ErrorDocument 404 /404.html diff --git a/.rvmrc b/.rvmrc deleted file mode 100644 index 1ef2bfa..0000000 --- a/.rvmrc +++ /dev/null @@ -1 +0,0 @@ -rvm use ruby-1.9.3-p194@processing.js --create diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 318436a..0000000 --- a/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: ruby -rvm: -- 2.1.0 -install: bundle install -script: bundle exec jekyll build -script: bundle exec jekyll build diff --git a/404.html b/404.html deleted file mode 100644 index 02cda41..0000000 --- a/404.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: default ---- -

                            Page not found

                            -

                            The page you requested could not be found. Click here to return home.

                            diff --git a/CNAME b/CNAME deleted file mode 100644 index 1c989db..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -processingjs.org diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 053c27d..0000000 --- a/Gemfile +++ /dev/null @@ -1,2 +0,0 @@ -source 'https://rubygems.org' -gem 'github-pages' diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md deleted file mode 100644 index 666a153..0000000 --- a/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ -Thank you for finding a bug on the Processing.js website, or having a change request you'd like to see implemented. - -The Processing.js website is not under active maintenance at the moment, lacking developers that have -the time to work on it. As such, any bug you find might take a long time to get a fix. However, if -you're interested in fixing things yourself, I (Pomax) will be more than happy to review your suggested -changes and merge them in if they fix the problem you were having without introducing problems -due to side effects your code might have. diff --git a/README.md b/README.md index 9d4455c..1b77ae5 100644 --- a/README.md +++ b/README.md @@ -1,140 +1,12 @@ -The Processing.js website -========================= +Processing.js +============= -This is our website, in all its glory. +Processing.js was a port of the [Processing](https://processing.org) programming language for the web, and was maintained from November 2011 to December 2018, having been unofficially retired in March of 2017. -Testing the website locally ---------------------------- +If you're looking for the last version of Processing.js before the project was officially discontinued, you're looking for [v1.6.6](https://github.com/processing-js/processing-js/tree/v1.6.6). -Install [Jekyll](https://github.com/mojombo/jekyll/wiki/Install) on your computer, -clone this repository, and run `jekyll` inside the root of the repository. +If you want to use Processing on the web today, please have a look at the newer [P5.js](https://p5js.org) project, which was a reimagining of Processing "if it had been designed for use on the web from the get-go". -To match Github Pages, you'll need to install Jekyll v0.11.0, uninstall Liquid v2.3.0 -(`gem uninstall liquid`), then install Liquid v2.2.2 (`gem install liquid -v 2.2.2`). For this -combination to work, you'll need to be running ruby 1.8.7; ruby 1.9.x fails with an "invalid byte -sequence in UTF-8" ArgumentError. +Thank you to everyone who used Processing.js in the past, and of course: everyone who worked on the project over the years. -Jekyll will compile (yes, seriously) the website into the _site directory, and start a -localhost web server running on port 4000. Jekyll will automatically recompile the site -if you make any changes. - -Updating the blog ------------------ - -The blog index is `/blog/index.html`, and all of the individual blog posts are located in -`/blog/_posts/`. I've created a template blog post in `/blog/_posts/template.html`, but for -posterity, here it is: - - --- - layout: post - title: Template blog title - --- -

                            Write your blog post here

                            - -Once you've changed the title to something appropriate and written something useful for the -blog post, you need to save the blog post with a specific filename within the _posts -directory to have Jekyll pick it up as a blog post. The format is `yyyy-mm-dd-title-with-dashes.ext`, -where ext can be html, md, or textile. - -Updating the downloads ----------------------- - -The downloads index is `/downloads/index.html`, and all of the files for download are located -at [https://github.com/processing-js/processing-js/downloads](https://github.com/processing-js/processing-js/downloads). -Each release of Processing.js gets a post in the `/downloads/_posts/` directory which contains -links for each download. -Everyone with the right access (see below) should upload the files to the Github Downloads -page, then update the Processing.js Downloads page to point to the new files. - -Updating the exhibitions ------------------------- - -The exhibitions index is `/exhibition/index.html`, and all of the individual exhibitions are -located in `/exhibition/_posts/`. I've created a template exhibition in -`/exhibition/_posts/template.html`, but it's here too: - - - - - -
                            Demoname
                            by
                            -

                            Authors

                            -

                            Description

                            -
                            - -You'll need a make a 180x75 screenshot of the exhibition in question, and put that in -`/images/exhibition/`. Once you done that, fill out the rest of the information in the -template. Like blog posts, you'll need to name the exhibition in a specific format so -that it's picked up by Jekyll: `yyyy-mm-dd-title-with-dashes.ext`, where ext can be html, -md, or textile. To preserve the order of exhibitions on the index page, I just incremented -the date by one day for each exhibition. - -Updating the articles ---------------------- - -The articles index is `/articles/index.html`, and all of the individual articles are located -in `/articles/_posts/`. The template is at `/articles/_posts/template.html`, but let's look -at it anyways: - - --- - layout: default - desc: Jon's Guide to ASDF - title: ASDF Guide - permalink: /articles/ASDFGuide.html - --- -

                            This is my lovely article about ASDF

                            - -The desc is a short description of the article that's shown on the Articles index page. The -title is the actual title of the article. The permalink is where the article should actually -be placed when compiled; by default it gets a URL with the publish date, which is something -we don't care about. Like blog posts and exhibitions, you'll need to name the exhibition in -a specific format so that it's picked up by Jekyll: `yyyy-mm-dd-title-with-dashes.ext`, where -ext can be html, md, or textile. - -If you want to update the list of articles that appears on the front page, you'll need to edit -the default layout in `/_layouts/default.html`. - -Updating the front page ------------------------ - -The front page index is `/index.html`. If you're editing the front page text or exhibitions, -this is the place to do it. - -Updating anything else ----------------------- - -Everything else is static content. Go to the exact file you're looking for, and make whatever -changes you need to make! - -Layouts -------- - -On almost every single page you see, there's a few lines of text that looks like this: - - --- - layout: default - --- - -This YAML front matter tells Jekyll to use the layout in `_layouts` named `default`. In this -case, `_layouts/default.html`. There's another layout for blog posts called `post` which -inherits from `default`. Be careful about making changes to these layouts, as it affects -pretty much every other page. Everything that you link to from this page must be linked in -an absolute fashion, with a `/` at the front. - -Access controls ---------------- - -Who is allowed to update the git repository is controlled by the Processing.js -[organization settings](https://github.com/organizations/processing-js/teams) on Github. - -Hosting considerations ----------------------- - -The Processing.js site will work on any hosting service that serves content with the -correct MIME type. The only content on the website that is not stored within the -repository is the various Processing.js releases on our Downloads page. Those are -currently stored in the [Github Downloads page](https://github.com/processing-js/processing-js/downloads) -for Processing.js. If we had to move from Github Pages hosting to somewhere else, we'd -need to update the download links on our Downloads page. We'd also need to figure out -access controls for new hosting; the access controls for Github are everyone added to -the [Processing.js organization](https://github.com/processing-js). +- The Processing.js Team diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 93a2530..0000000 --- a/_config.yml +++ /dev/null @@ -1,4 +0,0 @@ -# Github defaults -safe: true -lsi: false -highlighter: rouge diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index 38c85c6..0000000 --- a/_layouts/default.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - {% if page.title %}{{ page.title }} | {% endif %}Processing.js - - - - - - - - - - - -
                            -
                            - -
                            - a port of the Processing Visualization Language - - - - - - -
                            - - Fork me on GitHub - - - diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index 71278da..0000000 --- a/_layouts/post.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: default ---- -
                            -

                            {{ page.title }}

                            -
                            {{ page.date | date_to_string }}
                            -{{ content }} -
                            diff --git a/_layouts/withcc.html b/_layouts/withcc.html deleted file mode 100644 index fe6c216..0000000 --- a/_layouts/withcc.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default ---- -{{ content }} -
                            -

                            This reference is licensed under the CC BY-NC-SA 2.0 license:

                            - - Creative Commons License - -
                            \ No newline at end of file diff --git a/articles/_posts/2011-12-01-PomaxGuide.html b/articles/_posts/2011-12-01-PomaxGuide.html deleted file mode 100644 index 96b91b6..0000000 --- a/articles/_posts/2011-12-01-PomaxGuide.html +++ /dev/null @@ -1,1486 +0,0 @@ ---- -layout: default -desc: Pomax's guide to Processing.js -title: Pomax Guide -permalink: /articles/PomaxGuide.html ---- - - -
                            -

                            Pomax's guide to Processing.js

                            - - - -

                            This page tries to explain how to quickly and (as) correctly (as possible) use - Processing sketches on webpages. The information is based on the work done by - the processing.js group.

                            - -

                            This information on this page reflects the best of my knowledge anno November - 2010, and processing.js becomes more and more complete, so it is possible that the - information on this page changes over time. Should you spot any incompletenesses - or blatant mistakes, please contact me at - - - pomax at - nihongoresources.com, - - with the obvious substitutions in place to make it a legal email address.

                            - -

                            What is Processing?

                            - -

                            The "Processing" language (also referred to as "P5") is a programming language - with a focus on data visualisation. Of course, "data" is a loose concept, and - Processing can be used for anything from drawing a few lines and circles on a - screen, to full blown interactive animations. In fact, a basic Processing program - is two lines of code, and will already play an animation:

                            - - {% highlight java linenos %} - void setup() { size(..., ...); } - void draw() {}{% endhighlight %} - -

                            Of course this program doesn't show you anything, because all it does is set up - the visual context to have a certain width and height (indicated in the setup - method as the size(...,...) instruction) and then calls draw() every few milliseconds. - Of course, draw() is empty, so it won't actually show you anything. A more useful - minimal program would be a "hello world" program, but I hate those because they only - show a programming language can write text, and that's pretty much the least interesting - feature of any programming language. Instead let's look at a minimal program that makes - sense for a data visualisation language:

                            - - {% highlight java linenos %} - float framerate = 24; // our "sketch" will have a framerate of 24 frames per second. - - int ball_x; // ball administration: x coordinate - int ball_y; // ball administration: y coordinate - int ball_radius = 20; // ball administration: ball radius - - void setup() { - size(200,200); // set draw area size - frameRate(framerate); // set animation framerate - ball_x = width/2; // set the initial ball coordinates - ball_y = ball_radius; // set the initial ball coordinates - stroke(#003300); // set the default shape outline colour - fill(#0000FF); // set the default shape fill colour - } - - void draw() { - // compute the ball height for this frame - float bounce_height = height/2 * abs(sin(PI*frameCount/framerate)); - // because the top of the screen is 0, and the bottom is "height", - float ball_height = height - (bounce_height+ball_radius); - // clear the drawing area - background(#FFFFEE); - // set the new ball y position - ball_y = (int) (ball_height); - // draw the ball - ellipse(ball_x,ball_y,ball_radius,ball_radius); - }{% endhighlight %} - - - -
                            - play controls: - - -
                            - -

                            This looks a bit long for a minimal program, but then again, this actually does - something: it shows us a ball that bounces up and down, taking one second for each - bounce. It shows a few aspects of Processing too: every variable is strongly typed. - So you have to indicate what you'll be using a variable for, and you can choose from:

                            - -
                              -
                            • boolean, a binary value that can be either true or false
                            • -
                            • byte, an 8-bit value
                            • -
                            • char, a byte representing an ascii character
                            • -
                            • color, a type specific to Processing, representing an on-screen color
                            • -
                            • int, a 32 bit signed integer number
                            • -
                            • long, a 64 bit signed integer number
                            • -
                            • float, a 32 bit signed decimal number
                            • -
                            • double, a 64 bit signed decimal number
                            • -
                            - -

                            And of course there are also the typical complex data types:

                            - -
                              -
                            • Object, a catch-all data type for things that are complex data types.
                            • -
                            • String, a text string (stored as UTF-16).
                            • -
                            • ArrayList, a list structure for arbitrary values with add/remove functionality.
                            • -
                            • HashMap, a structure that can store {, } pairs.
                            • -
                            • XMLElement, a convenient XML-mirroring object.
                            • -
                            - -

                            You'll see why this last one turns out to be really useful later on.

                            - -

                            Coming back to the minimally functional example of a Processing program, or "sketch", - there are also some examples of Processing' own API at work. The following methods are - native Processing calls:

                            - -
                              -
                            • size(int, int), sets the drawing area dimensions, and the global "width" and "height" values.
                            • -
                            • frameRate(int), sets the refresh rate for the drawing area, and the frameRate value.
                            • -
                            • stroke(color), sets the shape outline color.
                            • -
                            • fill(color), sets the shape fill color.
                            • -
                            • abs(number), computes the absolute value of any number.
                            • -
                            • sin(number), computes the sinoid value based on any number (treated as radians).
                            • -
                            • background(color), sets every pixel of the drawing area to the specified color.
                            • -
                            • ellipse(int, int, int, int), draws an ellipse on the drawing area.
                            • -
                            - -

                            The Processing API is in fact quite expansive (See - http://processing.org/reference for the full - list), but it can't cover everything. Luckily it supports object oriented programming, so - that our previous example can also be written as an object oriented sketch:

                            - - {% highlight java linenos %} - Bouncer bouncer; - - void setup() { - size(200,200); - frameRate(24); - stroke(#003300); - fill(#0000FF); - bouncer = new Ball(width/2,20,20); - } - - void draw() { - bouncer.computeNextStep(width, height, frameRate); - background(#FFFFEE); - bouncer.draw(); - } - - interface Bouncer { - void computeNextStep(int width, int height, float framerate); - void draw(); - } - - class Ball implements Bouncer - { - int x,y,radius; - int step = 0; - - Ball(int x, int y, int r) { - this.x = x; - this.y = y; - this.radius = r; - } - - void computeNextStep(int sketch_width, int sketch_height, float frame_rate) { - step++; - float sin_value = abs(sin(PI*step/(float)frame_rate)); - float bounce_height = sketch_height/2 * sin_value; - float ball_height = sketch_height - (bounce_height + radius); - y = (int) (ball_height); - } - - void draw() { - ellipse(x,y,radius,radius); - } - }{% endhighlight %} - - - -
                            - play controls: - - -
                            - -

                            Instead of doing everything in the draw() function, the object oriented approach - tucks all the code that relates to computing the ball's position in the definition - for what we consider a "Ball". To be good object oriented programmers, we've also said - that things that are a Ball are also a Bouncer, and this lets us extend our sketch very - easily to instead of a bouncing ball, have a bouncing box by keeping almost everything - the same, and adding a new class Box that's a Bouncer:

                            - - {% highlight java linenos %} - void setup() { - ... - bouncer = new Box(width/2,20,20,20); - } - - class Box implements Bouncer - { - int x,y,w,h; - int step=0; - - Box(int x, int y, int w, int h) { - this.x = x; - this.y = y; - this.w = w; - this.h = h; - } - - void computeNextStep(int sketch_width, int sketch_height, float frame_rate) { - step++; - float sin_value = abs(sin(PI/2.0 + (PI*step/(float)frame_rate))); - float bounce_height = sketch_height/2 * sin_value; - float ball_height = sketch_height - (bounce_height + h); - y = (int) (ball_height); - } - - void draw() { - rect(x,y,w,h); - }{% endhighlight %} - - - -
                            - play controls: - - -
                            - -

                            All of a sudden we have a bouncing box, that starts from a falling position instead - of from the ground, and we didn't have to modify the master draw() function for it! - In fact, let's just use a group of bouncing things:

                            - - {% highlight java linenos %} - Bouncer[] bouncer = new Bouncer[3]; - - void setup() { - ... - bouncer[0] = new Ball(width/3-20,20,20); - bouncer[1] = new Box(width/2-10,20,20,20); - bouncer[2] = new Ball((2*width/3)+20,20,20); - } - - void draw() { - for(int b=0, end=bouncer.length; b - -
                            - play controls: - - -
                            - -

                            Fantastic, two bouncing balls and a bouncing box, bouncing counter-point to each - other. But it's not very interactive yet. Let's change it so that we can "hang on" - to bouncing things until we let go of them again. Processing allows interaction with - the keyboard and mouse, using what are known as "event handlers", methods that Processing - automatically calls for you when you use the keyboard or mouse. In this case we care - about mouse interaction, so we'll look at mousePressed and mouseReleased events:

                            - - {% highlight java linenos %} - void mousePressed() { - for(int b=0, end=bouncer.length; b - -
                            - play controls: - - -
                            - -

                            Because the Ball and Box classes will do the same thing on mouse interaction, - the interface Bouncer has been changed to an actual class too, to take care of some of - the shared functionality. Now if you click on anything that's a Bouncer it'll stop - moving until you let it go. Let's go one step further an just allow us to move the - bouncing things around, too.

                            - - {% highlight java linenos %} - Bouncer[] bouncer = new Bouncer[3]; - - void setup() { - size(200,200); - frameRate(24); - stroke(#003300); - fill(#0000FF); - bouncer[0] = new Ball(width/3-20,20,20); - bouncer[1] = new Box(width/2-10,20,20,20); - bouncer[2] = new Ball((2*width/3)+20,20,20); - } - - void draw() { - for(int b=0, end=bouncer.length; b - -
                            - play controls: - - -
                            - -

                            And with that, on to the original topic of this article: using Processing on web pages

                            - -

                            Putting a sketch on the page

                            - -

                            The great thing about Processing is that it can be used on webpages. Traditionally, - you would convert your sketch to a java applet, and embed that on a page, but the - processing.js project has changed this: you can now use your sketches directly without - turning it into an applet at all. In the same way that you include a javascript file, - or a CSS stylesheet, you can simply link to your sketch and magic happens.

                            - -

                            Let's say we save the previous sketch, with the bouncing and the mouse interaction, - as "mysketch.pde", and we want to show this on a webpage. Using processing.js, this is - a trivially simple trick:

                            - - {% highlight html linenos %} - - - - - My Processing Page - - - - - - {% endhighlight %} - - - -
                            - play controls: - - -
                            - -

                            And we're done. In fact, I went ahead and made sure this page already uses processing.js, - and that there is a mysketch.pde to load. If you click on the play control for the sketch - above, it will start running, and do exactly what you would expect it to do based on what - it does when you run it from the Processing environment.

                            - -

                            Putting a sketch inline on the page

                            - -

                            While not recommended, you can also put your sketch directly on a page, much like how - you can put javascript or CSS styles directly on a page. However, in order for processing.js - to properly load your code, you'll need some extra help in the form of the "init.js" file - that is included with the processing.js examples archive from the processing.js downloads page

                            - - {% highlight html linenos %} - - - - - My Processing Page - - - - - - - {% endhighlight %} - -

                            There are several reasons for why this is not a very good practice, but the most important - one is that this way you can't be sure whether or not you've written a bug-free sketch. By - writing it directly on the page, you might in fact have written some buggy code, which you - will then find is terribly hard to debug because the browser is not equiped with a debugger - for Processing code. In fact, processing.js rewrites your sketch into pure javascript (using - some terribly clever tricks that we won't go into), so even if when it tells you where the - error is in a javascript debugger, it will tell you where it went wrong in the converted - javascript object, not the actual place in your source code. So keep it as a separate file, - and make sure to test your code in the Processing IDE!

                            - -

                            Making your sketch and your page see each other

                            - -

                            Just running a sketch on a page is fine, but the benefit of a webpage is that it offers - the kind of user interaction that you can't get from within the sketch itself. Pretty buttons, - text areas that fold away, pop up, etc. make it very attractive to have your sketch do all - the animation graphicsy work, but have all the information about the sketch, as well as - controls for it, on the webpage. This is entirely possible - in fact, the "stop" and "play" - buttons for the sketch above are examples of javascript telling the sketch what to do. Because - a webpage offers more than a plain sketch can, processing.js has a few special tricks up its - sleeve, so that you can get the most out of your creative work. Arguably the most important of - these is the "get the sketch" function:

                            - - {% highlight javascript linenos %} - var mysketch = Processing.getInstanceById('mysketchid');{% endhighlight %} - -

                            This is the pivotal function on the javascript side of things. It gives you a direct reference - to your sketch, and everything in it, so that you can call any function and examine and modify - any variable that is in the sketch.

                            - -

                            Making javascript see your sketch

                            - -

                            Let's say we have the following sketch:

                            - - {% highlight java linenos %} - void setup() { - size(200,200); - noLoop(); // turn off animation, since we won't need it - stroke(#FFEE88); - fill(#FFEE88); - background(#000033); - text("",0,0); // force Processing to load a font - textSize(24); // set the font size to something big - } - - void draw() { } - - void drawText(String t) - { - background(#000033); - // get the width for the text - float twidth = textWidth(t); - // place the text centered on the drawing area - text(t, (width - twidth)/2, height/2); - }{% endhighlight %} - -

                            We can make this sketch draw a different text based on some text we have on our webpage, - using javascript. This is in fact really easy: first, let's save this processing code as - mysketch2.pde, and load it onto a page in the same way as earlier in the article. Then, we - use javascript to ask for our sketch instance, after which we call the "drawText" function - with some text that we get from the web page that the sketch is running on:

                            - - {% highlight html linenos %} - - - - - My Processing Page - - - - - - - - - {% endhighlight %} - -

                            This has the same effect as the sketch that's running below. Simply fill in a bit - of text, and hit the ▶ button to see the sketch render it on the drawing area.

                            - - - -
                            - set text: - - -
                            - -

                            So far so good, but what if we also want to make Processing code call javascript? - In order for us to so, while making sure the sketch keeps running both on your page an - in the Processing environment, we have to do a bit more work

                            - -

                            Making your sketch "see" javascript

                            - -

                            You can't just stick plain javascript in your sketch and hope everything goes well - because it's "on a web page". A better approach is to neatly separate your sketch and - your on-page javascript, and ensure that whatever you want to do on your page runs - through a javascript function. How do we do that? Let's say we have the following page:

                            - - {% highlight html linenos %} - - - - - My Processing Page - - - - -
                            - x/y: / -
                            - - {% endhighlight %} - -

                            And say we have the following sketch, which we'll save as mysketch3.pde:

                            - - {% highlight java linenos %} - void setup() { - size(200,200); - stroke(255); - background(0); - noLoop(); - } - - void draw() { - fill(0,0,0,40); - rect(-1,-1,width+2,height+2); - } - void mouseMoved() { - line(mouseX,0,mouseX,height); - line(0,mouseY,width,mouseY); - redraw(); - }{% endhighlight %} - -

                            As an exercise, let's try to get the mouse coordinates from that mouseMoved event - onto the page. This means we'll need to define a javascript function that will do this for us:

                            - - {% highlight javascript linenos %} - function showXYCoordinates(x, y) { - document.getElementById('xcoord').value = x; - document.getElementById('ycoord').value = x; - }{% endhighlight %} - -

                            And we'll need to make the sketch know that there is such a thing as javascript, - and that it has this function:

                            - - {% highlight java linenos %} - interface JavaScript { - void showXYCoordinates(int x, int y); - } - - void bindJavascript(JavaScript js) { - javascript = js; - } - - JavaScript javascript; - - void setup() { ...} - void draw() { ... } - void mouseMoved() { - ... - if(javascript!=null){ - javascript.showXYCoordinates(mouseX, mouseY); - } - }{% endhighlight %} - -

                            What we've done is we've told Processing: "There are things that follow the - JavaScript interface. This means that whatever else they can do, they'll have a - function called "showXYCoordinates" and that function takes two arguments, both of type int." - - of course, the sketch will not magically know our on-page javascript, so we also - define a function that lets us tell the sketch what actually counts as javascript, - which is what the bindJavascript(...) function is for.

                            - -

                            This leaves us with needing to make sure that we really do tell the sketch what - Javascript is, which we'll do as follows on the page:

                            - - {% highlight javascript linenos %} - var bound = false; - - function bindJavascript() { - var pjs = Processing.getInstanceById('mysketch3'); - if(pjs!=null) { - pjs.bindJavascript(this); - bound = true; - } - if(!bound) setTimeout(bindJavascript, 250); - } - - bindJavascript();{% endhighlight %} - -

                            This defines a function that checks whether processing.js has loaded our sketch yet. - If not, it tries again 250ms later. If the sketch is loaded, the reference to the sketch - is used to tell it what "javascript" should be. This is achieved by virtue of processing.js - trusting that you wrote valid code. As such, as long as you're on the javascript side of - things, you can pass the sketch whatever you like, and the sketch will trust that it conforms - to what the method says the type should be. In this case we pass the javascript "this" value - (which refers to the global javascript environment for the current window), and tell processing - "this thing conforms to your JavaScript interface, so it has loads of things but the only - thing you need to be concerned about is whether or not it has a showXYCoordinates(int, int) - function, which it does."

                            - -

                            So, our final sketch behaves like the sketch below, and our final page source looks like the following:

                            - - {% highlight html linenos %} - - - - - My Processing Page - - - - - -
                            - x/y: / -
                            - - {% endhighlight %} - - - -
                            - x/y coordinates: / -
                            - -

                            Passing complex objects from javascript to your sketch

                            - -

                            This leaves us with one last topic that we need to cover, simply because it's so common: - using an AJAX approach to get some data, and then passing that data, properly formatted, to your sketch.

                            - -

                            Actually using Processing objects

                            - -

                            One interesting thing that processing.js allows us to do is to create objects as we defined them in - our sketch, in javascript, and then hand them over to the sketch to deal with. To give an example, let's - use the following sketch, which lets you draw points by clicking with the mouse, and links up all the - points with lines:

                            - - {% highlight java linenos %} - ArrayList points; - - ArrayList getPoints() { return points; } - - void setup() { - size(200,200); - points = new ArrayList(); - noLoop(); - stroke(255,0,0); - fill(255); - } - - void draw() { - background(200,200,255); - for(int p=0, end=points.size(); p < end; p++) { - Point pt = (Point) points.get(p); - if(p < end-1) { - Point next = (Point) points.get(p+1); - line(pt.x,pt.y,next.x,next.y); } - pt.draw(); } - } - - void mouseClicked() { - points.add(new Point(mouseX,mouseY)); - redraw(); - } - - class Point { - int x,y; - Point(int x, int y) { this.x=x; this.y=y; } - void draw() { ellipse(x,y,10,10); } - }{% endhighlight %} - - - -
                            click to place points
                            - -

                            We can also make javascript place some points for us, automatically, by using the following javascript:

                            - - {% highlight javascript linenos %} - function loadPoints(id, button) { - var pjs = Processing.getInstanceById(id); - var points = pjs.getPoints(); - points.add(new pjs.Point(10,10)); - points.add(new pjs.Point(10,190)); - points.add(new pjs.Point(190,190)); - points.add(new pjs.Point(190,10)); - pjs.draw(); - }{% endhighlight %} - - - -
                            load points:
                            - -

                            Because processing.js turns the sketch into actual javascript, every class we defined in it - can be created using new pjs.ClassName(arguments,...).

                            - -

                            JSON

                            - -

                            Another way to get data from javascript into a sketch is by way of a JSON description. JSON - is particulary interesting because javascript can read a JSON text string and immediately turn - it into a full-fledged javascript object. Let's look at our point-drawing sketch again, this - time with a dedicated "addPoint" method:

                            - - {% highlight java linenos %} - ArrayList points; - - void setup() { - size(200,200); - points = new ArrayList(); - } - - void draw() { - background(200,200,255); - for(int p=0, end=points.size(); pNow what if -- instead of using mouse clicks, or predetermined javascript -- we want to - load points based on some data on a remote server? We change our web page so that it can deal - with JSON data from a remote server, and then make our javascript tell the sketch what to do:

                            - - {% highlight html linenos %} - - - - - My Processing Page - - - - - - -
                            - - {% endhighlight %} - - - -
                            load points:
                            - -

                            The JSON that gets loaded in the example sketch in this section is the following:

                            - -
                            { 'points' : [ {'x': 10 , 'y': 10},
                            -               {'x': 190 , 'y': 10},
                            -               {'x': 190 , 'y': 190},
                            -               {'x': 10, 'y': 190} ] }
                            - -

                            XML

                            - -

                            Another favourite is the XML document. This is where the Processing data type "XMLElement" - comes into play. Rather than trying to use javascript to parse the XML, we pass the xml data - straight on to our sketch, which will know exactly what to do with it:

                            - - - -
                            load points:
                            - - {% highlight javascript linenos %} - function loadPoints(id, button) { - button.disabled = "disabled"; - var pjs = Processing.getInstanceById(id); - var xml = $.get("http://thatfunkysite.com/serving/getxml.php"); - pjs.buildFromXML(xml); - }{% endhighlight %} - -

                            And the handling in our sketch will look like this:

                            - - {% highlight java linenos %} - void buildFromXML(String xml) { - XMLElement data = new XMLElement(xml); - XMLElement[] xmlpoints = data.getChildren(); - for(int p=0, end=xmlpoints.length; pIf the xml thus loaded looks like the following snippet, the sketch will behave in - the way the sketch below does:

                            - - {% highlight xml linenos %} - - - - - - - {% endhighlight %} - -

                            SVG

                            - -

                            A special kind of XML document is the SVG Scalable Vector Graphics document. What's - special about it is that it already represents visual data, and Processing can load SVG - XML natively.

                            - - - -
                            drawing with SVG
                            - - {% highlight java linenos %} - XMLElement svgxml; - PShape ps; - int x=0; - int y=0; - int xoffset=0; - int yoffset=0; - int xmark=0; - int ymark=0; - - void setup() { - size(200,200); - noLoop(); - } - - void draw() { - background(255); - stroke(0); - for(int px=0; pxThis sketch will load the following SVG code, and allows you to click on the shape to - change its color, or click-drag it to move it around:

                            - - {% highlight xml linenos %} - - - {% endhighlight %} - -

                            Javascript Objects

                            - -

                            One last thing you may want to pass to a sketch is a real javascript object. Say we have - a physics library that we want to take advantage of in our sketch, and for Processing it's a - .jar file, but there's a javascript version too. This thing lets us create a javascript "Physics" - object that we can call functions on for computing momentum and force transfer when we make - two things hit each other. Since processing.js does not support .jar libraries (because it's - precompiled binary java class code, and pjs cannot unpack a jar file, reverse engineer the - .java source, transform it to Processing API calls, then confirm all calls are supported) we'll - use this convenient javascript library. But how to do this cleanly?

                            - -

                            We have to do three things:

                            - -
                              -
                            1. Write an interface for the object we're using, so our sketch will know what it even is,
                            2. -
                            3. use a javascript binding so that we can ask javascript to make these objects for us, and
                            4. -
                            5. write a javascript function to make these objects for us.
                            6. -
                            - -

                            So let's get cracking! First we determine which functions in the javascript Physics object - we actually make use of. We could write an interface that has correct method signatures for - every function in the library, but this would be overkill. After reviewing our code we see - that we actually only make use of three of the objects functions: collide_objects(forcevector1, - forcevector2, collisionangle), get_force_vector(startpoint, distancevector, accelleration) and - get_trajectory(startpoint, objectmass, initialvector, gravityvector, gravitystrength). - Let's build our interface:

                            - - {% highlight java linenos %} - interface Physics - { - // collision modifies the two force vectors in place. Nothing is returned. - void collide_objects(float[] forcevector1, float[] forcevector2, float collisionangle); - - // get force vector returns a force vector - float[] get_force_vector(float[] startpoint, float[] distancevector, float accelleration); - - // trajectory calculation returns a curve, represented as a lest of 2D coordinates - float[][] get_trajectory(float[] startpoint, float objectmass, float[] initialvector, float[] gravityvector, float gravitystrength); - }{% endhighlight %} - -

                            First job done. Now to bind javascript. We've already looked at how to do this, so just follow - the standard procedure and job's a good'n. In addition to whatever javascript functions you want - to expose, however, we must add one more:

                            - - {% highlight java linenos %} - interface JavaScript { - ... - Physics buildPhysicsObject([properly typed variables to match the javascript constructor]); - ... - }{% endhighlight %} - -

                            Finally, we now make use of our purely javascript library in our js file(s):

                            - - {% highlight java linenos %} - function buildPhysicsObject(x, y, someothervar) - { - return new Physics(x,y,someothervar); - }{% endhighlight %} - -

                            This last step seems silly, but we have to delegate the task of building a javascript object - to javascript. If we tried to do this inside our sketch, processing.js will not complain, but - Processing will. To make matters worse, it also obscures the point of failure: if something - goes wrong in the sketch, did it go wrong because processing.js has a bug, or because you were - sloppy with javascript inside a Processing sketch? Golden rule: keep the different languages - separated as much as possible.

                            - -

                            We're almost set to use our javascript library for Processing purposes now. The only thing - left is to create these objects and then use them in our sketch:

                            - - {% highlight java linenos %} - class MassBody - { - // a class for bodies with mass that travel with some speed and are located at some x/y position - float[] forceVector = new float[2]; // 2 dimensional vector; - int XDIM = 0; // index constant - int YDIM = 1; // index constant - float x = 0; // position - float y = 0; // position - MassBody(float x, float y) { forceVector[XDIM] = 0; forceVector[YDIM] = 0; this.x=x; this.y=y; } - void draw() { /* draws the body */ } - float[] getForce() { return forceVector; } - void impartForce(float[] stimulus) { forceVector[XDIM] += stimulus[XDIM]; forceVector[YDIM] += stimulus[YDIM]; } - void updatePosition() { x+=...; y+=...; } - } - - MassBody body1 = new MassBody(...); - MassBody body2 = new MassBody(...); - - Phsyics physicsObject - - void bindJavascript(JavaScript js) { - javascript = js; - int x = 0; - float y = 9; - String[] somevalues = {"scalar", "vector", "tensor"}; - physicsObject = javascript.buildPhysicsObject(x,y,somevalues); - } - - void setup() - { - ... - } - - void draw() - { - // if the two bodies collide, compute the resultant forces - if(body1.collides(body2)) - { - // forces are recomputed in place - float angle_12 = body1.getAngleTo(body2); - physicsObject.collide_objects(body1.getForce(), body2.getForce(), angle_12); - body1.updatePosition(); - body2.updatePosition(); - } - body1.draw(); - body2.draw(); - }{% endhighlight %} - -

                            And we're done!

                            - -

                            Processing.js as javascript graphics library

                            - -

                            As last point of business, you can of course also use Processing.js as a pure graphics - library, by invoking it for some canvas and then calling Processing API calls directly. Let's - jump right in! The following code is what you would write on-page, although of course as ever - it's far better practice to link to your source files, so you should really place what's in - the script tags in a file myPjsSketch.js and link to it using src="..." instead.

                            - -

                            The following code is split up into multiple (numbered) sections.

                            - -
                              -
                            1. -

                              First, bind a new Processing instance to the indicated canvas.

                              - - {% highlight html linenos %} - - {% endhighlight %} -
                            2. -
                            - -

                            So let's see that in action - the code that we just ran through is supposed to draw - a sinewave, with an amplitude that depends on where the mouse is on the canvas. If all - went well, it will look like this:

                            - - - - - -

                            More information

                            - -

                            This guide was brought to you by Mike "Pomax" Kamermans. - -

                            For more information, you can visit the following websites, or visit us in the - #processing.js IRC channel on irc.mozilla.org.

                            - - - -
                            diff --git a/articles/_posts/2011-12-02-RenderingModes.html b/articles/_posts/2011-12-02-RenderingModes.html deleted file mode 100644 index 30fa0c9..0000000 --- a/articles/_posts/2011-12-02-RenderingModes.html +++ /dev/null @@ -1,278 +0,0 @@ ---- -layout: default -desc: The different rendering modes available in Processing.js -title: Rendering Modes -permalink: /articles/RenderingModes.html ---- -

                            - Understanding Rendering Modes in Processing.js

                            -

                            - Introduction

                            -

                            - The Processing language enables complex 2D and 3D graphics programming without having - to understand the details of the underlying graphics system. It is designed to be - easily learned, yet allows one's skills to grow and evolve without ever feeling - limited.

                            -

                            - Processing can be used to work with both 2D and 3D graphics. It achieves this through - a number of different rendering engines, which affect how it works. For example, - one might choose to render a 2D sketch using the JAVA2D and P2D renderers or create - 3D sketches with the P3D and OPENGL renderers. There are also renderers for creating - PDFs. Processing allows developers to choose renderers based on tradeoffs of speed - and quality.

                            -

                            - A renderer is chosen through the use of Processing's - size() function. For example, to create a 2D sketch that is 200 by 200 pixels - in size: -{% highlight java linenos %} -size(200, 200, P2D); -{% endhighlight %} -

                            -

                            - The 2D Rendering Context

                            -

                            - Processing.js uses the HTML canvas element to provide 2D and WebGL rendering contexts. - The canvas 2D API is used to implement Processing's JAVA2D and P2D renderers (see - the canvas API for - details on canvas). You can create a 2D Processing.js sketch using any of the following: -

                              -
                            1. -{% highlight java linenos %} -size(200, 200, P2D); -{% endhighlight %} -
                            2. -
                            3. -{% highlight java linenos %} -size(200, 200, JAVA2D); -{% endhighlight %} -
                            4. -
                            5. -{% highlight java linenos %} -size(200, 200); // default is 2D -{% endhighlight %} - -
                            6. -
                            -

                            -

                            - Here is a simple 2D Processing.js sketch: -
                            -
                            - - -{% highlight java linenos %} -int i = 0; -void setup() { - size(200, 200); - background(255); - smooth(); - strokeWeight(15); - frameRate(24); -} -void draw() { - stroke(random(50), random(255), random(255), 100); - line(i, 0, random(0, width), height); - if (i < width) { - i++; - } else { - i = 0; - } -} -{% endhighlight %} - -

                            -

                            - The WebGL (3D) Rendering Context

                            -

                            - Processing.js 3D renderers (P3D and OPENGL) are implemented using WebGL. The Web-based - Graphics Library (WebGL) is a canvas rendering context that provides a JavaScript - based 3D drawing API for the web (see - https://developer.mozilla.org/en/WebGL). WebGL is based on OpenGL ES 2.0, - a subset of OpenGL designed to be used in embedded devices. Many modern browsers - support WebGL, but not all. You can confirm that your browser and computer/operating - system support WebGL here. - You can download a WebGL enabled browser - here.

                            -

                            - Just as Processing relies on OpenGL for its 3D graphics (OPENGL renderer), Processing.js - uses OpenGL via WebGL, allowing Processing.js sketches to work just like their Processing - equivalent.

                            -

                            - In order to create a 3D OpenGL sketch in Processing, two things are necessary. First, - the OpenGL library must be imported. Second, the OpenGL rendered must be specified: - -{% highlight java linenos %} -import processing.opengl.* -... -size(200, 200, OPENGL); -{% endhighlight %} - -

                            -

                            - Since Processing.js is actually JavaScript, it does not support importing Java-based - libraries. However, in order to enable sketches written in Processing to work in - Processing.js, the import line can be safely included—Processing.js will simply - ignore it. The following methods of creating a 3D Processing.js sketch are equivalent: -

                              -
                            1. -
                              import processing.opengl.* ... size(200, 200, OPENGL);
                              -
                            2. -
                            3. -
                              size(200, 200, P3D);
                              -
                            4. -
                            -

                            -

                            - Here is a simple Processing.js 3D sketch:
                            -
                            - - -{% highlight java linenos %} -size(200, 200, OPENGL); -noStroke(); -background(50); -lights(); -translate(width/2+30, height/2, 0); -rotateX(-PI/6); -rotateY(PI/3 + 210/float(height) * PI); -box(45); -translate(0, 0, -50); -box(30); -{% endhighlight %} - -

                            -

                            -
                            - Here's another more complex one:
                            -
                            - - -{% highlight java linenos %} -float ang = 0, ang2 = 0, ang3 = 0, ang4 = 0; -float px = 0, py = 0, pz = 0; -float flapSpeed = 0.2; - -void setup() { - size(200, 200, OPENGL); - frameRate(50); - noStroke(); -} - -void draw() { - background(0); - camera(); - // Flight - px = sin(radians(ang3)) * 170; - py = cos(radians(ang3)) * 300; - pz = sin(radians(ang4)) * 500; - translate(width/2 + px, height/2 + py, -700+pz); - rotateX(sin(radians(ang2)) * 120); - rotateY(sin(radians(ang2)) * 50); - rotateZ(sin(radians(ang2)) * 65); - - // Body - fill(153); - box(20, 100, 20); - // Left wing - fill(204); - pushMatrix(); - rotateY(sin(radians(ang)) * -20); - rect(-75, -50, 75, 100); - popMatrix(); - // Right wing - pushMatrix(); - rotateY(sin(radians(ang)) * 20); - rect(0, -50, 75, 100); - popMatrix(); - // Wing flap - ang += flapSpeed; - if (ang > 3) { - flapSpeed *= -1; - } - if (ang < -3) { - flapSpeed *= -1; - } - // Increment angles - ang2 += 0.01; - ang3 += 2.0; - ang4 += 0.75; -} -{% endhighlight %} - -

                            -


                            - Once you have a 3D enabled browser installed you can try out some example 2D and - 3D sketches here. -

                            -

                            - Processing.js as a Simplified Web Drawing API

                            -

                            - Once a 3D sketch has been created, all of the normal Processing drawing operations - can be done. Most Processing functions have 2D and 3D versions (e.g., you provide - different arguments for points in 2D or 3D space). By learning the Processing syntax, - it's easy to create complex 2D and WebGL graphics without ever touching the underlying - graphics APIs. This is true of Processing and Java, and also of Processing.js and - canvas/WebGL. The Processing langauge provides a powerful and beginner friendly - on-ramp to canvas 2D and WebGL. Consult the - Processing.js Langauge Reference for specific details on how to use each - function.

                            -

                            - Using the Processing.js API in JavaScript

                            -

                            - In addition to running standard Processing sketches, Processing.js can also be used - in so-called API mode. This is the Processing language API which is accessbile to - JavaScript without any Processing code. The Processing.js API is available if you - download the complete Processing.js zip file instead of just the .js file from the - Downloads page (for example: processing.js-version.zip vs processing.min.js) (http://processingjs.org/download). - It is essentially the same as Processing.js, but without the code parser (i.e., - you can use the API either way, but the Processing.js API is a somewhat smaller - file). See - Writing JavaScript-only Processing.js Code for more details.

                            -

                            - Accessing the Raw Canvas Context - Advanced:

                            -

                            - It's also possible to work with the raw canvas context, both 2D and WebGL, from - Processing.js, JavaScript, or both. This is not a recommended method, since it will - make your Processing.js sketch harder to use in Processing; however, sometimes it's - useful to know how to control the canvas context from outside the sketch in JavaScript, - or to do something that Processing doesn't allow, which the canvas or WebGL APIs - do.

                            -

                            - All Processing.js sketches have an externals property, accessible from within the - Processing code as a global variable. This object is meant to allow for accessing - and sharing external but related data between the sketch code and the web page. - The externals object has a number of useful properties, including: -

                              -
                            • sketch: the current sketch object
                            • -
                            • canvas: the canvas element associated with a sketch
                            • -
                            • - context: the canvas rendering context being used by the sketch
                            • -
                            -

                            -

                            - From JavaScript, these can be accessed via a Processing.js sketch's instance: - -{% highlight javascript linenos %} -var p = Processing.instances[0]; -var context = p.externals.context; -var p2 = Processing.getInstanceById('canvas-id'); -var p2Canvas = p2.externals.canvas; -{% endhighlight %} - -

                            -

                            - The same thing can be done from within Processing code, where the externals object - is available as a global variable: - -{% highlight javascript linenos %} -// Processing.js allows you to mix JavaScript, so using var is fine here: -var currentContext = externals.context; -{% endhighlight %} - -

                            -Once you have a reference to the context, you can use any valid canvas API call, -including raw WebGL functions if using a 3D sketch. diff --git a/articles/_posts/2011-12-03-p5QuickStart.html b/articles/_posts/2011-12-03-p5QuickStart.html deleted file mode 100644 index 0ad2abf..0000000 --- a/articles/_posts/2011-12-03-p5QuickStart.html +++ /dev/null @@ -1,471 +0,0 @@ ---- -layout: default -desc: A guide to Processing.js for Processing developers -title: Processing Quick Start -permalink: /articles/p5QuickStart.html ---- -
                            -

                            - Processing.js Quick Start - Processing Developer Edition

                            -

                            - Introduction

                            -

                            - This quick start guide is written from the standpoint of a Processing developer. - No HTML or JavaScript knowledge is assumed, and only basic Processing knowledge - is necessary.

                            -

                            - Index

                            -
                              -
                            1. For the Impatient
                            2. -
                            3. Why Processing.js? -
                                -
                              1. The Web: from Java to JavaScript
                              2. -
                              3. Processing.js uses Modern Web Standards
                              4. -
                              -
                            4. -
                            5. Writing a Processing.js Sketch
                            6. -
                            7. Obtaining Processing.js
                            8. -
                            9. Creating a Processing.js Web Page
                            10. -
                            11. Running your Processing.js Web Page
                            12. -
                            13. Things to Know as a Processing Developer using Processing.js -
                                -
                              1. Processing.js has no data directory
                              2. -
                              3. Processing.js implements Processing, but not all of Java
                              4. -
                              5. Processing.js only has two rendering modes
                              6. -
                              7. Division which is expected to produce an integer might need explicit casting
                              8. -
                              9. JavaScript, and as such Processing.js, has no "char" datatype
                              10. -
                              11. Processing.js has to cheat to simulate Processing's synchronous I/O
                              12. -
                              13. Processing.js requires more care with variable naming than Processing
                              14. -
                              15. Processing.js needs your help when overriding overloaded superclass methods
                              16. -
                              17. Calling color() with out-of-range values produces unpredictable colors
                              18. -
                              -
                            14. -
                            15. It is possible to put Processing code directly in your web page
                            16. -
                            17. Whatever you can do with the web, you can do with Processing.js
                            18. -
                            -

                            For the Impatient

                            -

                            If you're in a rush, here's what you need to know:

                            -
                              -
                            1. Processing.js is written in JavaScript, and uses HTML5's <canvas> element. - It converts your Processing code to JavaScript and runs it.
                            2. -
                            3. To use it, download Processing.js here: - downloads
                            4. -
                            5. Make your Processing *.pde files as you normally would, for example hello-web.pde
                            6. -
                            7. Create a web page that includes Processing.js as well as a <canvas> with info - about where to get your sketch file (you can specify multiple *.pde files, separating - them with spaces):
                            8. -
                            - -{% highlight html linenos %} - - -{% endhighlight %} - -

                            - Load your web page, and it will parse, translate, and run your sketch in the browser.

                            -

                            Why Processing.js?

                            -

                            The Web: from Java to JavaScript

                            -

                            - Processing is built using Java. It was created at much the same time that the web - was starting. At this time the choice of the Java language, and Java Runtime, as - implementation targets for Processing made a lot of sense. In the mid-1990s, Java - was poised to become the language of the web, with Applets and other Java technologies - being used broadly on the client-side. Even Netscape, who created the language which - would eventually become the lingua franca of the web with JavaScript, named their - language so as to align themselves with the growing hype around Java.

                            -

                            - In the end, Java became an important server side technology, receding from the client-side - and browser. Today, most web browsers still support Java Applets, by means of a - binary plugin. However, few web developers deploy Java-based web applications now, - due to long load and startup times and difficulties relying on Java (or compatible - Java versions) being installed. This trend is not isolated to Java, but is happening - to all browser plugins (e.g., Flash), which are becoming less popular as issues - of security, installation, deployment, etc. make them inconvenient or risky.

                            -

                            - Another reason that plugins like Java and Flash have fallen out of favour is that - recent advances in standard web technologies, specifically HTML5 and JavaScript, - have made it possible to do things that previously depended on native (i.e., faster, - compiled) code. Companies like Google, with GMail and Google Docs, or Scribd (see - Scribd-in-HTML5) - have shown that HTML, CSS, and JavaScript alone are enough to build fast, full featured - web applications.

                            -

                            Processing.js uses Modern Web Standards

                            -

                            - Processing.js is built using JavaScript and HTML5. Processing.js is really two things: - a Processing-to-JavaScript translator; and an implementation of the Processing API - (e.g., functions like line(), stroke(), etc.) written in JavaScript instead of Java. - It might seem odd at first to imagine your Processing sketches running in a browser, - usually without modification. But this is exactly what Processing.js enables.

                            -

                            - Processing.js automatically converts your Processing code to JavaScript. This means - that you don't have to learn JavaScript in order to run your code in a browser. - You can, quite literally, write your code using the Processing IDE like you always - have, and follow the steps below to get it running on the web. There's nothing new - to learn, beyond getting a simple web page created.

                            -

                            - Under the hood, Processing.js uses the new HTML5 canvas element to create your sketch's - graphics. The canvas element is a new feature of the web, and is either implemented - or will be implemented by all major web browsers. All Processing drawing features - have been reimplemented in Processing.js to use canvas, so any browser that supports - canvas will also support Processing.js.

                            -

                            - Here's a sample of a Processing.js sketch running in the browser. If you can see - it working, your browser supports everything you need already, and you can move - on to instructions below.

                            - -

                            Writing a Processing.js Sketch

                            -

                            - There's nothing you should do differently to write sketches for Processing.js: you - write your Processing.js code exactly like Processing. For most people, this will - mean using the Processing IDE, which has the nice benefit of letting you write, - run, and test your code all in once place. Remember, any valid Processing sketch - should also be a valid Processing.js sketch.

                            -

                            - If you want to experiment with web-based Processing.js code editors, you can also - try these:

                            - -

                            - Let's make a simple sketch that is 200 by 200 in size, sets the background to gray, - draws a small white circle, and prints a message to the debug console:

                            - -{% highlight java linenos %} -void setup() { - size(200, 200); - background(100); - stroke(255); - ellipse(50, 50, 25, 25); - println("hello web!"); -} -{% endhighlight %} - -

                            - I'll assume below that you saved this to a file called hello-web.pde -

                            -

                            Obtaining Processing.js

                            -

                            - Processing.js is a JavaScript library that is meant to be included in a web page. - You don't have to compile it, tell your web server about it, etc. It simply has - to be included in a web page, and the browser will do the rest.

                            -

                            - You can download Processing.js at the download - page. The library comes in a number of forms, for example:

                            -
                              -
                            • processing-1.0.0.js (note that 1.0.0 is just the version, the number might be higher - when you look at this)
                            • -
                            • processing-1.0.0.min.js
                            • -
                            -

                            - The version numbers may be different as you read this, but note the file extensions. - Both end in .js, but one also has .min. The .min version is Processing.js in a minified - form, which means it will be smaller to download (minified JavaScript uses tricks - like removing whitespace and renaming long variable names to single letters). File - sizes, and download times, matter on the web in a way they don't with normal Processing - sketches.

                            -

                            Creating a Processing.js Web Page

                            -

                            - It's easy to get overwhelmed with the amount there is to learn about modern web - technologies. But there's a secret: you can ignore 95% of it as you start, and add - more later as you have time and interest. Unlike compilers or programming languages, - web browsers are designed to accept almost any input you throw at them, whether - valid or not, whether complete or not. Here's your first Processing.js web page:

                            - -{% highlight html linenos %} - - -{% endhighlight %} - -

                            - That's it! No <html> or <body> tags, no title, no CSS, just the processing.js - script, and a canvas. While there isn't much here, it's important to understand - what is. First, the script tag has a src attribute, which is the file to - load. This could be a full url or a relative path. In this case the browser is going - to look for a file named processing-1.0.0.min.js in the same directory as - your web page.

                            -

                            - The second thing in this web page is a <canvas> tag. Notice that it too has - an attribute, data-processing-sources. This is a list of filenames (or just - one filename if you only have 1 file) separated by spaces (filenames and URLs on - the web can't include spaces, so space is a safe choice for separating lists). In - this case, the browser is going to look for a file named hello-web.pde located - in the same directory as your page page.

                            -

                            - How does the browser know how to load a Processing *.pde file? Processing.js takes - care of this, and will download, parse (i.e., translate to JavaScript), then run - it automatically when the page is loaded.

                            -

                            - And that's it! Save this file to the same directory as hello-web.pde and - processing-1.0.0.min.js and call it hello-web.html.

                            -

                            - If you're the kind of person who doesn't like taking shortcuts, here's what a more - complete web page might look like:

                            - -{% highlight html linenos %} - - - - Hello Web - Processing.js Test - - - -

                            Processing.js Test

                            -

                            This is my first Processing.js web-based sketch:

                            - - - -{% endhighlight %} - -

                            - Both ways work, and you shouldn't let yourself get burdened by HTML and other web - syntax until you feel you want to do other things with your web pages.

                            -

                            Running your Processing.js Web Page

                            -

                            - In case it isn't obvious, you run your hello-web.pde sketch by loading your - hello-web.html web page in a compatible browser. Web browsers will provide - you a way to load a local file, usually using the File menu and then Open File.... - If you've saved the files above on a web server, you can use the remote URL instead.

                            -

                            Things to Know as a Processing Developer using Processing.js

                            -

                            - While Processing.js is compatible with Processing, Java is not JavaScript, and canvas - has some differences from Java's graphics classes. Here are some tricks and tips - as you start working on more complex sketches in Processing.js.

                            -

                            Processing.js has no data directory

                            -

                            - Processing uses the concept of a data directory, where images and other resources - are located. Processing.js does not include this. As a result, you should always - provide file pages (e.g., images) that are relative to your web page, which is the - norm on the web.

                            -

                            Processing.js implements Processing, but not all of Java

                            -

                            - Processing.js is compatible with Processing, but is not, and will never be, fully - compatible with Java. If your sketch uses functions or classes not defined as part - of Processing, they are unlikely to work with Processing.js. Similarly, libraries - that are written for Processing, which are written in Java instead of Processing, - will most likely not work.

                            -

                            Processing.js only has two rendering modes

                            -

                            - Processing has many rendering modes to choose from, depending on the desired quality - and speed for graphics (e.g., OPENGL, P3D, JAVA2D, etc.). Processing.js uses <canvas> - which provides either a 2D drawing context or a 3D context based on WebGL (a version - of OpenGL for the web). Therefore, whatever you choose, you will end-up with either - the 2D or 3D context.

                            -

                            Division which is expected to produce an integer might need explicit casting

                            -

                            - There are a class of bugs that arise when converting Processing code to Processing.js - that involve integer vs. floating point division. What was straight-up integer division - in Processing code, when converted to Processing.js, can sometimes become problematic, - as numbers become doubles, and introduce a fractional part. The fix is to explicitly - cast any division to an integer that exhibits this behaviour:

                            - -{% highlight java linenos %} -// before -int g = mouseX / i; - -// after -int g = (int)(mouseX / i); -{% endhighlight %} - -

                            - See - lighthouse bug

                            - -

                            JavaScript, and as such Processing.js, has no "char" datatype

                            -

                            JavaScript only knows about numbers, and strings, unlike Java, which also knows about "char" - data types. The char is a 16 bit unsigned integer value, that can also pretend to be a letter - (from the ISO8859-1 codepage for the first 256 numbers, and basically magic after that). - Unfortunately, as JavaScript has no equivalent, relying on char comparisons to be either numbers - or letters is quite likely to cause problems. If you have Processing code where you're comparing - chars, you will either have to perform int casting, or string casting, using the int() - and str() functions, so that you know you're explicitly comparing datatypes that - JavaScript can deal with.

                            - -

                            Processing.js has to cheat to simulate Processing's synchronous I/O

                            -

                            - Processing uses a synchronous I/O model, which means that functions like loadImage() - take time to execute, and while they are running, nothing else happens: the program - waits until loadImage() is done before moving on to the next statement. This - means that you can count on the value returned by a function like loadImage() - being usable in the next line of code.

                            -

                            - Web browsers don't work like this. The web uses an asynchronous I/O model, which - means that functions which load external resources can't make the program wait until - they finish. In order to replicate Processing's load* functions, you have to use - a special Processing.js Directive.

                            -

                            - The Processing.js Directives are hints to the browser that are written in comments - rather than in the Processing code itself. Here's a typical Processing sketch that - loads an image synchronously and then draws it:

                            - -{% highlight java linenos %} -PImage img; - -void setup() { - img = loadImage("picture.jpg"); - image(img, 0, 0); -} -{% endhighlight %} - -

                            - This code will not work in the browser with Processing.js, because the call to image() - will happen before the file picture.jpg has been downloaded. The fix is to - ask Processing.js to download the image before the sketch starts, and cache it--a - technique known as preloading. Here is the modified code:

                            - -{% highlight java linenos %} -/* @pjs preload="picture.jpg"; */ -PImage img; - -void setup() { - img = loadImage("picture.jpg"); - image(img, 0, 0); -} -{% endhighlight %} - -

                            - Notice the extra comment line at the top of the code. The @pjs directive - is for Processing.js, and not the developer. Think of it as an extra line of code - that will be executed before the program begins.

                            -

                            - If you have multiple images to load, use a list like so:

                            - -{% highlight java linenos%} -/* @pjs preload="picture.jpg,picture2.jpg,picture3.png"; */ -{% endhighlight %} - -

                            Processing.js requires more care with variable naming than Processing

                            -

                            - One of the powerful features of JavaScript is its dynamic, typeless nature. Where - typed languages like Java, and therefore Processing, can reuse names without fear - of ambiguity (e.g., method overloading), Processing.js cannot. Without getting into - the inner-workings of JavaScript, the best advice for Processing developers is to - not use function/class/etc. names from Processing as variable names. For example, - a variable named line might seem reasonable, but it will cause issues with - the similarly named line() function built-into Processing and Processing.js. - This is equally true for built-in functions and functions you create. A good rule- - of-thumb is: avoid having a variable foo in the same sketch as a function - foo();.

                            - -

                            Processing.js needs your help when overriding overloaded superclass methods

                            -

                            - If your code uses subclasses that override one or more overloaded methods in the superclass, you - will need "dummy" overrides for every method signature that you'd normally leave untouched:

                            - -{% highlight java linenos %} -class X -{ - void doSomething() - { - ... - } - - void doSomething(float x, float y) - { - ... - } -} - -class Y extends X -{ - void doSomething() - { - // different code from compared to the super class - } - - // even though we don't override this method, - // its signature must be added to prevent Pjs - // from getting the method chain wrong: - void doSomething(float x, float y) - { - super.doSomething(x,y); - } -} -{% endhighlight %} - -

                            - Even though in Processing you will not need to implement the fallthrough method for doSomethign with a - (float,float) signature, doing so is almost always necessary to make sure Processing.js doesn't get - confused about which class's method to call.

                            - -

                            Calling color() with out-of-range values produces unpredictable colors

                            -

                            - Also in the class of integer vs. floating point issues, color(number) and color(number, number) - may not behave quite as expected. In native Processing, color(int) and color(float) behave - differently in that the first is used for full color integers. Calling color(#FF0000) and - color(16711680) are the same call, so they produce a red color. However, when using float - values the color()/1 function treats the input as gray values, between 0 and the max indicated - value (255, by default). Any value lower than 0 or higher than max is simply capped. Because of - the integer vs. floating point issues with JavaScript, Processing.js does not perform any capping, - and so even though the following code will show a black and a white line in Processing, it will - show a yellow line, and an "invisible" line in Processing.js instead.

                            - -{% highlight java linenos %} -void setup() -{ - size(100,100); - noLoop(); -} - -void draw() -{ - background(127); - stroke(-200.0); - line(0,25,width,25); - stroke(600.0); - line(0,75,width,75); -} -{% endhighlight %} - -

                            We recommend you always sanitize your inputs for color if you need colors to be "in range", and only use hex colors, using color(#RRGGBB), or rgb/rgba colors, using color(r,g,b) and color(r,g,b,a)

                            -

                            It is possible to put Processing code directly in your web page

                            -

                            - Using the data-processing-sources attribute on the canvas, and having Processing.js - load an external file is the preferred and recommended way to include scripts in - a web page. However, it is also possible to write in-line Processing code.

                            -

                            - A few changes are necessary to make the example above work with inline Processing - code:

                            - -{% highlight html linenos %} - - - -{% endhighlight %} - -

                            - This code is more complex because it has to figure out which canvas goes with which - script (i.e., you can have multiple Processing sketches living in the same page, - and therefore, multiple canvases). Also note that the scripts include a type - attribute, which distinguishes between JavaScript and Processing code (the browser - will ignore Processing scripts). Finally, note the use of the id and target - attributes to connect the Processing script with the associated canvas.

                            -

                            Whatever you can do with the web, you can do with Processing.js

                            -

                            - Now that your sketch is working, and you have a basic web page, you'll probably - start getting ideas about how to make this look more beautiful, how to better integrate - your sketch with the surrounding web page or site, and how to mix data from various - web services and APIs. Is it possible to mix images on Flickr and a Processing.js - sketch? Yes. Is it possible to link Twitter to Processing.js? Yes. Anything the - web can do, your Processing.js sketch can do.

                            -

                            - This is an important idea, and is worth restating: Processing.js turned your once - Java-based code into JavaScript, and your graphics into <canvas>. As a result, - anything you read on the web about dynamic web programming, AJAX, other JavaScript - libraries or APIs, all of it applies to your sketch now. You aren't running code - in a box, cut-off from the rest of the web. Your code is a first-class member of - the web, even though you didn't write it that way.

                            -

                            - If you're feeling adventurous and want to go learn more about how to do other thing - with HTML, JavaScript, CSS, etc. remember that everything they say applies to you - and your sketches.

                            -
                            diff --git a/articles/_posts/2011-12-04-jsQuickStart.html b/articles/_posts/2011-12-04-jsQuickStart.html deleted file mode 100644 index 58a5704..0000000 --- a/articles/_posts/2011-12-04-jsQuickStart.html +++ /dev/null @@ -1,595 +0,0 @@ ---- -layout: default -desc: A guide to Processing.js for JavaScript developers -title: JavaScript Quick Start -permalink: /articles/jsQuickStart.html ---- -
                            -

                            - Processing.js Quick Start - JavaScript Developer Edition

                            -

                            - Introduction

                            -

                            - This quick start guide is written from the standpoint of a JavaScript developer. - The document assumes you know JavaScript and web programming, but only very basic - Processing knowledge is assumed.

                            -

                            - Index

                            -
                              -
                            1. For the Impatient
                            2. -
                            3. Why Processing.js? -
                                -
                              1. What is Processing?
                              2. -
                              3. What does Processing bring to the web?
                              4. -
                              5. How much work is it to learn Processing?
                              6. -
                              -
                            4. -
                            5. Ways to use Processing.js -
                                -
                              1. Writing Pure Processing Code
                              2. -
                              3. Pre-compiling Processing code to JavaScript
                              4. -
                              5. Writing JavaScript-only Processing.js code
                              6. -
                              7. Writing Documents that Combine Processing and JavaScript Code -
                                  -
                                1. Accessing JavaScript Objects from Processing
                                2. -
                                3. Mixing JavaScript and Processing
                                4. -
                                5. Accessing Processing from JavaScript
                                6. -
                                -
                              8. -
                              -
                            6. -
                            7. Things to Know as a JavaScript Developer using Processing.js -
                                -
                              1. Processing.js provides access to various DOM/JavaScript objects via the externals property
                              2. -
                              3. Division which is expected to produce an integer might need explicit casting
                              4. -
                              5. JavaScript, and as such Processing.js, has no "char" datatype
                              6. -
                              7. Processing.js has to cheat to simulate Processing's synchronous I/O
                              8. -
                              9. Processing.js requires more care with variable naming than Processing
                              10. -
                              11. Processing.js needs your help when overriding overloaded superclass methods
                              12. -
                              13. It is possible to put Processing code directly in your web page
                              14. -
                              -
                            8. -
                            -

                            - For the Impatient

                            -

                            - If you're in a rush, here's what you need to know:

                            -
                              -
                            1. Processing.js converts Processing code to JavaScript and runs it in the browser, - using <canvas> for a drawing surface.
                            2. -
                            3. To use it, download Processing.js here: - downloads
                            4. -
                            5. Make your Processing *.pde files as you normally would, for example hello-web.pde
                            6. -
                            7. Create a web page that includes Processing.js as well as a <canvas> with info - about where to get your sketch file (you can specify multiple *.pde files, separating - them with spaces):
                            8. -
                            - -{% highlight html linenos %} - - -{% endhighlight %} - -

                            - Load your web page, and it will parse, translate, and run your sketch in the browser.

                            -

                            - Why Processing.js?

                            -

                            - What is Processing?

                            -

                            - The Processing language was originally created at MIT as part of the Media lab and - Aesthetics and Computation group. They needed a way to bridge the gap between software - developers, artists, data visualizers, etc., and to do so in a way that allowed - new programmers (or non-programmers) to do complex visual work easily. Processing - was built using Java, and can be thought of as a simplified Java, with a simplified - Java API for drawing and graphics.

                            -

                            - What does Processing bring to the web?

                            -

                            - Processing has a large and vibrant community, who are good at creating 2D and 3D - graphics, visualizing data sets, audio, video, etc. With HTML5 the web gained canvas, - audio, and video--things which had previously only been available via plugins like - Flash or Java. At the same time, advances in JavaScript engines have made it possible - to do things in script that were previously too slow.

                            -

                            - By porting the Processing language to the web, both the Processing and web communities - benefit. For Processing, this means that code which used to only work on the desktop - now "just works" in the browser. For the web, this means that a new but mature and - full-featured approach to graphics programming becomes available. The <canvas> - element is too low-level for most developers to use directly--JavaScript libraries - are necessary. Processing.js can be thought of as just such a library, simplifying - the use of the 2D and 3D canvas operations.

                            -

                            - How much work is it to learn Processing?

                            -

                            - The Processing language was designed to be small but complete, and easy to learn. - This document does not attempt to teach you Processing, and you are encouraged to - seek out Processing specific tutorials, books, and examples. Any Processing code - or concepts should map to Processing.js (the exceptions are listed below). You can - also use pure JavaScript to work with the Processing drawing API, skipping the Java - syntax of Processing in favour of JavaScript.

                            -

                            - Ways to Use Processing.js

                            -

                            - Processing.js was originally created in order to allow existing Processing developers - and existing Processing code (often referred to as sketches) to work unmodified - on the web. As a result, the recommend way to use Processing.js is to write Processing - code, and have Processing.js convert it to JavaScript before running it.

                            -

                            - Over time, many web developers have begun using Processing.js, and asked that we - design a way for the API to be used separate from the Processing language itself. - Therefore, we have provided a way for JavaScript developers to write pure JavaScript - code and still use the Processing.js functions and objects. NOTE: Processing.js - is first and foremost a port of Processing to the open web, with design decisions - favouring compatibility with Processing. It was not designed as a general purpose - HTML drawing library. Having said that, it can be used as a high-level drawing API - for canvas.

                            -

                            - Below we discuss the various methods for using Processing.js in your web pages.

                            -

                            - Writing Pure Processing Code

                            -

                            - This is the preferred method for using Processing.js, and has been dealt with at - length in the Processing.js - for Processing Devs quick start guide. To summarize:

                            -
                              -
                            1. Download Processing.js from here
                            2. -
                            3. Create a separate Processing file or files, naming them whatever you want, as long as they have a - *.pde extension.
                            4. -
                            5. Create a web page that includes Processing.js as well as a <canvas> with info - about where to get your sketch file(s), and include Processing filenames as a space-separated - list in a data-processing-sources attribute on the canvas:
                            6. -
                            - -{% highlight html linenos %} - - - - Hello Web - Processing.js Test - - - -

                            Processing.js Test

                            -

                            This is my first Processing.js web-based sketch:

                            - - - -{% endhighlight %} - -

                            - Processing.js will automatically scan the document on page load for <canvas> - elements with data-processing-sources attributes, download the files using - XMLHTTPRequest, and feed them to the Processing-to-JavaScript translator. The resulting - JavaScript is run using eval.

                            -

                            - Pre-compiling Processing code to JavaScript

                            -

                            - Processing.js automatically downloads and converts any Processing code to JavaScript. - It does this using the Processing.compile() method, and those interested in building - tools or utilities for Processing.js can do the same.

                            -

                            - In order to obtain "compiled" code (i.e., JavaScript suitable for use by the Processing.js - runtime) from Processing code, do the following:

                            - -{% highlight javascript linenos %} -// hard-coded Processing code, text from an HTML widget, downloaded text, etc. -var processingCode = "..."; -var jsCode = Processing.compile(processingCode).sourceCode; -{% endhighlight %} - -

                            - For example, converting the following Processing code produces the "compiled" JavaScript - underneath:

                            - -{% highlight javascript linenos %} -// Processing code -void setup() { - size(200, 200); - background(100); - stroke(255); - ellipse(50, 50, 25, 25); - println("hello web!"); -} - -// "Comiled" JavaScript code -// this code was autogenerated from PJS -(function(processing, $constants) { - function setup() { - processing.size(200, 200); - processing.background(100); - processing.stroke(255); - processing.ellipse(50, 50, 25, 25); - processing.println("hello web!"); - } - processing.setup = setup; -}) -{% endhighlight %} - -

                            - Writing JavaScript-only Processing.js code

                            -

                            - The previous method produced JavaScript code from Processing, but you can also write - JavaScript on its own. The Processing.js parser turns Processing code into a JavaScript - function, then runs it. As a result, it's possible to skip the Processing code altogether, - and simply write a JavaScript function, passing this to your Processing instance. - Here's an example:

                            - -{% highlight javascript linenos %} -function sketchProc(processing) { - // Override draw function, by default it will be called 60 times per second - processing.draw = function() { - // determine center and max clock arm length - var centerX = processing.width / 2, centerY = processing.height / 2; - var maxArmLength = Math.min(centerX, centerY); - - function drawArm(position, lengthScale, weight) { - processing.strokeWeight(weight); - processing.line(centerX, centerY, - centerX + Math.sin(position * 2 * Math.PI) * lengthScale * maxArmLength, - centerY - Math.cos(position * 2 * Math.PI) * lengthScale * maxArmLength); - } - - // erase background - processing.background(224); - - var now = new Date(); - - // Moving hours arm by small increments - var hoursPosition = (now.getHours() % 12 + now.getMinutes() / 60) / 12; - drawArm(hoursPosition, 0.5, 5); - - // Moving minutes arm by small increments - var minutesPosition = (now.getMinutes() + now.getSeconds() / 60) / 60; - drawArm(minutesPosition, 0.80, 3); - - // Moving hour arm by second increments - var secondsPosition = now.getSeconds() / 60; - drawArm(secondsPosition, 0.90, 1); - }; -} - -var canvas = document.getElementById("canvas1"); -// attaching the sketchProc function to the canvas -var processingInstance = new Processing(canvas, sketchProc); -{% endhighlight %} - -

                            - Here a sketch function is created, similar to what the parser would produce. This - function should take 1 argument, a reference to a processing object (i.e., the Processing - runtime), which will be created by the Processing constructor. Any Processing functions - or objects are accessible as properties of this object.

                            -

                            - Once that function is complete, pass it, along with a reference to a canvas, to - the Processing constructor (remember to use new).

                            -

                            - Writing Documents that Combine Processing and JavaScript Code

                            -

                            - One of the first questions people ask with Processing.js is whether they can read - values from the document in which the Processing sketch is running, or vice versa. - The answer is yes.

                            -

                            - Processing.js converts Processing code into JavaScript contained in a function closure. - The variables and functions you create are not attached to the global object (i.e., - window). However, you can still get access to them.

                            -

                            - Accessing JavaScript Objects from Processing

                            -

                            - Since Processing code gets converted to JavaScript and run like any other function, - all Processing code has access to the global object. This means that if you create - a variable or function in a global script block, they are automatically accessible - to Processing. Consider this example:

                            -

                            - First the Processing file, mixing.pde:

                            - -{% highlight java linenos %} -String processingString = "Hello from Processing!"; - -void setup() { - printMessage(jsString + " " + processingString); -} -{% endhighlight %} - -

                            - Next the web page:

                            - -{% highlight html linenos %} - - - - Hello Web - Accessing JavaScript from Processing - - - -
                            -
                            - - - - -{% endhighlight %} - -

                            - Here Processing.js allows the use of a variable and function declared outside the - Processing code.

                            -

                            - Mixing JavaScript and Processing

                            -

                            - The previous example kept a clean separation between the JavaScript and Processing - code, while loosening the boundary between the two. Because Processing.js converts - Processing code to JavaScript, it's also possible to mix them directly. The Processing.js - parser will leave JavaScript it finds within the Processing code unaltered, allowing - developers to write a hybrid of Processing and JavaScript (NOTE: this is why we - don't use a pure Processing parser approach in processing.js). Here is the previous - example rewritten using this method:

                            - -{% highlight javascript linenos %} -var jsString = "Hello from JavaScript!"; -var printMessage = function(msg) { - document.getElementById('msg').innerHTML = "Message: " + msg; -}; - -String processingString = "Hello from Processing!"; - -void setup() { - printMessage(jsString + " " + processingString); -} -{% endhighlight %} -

                            - There is some JavaScript syntax that can't be easily mixed this way (e.g., regex - literals). In those cases you can simply move your pure JavaScript to a <script> - block and access it using the method described above.

                            -

                            - Accessing Processing from JavaScript

                            -

                            - Reaching out from the Processing code to JavaScript is easier than going the other - way, since the JavaScript created by the Processing.js parser is not exposed directly - on the global object. Instead, you gain access using the Processing.instances property.

                            -

                            - The Processing constructor keeps track of instances it creates, and makes them available - using the getInstanceById() method. By default, when a <canvas> has a data-processing-sources - attribute, its id is used as a unique identifier for the Processing instance. If - no id attribute is provided, you can use Processing.instances[0].

                            -

                            - After you have a reference to the appropriate Processing instance, you can call - into it like so:

                            - -{% highlight html linenos %} - - - - Hello Web - Controlling Processing from JavaScript - - - - - - - - - -{% endhighlight %} - -

                            - Here two buttons in the DOM are used to allow the user to start or stop a running - Processing sketch. They control the Processing instance (you might have several - in a page, or hidden in divs) directly from JavaScript, calling Processing functions: - loop() and noLoop(). The Processing functions are well documented elsewhere.

                            -

                            - Things to Know as a JavaScript Developer using Processing.js

                            -

                            - While Processing.js tries to be fully compatible with Processing, there are some - things which are different or require workarounds. We have also added some web-specific - features to make Processing.js easier to use. Here are some tricks and tips as you - start working on more complex sketches in Processing.js.

                            -

                            - Processing.js provides access to various DOM/JavaScript objects via the externals - property

                            -

                            - Each Processing instance (i.e., Processing.instances) has an externals property, - which is an object containing references to various non-Processing DOM/JavaScript - objects that can be useful. For example:

                            -
                              -
                            • canvas - the canvas to which the sketch is bound
                            • -
                            • context - the canvas' context
                            • -
                            • onblur and onfocus - event handlers
                            • -
                            -

                            - Division which is expected to produce an integer might need explicit casting

                            -

                            - There are a class of bugs that arise when converting Processing code to Processing.js - that involve integer vs. floating point division. What was straight-up integer division - in Processing code, when converted to Processing.js, can sometimes become problematic, - as numbers become doubles, and introduce a fractional part. The fix is to explicitly - cast any division to an integer that exhibits this behaviour:

                            - -{% highlight java linenos %} -// before -int g = mouseX / i; - -// after -int g = (int)(mouseX / i); -{% endhighlight %} - -

                            - See - lighthouse bug

                            - - -

                            JavaScript, and as such Processing.js, has no "char" datatype

                            -

                            JavaScript only knows about numbers, and strings, unlike Java, which also knows about "char" - data types. The char is a 16 bit unsigned integer value, that can also pretend to be a letter - (from the ISO8859-1 codepage for the first 256 numbers, and basically magic after that). - Unfortunately, as JavaScript has no equivalent, relying on char comparisons to be either numbers - or letters is quite likely to cause problems. If you have Processing code where you're comparing - chars, you will either have to perform int casting, or string casting, using the int() - and str() functions, so that you know you're explicitly comparing datatypes that - JavaScript can deal with.

                            - - -

                            Processing.js has to cheat to simulate Processing's synchronous I/O

                            -

                            - Processing uses a synchronous I/O model, which means that functions like loadImage() - take time to execute, and while they are running, nothing else happens: the program - waits until loadImage() is done before moving on to the next statement. This - means that you can count on the value returned by a function like loadImage() - being usable in the next line of code.

                            -

                            - Web browsers don't work like this. The web uses an asynchronous I/O model, which - means that functions which load external resources can't make the program wait until - they finish. In order to replicate Processing's load* functions, you have to use - a special Processing.js Directive.

                            -

                            - The Processing.js Directives are hints to the browser that are written in comments - rather than in the Processing code itself. Here's a typical Processing sketch that - loads an image synchronously and then draws it:

                            - -{% highlight java linenos %} -PImage img; - -void setup() { - img = loadImage("picture.jpg"); - image(img, 0, 0); -} -{% endhighlight %} - -

                            - This code will not work in the browser with Processing.js, because the call to image() - will happen before the file picture.jpg has been downloaded. The fix is to - ask Processing.js to download the image before the sketch starts, and cache it--a - technique known as preloading. Here is the modified code:

                            - -{% highlight java linenos %} -/* @pjs preload="picture.jpg"; */ -PImage img; - -void setup() { - img = loadImage("picture.jpg"); - image(img, 0, 0); -} -{% endhighlight %} - -

                            - Notice the extra comment line at the top of the code. The @pjs directive - is for Processing.js, and not the developer. Think of it as an extra line of code - that will be executed before the program begins.

                            -

                            - If you have multiple images to load, use a list like so:

                            - -{% highlight java linenos %} -/* @pjs preload="picture.jpg,picture2.jpg,picture3.png"; */ -{% endhighlight %} - -

                            - Processing.js requires more care with variable naming than Processing

                            -

                            - One of the powerful features of JavaScript is its dynamic, typeless nature. Where - typed languages like Java, and therefore Processing, can reuse names without fear - of ambiguity (e.g., method overloading), Processing.js cannot. Without getting into - the inner-workings of JavaScript, the best advice for Processing developers is to - not use function/class/etc. names from Processing as variable names. For example, - a variable named line might seem reasonable, but it will cause issues with - the similarly named line() function built-into Processing and Processing.js.

                            - -

                            - Processing.js needs your help when overriding overloaded superclass methods

                            -

                            - If your code uses subclasses that override one or more overloaded methods in the superclass, you - will need "dummy" overrides for every method signature that you'd normally leave untouched:

                            - -{% highlight java linenos %} -class X -{ - void doSomething() - { - ... - } - - void doSomething(float x, float y) - { - ... - } -} - -class Y extends X -{ - void doSomething() - { - // different code from compared to the super class - } - - // even though we don't override this method, - // its signature must be added to prevent Pjs - // from getting the method chain wrong: - void doSomething(float x, float y) - { - super.doSomething(x,y); - } -} -{% endhighlight %} - -

                            - Even though in Processing you will not need to implement the fallthrough method for doSomethign with a - (float,float) signature, doing so is almost always necessary to make sure Processing.js doesn't get - confused about which class's method to call.

                            - -

                            - It is possible to put Processing code directly in your web page

                            -

                            - Using the data-processing-sources attribute on the canvas, and having Processing.js - load an external file is the preferred and recommended way to include scripts in - a web page. However, it is also possible to write in-line Processing code.

                            -

                            - A few changes are necessary to make the example above work with inline Processing - code:

                            - -{% highlight html linenos %} - - - -{% endhighlight %} - -

                            - This code is more complex because it has to figure out which canvas goes with which - script (i.e., you can have multiple Processing sketches living in the same page, - and therefore, multiple canvases). Also note that the scripts include a type - attribute, which distinguishes between JavaScript and Processing code (the browser - will ignore Processing scripts). Finally, note the use of the id and target - attributes to connect the Processing script with the associated canvas.

                            -
                            diff --git a/articles/_posts/template.html b/articles/_posts/template.html deleted file mode 100644 index ac06e5f..0000000 --- a/articles/_posts/template.html +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: default -desc: Guide description -title: Guide Title -permalink: /articles/LinkToArticle.html ---- -

                            This is my lovely article about something related to Processing.js

                            diff --git a/articles/index.html b/articles/index.html deleted file mode 100644 index 323accf..0000000 --- a/articles/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default ---- -

                            Articles

                            - -

                            -

                              - {% for post in site.categories.articles %} -
                            • {{ post.title }} - {{ post.desc }}
                            • - {% endfor %} -
                            -

                            diff --git a/blog/_posts/2010-02-03-processingjs-04-released.html b/blog/_posts/2010-02-03-processingjs-04-released.html deleted file mode 100644 index 3dabe83..0000000 --- a/blog/_posts/2010-02-03-processingjs-04-released.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: post -title: Processing.js v0.4.0 Released ---- -

                            Download Processing.js 0.4

                            - -

                            We are very pleased to announce the release of Processing.js 0.4!

                            - -

                            The students at Seneca and the community at large, have been working hard to get some -awesome code into the repository. Many smaller fixes and features have been added as well -as larger functions like blend modes. Another landmark in 0.4, are the small fragments of -OpenGL code that have begun to land. If you were not aware that Processing.js is getting -3D hardware support in the browser, you are now!

                            - -

                            The whole development process has taken a few releases to get right, but the community -has gathered great momentum in the last few months and the "right people" have joined the -group, helping Processing.js to run like the well oiled machine it should be. We are seeing -some amazing innovation and creativity from community members, such the experimental -HTML5 audio stream reading and writing in -Firefox from David Humprey and co.

                            - -

                            Development Process

                            - -The GitHub flow has also shifted to a more organized state with Anna Sobiepanek heading up .NEXT branch control prior to super-review and release candidacy. This allows us to keep the repository clean, so the main branch jeresig/processing-js will only get updated when a new release ships. The code will bubble up through controlled channels that have had rigorous tests and checks applied by the community, keeping the library parallel with it's big sister Processing, while maintaining a degree of difference that makes Processing.js suitable for the web context in which it is deployed. - -github-04 - -

                            Linting

                            - -

                            From 0.4 onwards, release code is being linted, beautified and packed before release -using some excellent script-fu from David Humprey and tested by fellow release controller -(and GitHub master) Corban Brook. -This way we will be confident that new releases do not break old functionality, code will -be lightweight, ready for deployment and be easier-on-the-eye for future developers.

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage -questions about Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js

                            - -

                            Changelog:

                            - -
                              -
                            • added map()
                            • -
                            • added fill()
                            • -
                            • added reverse()
                            • -
                            • added matchAll()
                            • -
                            • added blendColor()
                            • -
                            • added split()
                            • -
                            • added subset()
                            • -
                            • added splice()
                            • -
                            • added concat()
                            • -
                            • added unbinary()
                            • -
                            • added online()
                            • -
                            • added mag()
                            • -
                            • added hue()
                            • -
                            • added saturation()
                            • -
                            • added brightness()
                            • -
                            • added splitTokens()
                            • -
                            • added append()
                            • -
                            • added match()
                            • -
                            • added unhex()
                            • -
                            • added PVector()
                            • -
                            • added nfs
                            • -
                            • added shorten()
                            • -
                            • added nfp()
                            • -
                            • added focused
                            • -
                            • added strokeCap()
                            • -
                            • added nfc()
                            • -
                            • added cursor ( mode ) definitions
                            • -
                            • added strokeJoin()
                            • -
                            • added bezierPoint()
                            • -
                            • added popStyle()
                            • -
                            • added boolean()
                            • -
                            • added screen()
                            • -
                            • added noCursor()
                            • -
                            • added curveTangent()
                            • -
                            • added pushStyle()
                            • -
                            • added curvePoint()
                            • -
                            • added frameRate()
                            • -
                            • added size() for 3D
                            • -
                            • added background() for 3D
                            • -
                            • added release automation
                            • -
                            • added automated parser and unit tests
                            • -
                            • fixed JSLint validation
                            • -
                            • fixed Pvector
                            • -
                            • fixed parser bugs
                            • -
                            • fixed nf() (Infinite loop)
                            • -
                            • fixed functions that return arrays
                            • -
                            diff --git a/blog/_posts/2010-02-17-processingjs-v050-released.html b/blog/_posts/2010-02-17-processingjs-v050-released.html deleted file mode 100644 index 7c1262e..0000000 --- a/blog/_posts/2010-02-17-processingjs-v050-released.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: post -title: Processing.js v0.5.0 Released ---- -

                            Download Processing.js 0.5

                            - -

                            We are very pleased to announce the release of Processing.js 0.5!

                            - -

                            The students at Seneca and the community at large, have been working hard to get some -awesome code into the repository. Many smaller fixes and features have been added. However, -the most exiting addition is the implementation of camera functions and a more complete 3D -foundation that is now able to render and rotate a box.

                            - -

                            Linting

                            - -

                            From 0.4 onwards, release code is being linted, beautified and packed before release -using some excellent script-fu from David Humprey and tested by fellow release controller -(and GitHub master) Corban Brook. -This way we will be confident that new releases do not break old functionality, code will -be lightweight, ready for deployment and be easier-on-the-eye for future developers.

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage -questions about Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js

                            - -

                            Changelog:

                            - -
                              -
                            • Added acos()
                            • -
                            • Added asin()
                            • -
                            • Added atan()
                            • -
                            • Added automated tests for parser
                            • -
                            • Added bezierTangent()
                            • -
                            • Added binary()
                            • -
                            • Added box()
                            • -
                            • Added camera()
                            • -
                            • Added constants MAX_FLOAT, MIN_FLOAT, MAX_INT, MIN_INT
                            • -
                            • Added curve()
                            • -
                            • Added exp()
                            • -
                            • Added frustum()
                            • -
                            • Added hex()
                            • -
                            • Added join()
                            • -
                            • Added log()
                            • -
                            • Added ortho()
                            • -
                            • Added perspective()
                            • -
                            • Added PMatrix3D()
                            • -
                            • Added printProjection()
                            • -
                            • Added project packaging automation infrastructure
                            • -
                            • Added nf()
                            • -
                            • Added rotateX()
                            • -
                            • Added rotateY()
                            • -
                            • Added rotateZ()
                            • -
                            • Added sort()
                            • -
                            • Added support for Processing based unit tests
                            • -
                            • Added tan()
                            • -
                            • Added trim()
                            • -
                            • Added uniformf()
                            • -
                            • Added uniformi()
                            • -
                            • Added uniformMatrix()
                            • -
                            • Added vertexAttribPointer()
                            • -
                            • Added 3D Matrix Stack Object
                            • -
                            • Added "str1".equals("str2") function
                            • -
                            • Fixed array handling of int()
                            • -
                            • Fixed automated tests to work for large numbers of files
                            • -
                            • Fixed buildImageObject()
                            • -
                            • Fixed char c = '#;'
                            • -
                            • Fixed context menu blocking to be explicitly requested
                            • -
                            • Fixed curveVertex()
                            • -
                            • Fixed data-src
                            • -
                            • Fixed duplicate function errors and reserved keywords
                            • -
                            • Fixed import()
                            • -
                            • Fixed inconsistent mouse event semantics
                            • -
                            • Fixed keyCode RIGHT
                            • -
                            • Fixed last p.keyCode not to fire for every keyPress
                            • -
                            • Fixed min() and max() functions to take more than two arguments
                            • -
                            • Fixed noLoop() & loop()
                            • -
                            • Fixed parser whitespace bug in variable names
                            • -
                            • Fixed parsing of Java import statement
                            • -
                            • Fixed parsing of String content
                            • -
                            • Fixed rotate()
                            • -
                            • Fixed size() for 3D
                            • -
                            • Fixed Test harness _checkEqual to compare arrays
                            • -
                            • Fixed Test harness _checkEqual to compare NaN
                            • -
                            • Fixed test reporting for summary case
                            • -
                            • Fixed text(); added cross browser support, added primitive datatypes support
                            • -
                            • Tested parser for processing larger code samples
                            • -
                            diff --git a/blog/_posts/2010-02-26-processingjs-v060-released.html b/blog/_posts/2010-02-26-processingjs-v060-released.html deleted file mode 100644 index 9a90723..0000000 --- a/blog/_posts/2010-02-26-processingjs-v060-released.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: post -title: Processing.js v0.6.0 Released ---- -

                            Download Processing.js 0.6

                            - -

                            We are very pleased to announce the release of Processing.js 0.6!

                            - -

                            The students at Seneca and the community at large, have been working hard to get some -awesome code into the repository. Many smaller fixes and features have been added. However, -the most exiting addition is the implementation of 3D functions like sphere, line, fill and -stroke. Also, we have set up OpenGrok to enable easy searching of the Java Processing.

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage -questions about Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js

                            - -

                            Changelog

                            - -
                              -
                            • Added ellipseMode support ellipse
                            • -
                            • Added a way to specify tests that are known to fail
                            • -
                            • Added applyMatrix()
                            • -
                            • Added float() suppose to work on all primitive datatypes including arrays
                            • -
                            • Added char() suppose to work on all primitive datatypes including arrays
                            • -
                            • Added str() suppose to work on all primitive datatypes including arrays
                            • -
                            • Added normal()
                            • -
                            • Added modelZ()
                            • -
                            • Added modelX()
                            • -
                            • Added modelY()
                            • -
                            • Added sphere()
                            • -
                            • Added sphereDetail()
                            • -
                            • Added scale()
                            • -
                            • Added line() - 3D
                            • -
                            • Added fill() - 3D
                            • -
                            • Added noFill() - 3D
                            • -
                            • Added noStroke() - 3D
                            • -
                            • Added stroke() - 3D
                            • -
                            • Added PMatrix3D - remaining functions
                            • -
                            • Added P3D support
                            • -
                            • Added tinylog for println() println
                            • -
                            • Added automated tests: string parsing
                            • -
                            • Fixed loadImage()to work in Opera
                            • -
                            • Fixed fake-dom to work with println and tinylog
                            • -
                            • Fixed KNOWN-FAILURES for tinylog parsing
                            • -
                            • Fixed and updated the AUTHORS log
                            • -
                            • Fixed Parse Error: Does not like strings in the format "test test, test test, ..."
                            • -
                            • Fixed Rename zip file for make release
                            • -
                            • Fixed keyCodes for numbered keys return same values as some letter keys
                            • -
                            • Fixed Test harness _checkEqual does not compare "undefined"
                            • -
                            • Fixed automated tests: make check-one path not resolving
                            • -
                            • Fixed Example: examples/basic.displaying.html incorrect source code "loadimage example bug"
                            • -
                            • Setup an OpenGrok instance infrastructure
                            • -
                            diff --git a/blog/_posts/2010-03-24-processingjs-v070-released.html b/blog/_posts/2010-03-24-processingjs-v070-released.html deleted file mode 100644 index db979ef..0000000 --- a/blog/_posts/2010-03-24-processingjs-v070-released.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: post -title: Processing.js v0.7.0 Released ---- -

                            Download Processing.js 0.7

                            - -

                            We are very pleased to announce the release of Processing.js 0.7!

                            - -

                            The students at Seneca and the community at large, have been working hard to get some -awesome code into the repository. Many smaller fixes and features have been added. Some -exiting addition to the implementation include PImage with asynchronous image loading, -reference (ref) tests, and lighting.

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage -questions about Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js

                            - -

                            Changelog

                            - -
                              -
                            • Added custom @pjs directive parser
                            • -
                            • Added endCamera()
                            • -
                            • Added beginCamera()
                            • -
                            • Added custom mouseScrolled event
                            • -
                            • Added requestImage()
                            • -
                            • Added byte()
                            • -
                            • Added split()
                            • -
                            • Added PImage
                            • -
                            • Added String.toCharArray()
                            • -
                            • Added long data type
                            • -
                            • Added ArrayList.contains()
                            • -
                            • Added curveVertex() 3D
                            • -
                            • Added dist() 3D
                            • -
                            • Added curve() 3D
                            • -
                            • Added ambientLight()
                            • -
                            • Added curveDetail()
                            • -
                            • Added createImage()
                            • -
                            • Added noLights()
                            • -
                            • Added loadImage() preloading
                            • -
                            • Added directionalLight
                            • -
                            • Added Hashmap
                            • -
                            • Added loadBytes()
                            • -
                            • Added pointLight()
                            • -
                            • Added text()
                            • -
                            • Fixed date()
                            • -
                            • Fixed month()
                            • -
                            • Fixed failing PMatrix3D tests
                            • -
                            • Fixed _checkEquals() to add epsilon value
                            • -
                            • Fixed String.prototype.equals
                            • -
                            • Fixed background() for PImage support
                            • -
                            • Fixed image() for PImage support
                            • -
                            • Fixed set() for PImage support
                            • -
                            • Fixed parser test runner bug
                            • -
                            • Fixed parsing of tab characters
                            • -
                            • Fixed parsing of array declarations with spaces
                            • -
                            • Fixed parsing of multiple catch blocks
                            • -
                            • Fixed get() for PImage support
                            • -
                            • Fixed Char to properly distinguish Char from numbers/strings
                            • -
                            • Fixed Rhino parsing of processing.js
                            • -
                            • Fixed parser/unit tests to work on Windows
                            • -
                            • Fixed arrayCopy()
                            • -
                            • Fixed box()
                            • -
                            • Fixed min(), max() error handling for invalid arguments
                            • -
                            • Fixed bug in seneca/hex example
                            • -
                            • Fixed background() 3D when called outside of draw()
                            • -
                            • Fixed link() to respect target
                            • -
                            • Removed invalid tests
                            • -
                            • Switched from Packer to YUI Compressor
                            • -
                            • Build system improvements for release, testing
                            • -
                            • Added Automated Ref Tests
                            • -
                            diff --git a/blog/_posts/2010-03-26-processingjs-v071-released.html b/blog/_posts/2010-03-26-processingjs-v071-released.html deleted file mode 100644 index 62c8cb1..0000000 --- a/blog/_posts/2010-03-26-processingjs-v071-released.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: post -title: Processing.js v0.7.1 Released ---- -

                            Download Processing.js 0.7

                            - -

                            We are very pleased to announce the release of Processing.js 0.7.1!

                            - -

                            The students at Seneca and the community at large, have been working hard to get some -awesome code into the repository. After the release of 0.7 we realized that our implementation -of mouse wheel support actually broke the whole script in Chrome/Safari. We ask that anyone -that downloaded the 0.7 release upgrade to 0.7.1 as soon as possible.

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage -questions about Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js

                            - -

                            Changelog

                            - -
                              -
                            • Fixed mouse scrolled event for Chrome/Safari
                            • -
                            diff --git a/blog/_posts/2010-04-09-processingjs-v08-released.html b/blog/_posts/2010-04-09-processingjs-v08-released.html deleted file mode 100644 index 8bff86f..0000000 --- a/blog/_posts/2010-04-09-processingjs-v08-released.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: post -title: Processing.js v0.8 Released ---- -

                            Download Processing.js 0.8

                            - -

                            We are very pleased to announce the release of Processing.js 0.8!

                            - -

                            The students at Seneca and the community at large, have been working hard to get some -awesome code into the repository. We are proud to announce a full rewrite of p.color which -greatly increases performance. Also included in this release are lightning functions like -spotlight(), ambientLight(), and pointLight(), as well as material properties like -shininess(), and emissive().

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage -questions about Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js

                            - -

                            Changelog

                            - -
                              -
                            • Added spotLight
                            • -
                            • Added createImage
                            • -
                            • Added PImage blend prototype
                            • -
                            • Added PImage resize prototype
                            • -
                            • Added PImage copy prototype
                            • -
                            • Added @pjs directive for moz-opaque
                            • -
                            • Added copy
                            • -
                            • Added noTint
                            • -
                            • Added shininess
                            • -
                            • Added blend
                            • -
                            • Added lightSpecular
                            • -
                            • Added specular
                            • -
                            • Added ambient
                            • -
                            • Added emissive
                            • -
                            • Added PMatrix2DStack, and associated methods
                            • -
                            • Added lights
                            • -
                            • Added lightFalloff
                            • -
                            • Added printMatrix
                            • -
                            • Fixed canvas size change issue
                            • -
                            • Fixed image clipping logic
                            • -
                            • Fixed cursor to use PImage
                            • -
                            • Fixed performance and accuracy of color
                            • -
                            • Fixed smooth and noSmooth
                            • -
                            • Fixed default framerate to match Processing (60fps)
                            • -
                            • Fixed Math functions for performance
                            • -
                            • Fixed tint
                            • -
                            • Fixed parser to better handle custom classes (still known issues)
                            • -
                            • Fixed array.remove
                            • -
                            • Fixed style, linting issues in processing.js source
                            • -
                            • Fixed OOM parser error in matchAll
                            • -
                            • Fixed release target to auto-write version numbers in release files
                            • -
                            • Fixed background to throw if image size is not same as canvas
                            • -
                            • Fixed Boolean array bug
                            • -
                            • Fixed pmouseX and pmouseY
                            • -
                            • Fixed mouse offset bug when canvas in relative html elements
                            • -
                            • Fixed p.color.toGLArray
                            • -
                            • Fixed typo in mouseScrolled
                            • -
                            • Fixed p.set to support PImage and new color code
                            • -
                            • Fixed year
                            • -
                            • Fixed parser bug with Windows newlines
                            • -
                            • Fixed stroke and fill for performance
                            • -
                            • Fixed drawing of transparent pixels to canvas
                            • -
                            • Converted visual tests to unit and/or ref tests
                            • -
                            • Updated _checkThrows for false case
                            • -
                            • Updated ref tests to use better initial values, added calibration tests
                            • -
                            • Removed dead code
                            • -
                            • Added manual test tracking system
                            • -
                            diff --git a/blog/_posts/2010-05-11-processingjs-v09-released.html b/blog/_posts/2010-05-11-processingjs-v09-released.html deleted file mode 100644 index aab01ae..0000000 --- a/blog/_posts/2010-05-11-processingjs-v09-released.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: post -title: Processing.js v0.9 Released ---- -

                            Download Processing.js 0.9

                            - -

                            We are very pleased to announce the release of Processing.js 0.9!

                            - -

                            The new 0.9 release is now available on the GitHub repository. We are proud to announce -new 3D functionality such as quad, triangle, and vertex. Also included in this release is -multiple file support and an optimized version on PImage.

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage -questions about Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js You -can also get involved by helping with the testing or documentation phase.

                            - -

                            Changelog

                            - -
                              -
                            • Added quad() 3D
                            • -
                            • Added triangle() 3D
                            • -
                            • Added endShape() 3D
                            • -
                            • Added beginShape() 3D
                            • -
                            • Added vertex() 3D
                            • -
                            • Added more 3D ref tests
                            • -
                            • Added imageMode()
                            • -
                            • Added PMatrix2D::mult()
                            • -
                            • Added PMatrix2D::scale()
                            • -
                            • Added PMatrix2D::preApply()
                            • -
                            • Added PMatrix2D::invert(
                            • -
                            • Added PMatrix2D::rotate() and PMatrix2D::rotateZ()
                            • -
                            • Added PMatrix2D::translate()
                            • -
                            • Added PMatrix2D::determinant()
                            • -
                            • Added PMatrix2D::multY()
                            • -
                            • Added PMatrix2D::multX()
                            • -
                            • Added PMatrix2D::transpose()
                            • -
                            • Added P2D constant
                            • -
                            • Added QUARTER_PI constant
                            • -
                            • Added interface keyword support
                            • -
                            • Added screenZ()
                            • -
                            • Added screenX()
                            • -
                            • Added screenY()
                            • -
                            • Added HSB colour in addition to RGB color color.tostring
                            • -
                            • Added randomSeed()
                            • -
                            • Added bezierVertex()
                            • -
                            • Added remaining missing constants from PConstants
                            • -
                            • Added PImage support for cursor()
                            • -
                            • Added pjs directive to include multiple processing files
                            • -
                            • Added hue()
                            • -
                            • Added brightness()
                            • -
                            • Added saturation()
                            • -
                            • Added PImage: prototype for set "pimage set"
                            • -
                            • Added sketch.processing.org code in our tree
                            • -
                            • Added color.toHSB( colorInt )
                            • -
                            • Added mousewheel support for Minefield
                            • -
                            • Added parser static keyword support
                            • -
                            • Added parser Support minified processing code
                            • -
                            • Added data-processing-sources support
                            • -
                            • Fixed parser to handle local parameter names same as public variable names
                            • -
                            • Fixed parsing of whitespace between constructor and ()
                            • -
                            • Fixed parsing of function parameter newlines
                            • -
                            • Fixed parser to handle functions and constructors with the same name
                            • -
                            • Fixed parser to allow Returning array of floats
                            • -
                            • Fixed parser to allow functions before constructors
                            • -
                            • Fixed Parser: Calculate upper values in for loops only once
                            • -
                            • Fixed parser to allow Static variables
                            • -
                            • Fixed parser to allow Inheritance
                            • -
                            • Fixed p.background() called with no arguments[0]
                            • -
                            • Fixed noStroke() for lines
                            • -
                            • Fixed make release on Windows
                            • -
                            • Fixed public ctors for parser
                            • -
                            • Fixed empty draw() call clears background
                            • -
                            • Fixed noise()
                            • -
                            • Fixed random()
                            • -
                            • Fixed "p is undefined" errors in bespin ide
                            • -
                            • Fixed ImageData objects can't be literals, must use createImageData "cross browser"
                            • -
                            • Fixed class functions being repeated in the parsed
                            • -
                            • Fixed code in pimage.toDataURL() to use bit shifting
                            • -
                            • Fixed p.ArrayList to work for more than 3 dimensions
                            • -
                            • Fixed Multi-line comments with size() call break library parser
                            • -
                            • Fix make check-lint env var
                            • -
                            • Fixed Commented size() call for 3D context breaks lib
                            • -
                            • Fixed Events continue to get processed after exit() is called
                            • Fixed p.point to not use .slice.split with strokeStyle -
                            • Fixed Processing.js class functions not use with()
                            • -
                            • Fixed keyTyped()
                            • -
                            • Fixed lerpColor()
                            • -
                            • Ensured p.set(x,y,c) fully tested after color() changes
                            • -
                            • Final Linting for v0.9.0 Release
                            • -
                            • Remove jsbeautify from release target
                            • -
                            • Fixed PImage pixel array to use ImageData object
                            • -
                            • Transform pixel[n] to pixel(n)
                            • -
                            • Remove buildImageObject and getImage
                            • -
                            • Cleaned up curveVertex.htm example
                            • -
                            • Get rid of with(p) in p.init
                            • -
                            • Optimized p.redraw()
                            • -
                            diff --git a/blog/_posts/2010-05-20-processingjs-v091-released.html b/blog/_posts/2010-05-20-processingjs-v091-released.html deleted file mode 100644 index 5688ab3..0000000 --- a/blog/_posts/2010-05-20-processingjs-v091-released.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: post -title: Processing.js v0.9.1 Released ---- - -

                            Download Processing.js 0.9.1

                            - -

                            We are very pleased to announce the release of Processing.js 0.9.1!

                            - -

                            The new 0.9.1 release is now available for download -on the GitHub repository. This release is an architectural refactoring of the library to remove a legacy -performance issue. This rewrite will allow modern JavaScript engines to better optimize the libraries code -at runtime. For example, taking advantage of tracing in Firefox's SpiderMonkey engine. Of course, this -release would not be possible without -Scott.

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage questions about -Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js You can also get -involved by helping with the testing or documentation phase. We are desperately seeking help with -documentation.

                            - -

                            Changelog

                            - -
                              -
                            • Remove with( p ) for performance gain
                            • -
                            diff --git a/blog/_posts/2010-06-16-processingjs-v094-released.html b/blog/_posts/2010-06-16-processingjs-v094-released.html deleted file mode 100644 index 3a4b410..0000000 --- a/blog/_posts/2010-06-16-processingjs-v094-released.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: post -title: Processing.js v0.9.4 Released ---- -

                            Download Processing.js 0.9.4

                            - -

                            We are very pleased to announce the release of Processing.js 0.9.4!

                            - -

                            The new 0.9.4 release is now available for download -on the GitHub repository. This release features a brand new lightweight parser that improves flexibility. -But thats not all. We have added a lot of 3D features and are NOW supporting textures.  Check out the newly -added crisp @pjs directive for crisp lines and points.  Of course performance is always on the top of our -list, we are proud to say that processing.js is now faster than ever!

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage questions about -Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js You can also get -involved by helping with the testing or documentation phase.

                            - -

                            We are desperately seeking help with documentation.

                            - -

                            Changelog

                            - -
                              -
                            • Added ellipse() 3D
                            • -
                            • Added curvevertex() 3D
                            • -
                            • Added curve() 3D
                            • -
                            • Added rect() 3D
                            • -
                            • Added bezier() 3D
                            • -
                            • Added bezierVertex() 3D
                            • -
                            • Added text() 3D
                            • -
                            • Added curveDetail()
                            • -
                            • Added bezierDetail()
                            • -
                            • Added strokeWeight() and point()
                            • -
                            • Added filter()
                            • -
                            • Added PImage: filter prototype "pimage filter"
                            • -
                            • Added PImage: save prototype "pimage save"
                            • -
                            • Added PImage 0 argument constructor
                            • -
                            • Added filter MODEs for p.filter() and PImage.filter()
                            • -
                            • Added textureMode()
                            • -
                            • Added texture()
                            • -
                            • Added texture support
                            • -
                            • Added ArrayList.toArray
                            • -
                            • Added save()
                            • -
                            • Added XMLElement type
                            • -
                            • Added textWidth()
                            • -
                            • Added status()
                            • -
                            • Added a new lightweight parser
                            • -
                            • Added unit tests for new parser
                            • -
                            • Added a .version property
                            • -
                            • Added unit test for binary()
                            • -
                            • Added support for getting a reference to a Processing object "processing reference"
                            • -
                            • Added key/keyCode argument for keyReleased
                            • -
                            • Added call to draw() in setup if translate is called
                            • -
                            • Added file:/// uri support for running ref tests
                            • -
                            • Added crisp @pjs directive for crisp lines and points
                            • -
                            • Added a test coverage tool that provides simple way to check code coverage during unit/parser testing
                            • -
                            • Fixed pimage.get(x,y,w,h)
                            • -
                            • Fixed p.set() performance to increase speed
                            • -
                            • Fixed text() performance by removing unnecessary type conversions
                            • -
                            • Fixed p.text accepts null input, this causes an error
                            • -
                            • Fixed binary() to support all primitive datatypes including arrays
                            • -
                            • Fixed unbinary() to support all primitive datatypes including arrays
                            • -
                            • Fixed unhex() to support all primitive datatypes including arrays
                            • -
                            • Fixed shaders to take in color attribute for individual vertices
                            • -
                            • Fixed loadFont() to handle font with spaces in name
                            • -
                            • Fixed mouseX/mouseY are not computed with style.border taken into account
                            • -
                            • Fixed "p.mousePressed is not a function" error when clicking on a canvas that did not define it
                            • -
                            • Fixed mousePressed fails when mousePressed() is defined
                            • -
                            • Fixed keyCode is undefined in sketches
                            • -
                            • Fixed p.color - optimizations
                            • -
                            • Fixed parser to handle sketch code pixels = new color[]
                            • -
                            • Fixed parser so that vars which conflict with function names use constant naming convention
                            • -
                            • Fixed parser to allow "Code" in a single line comment
                            • -
                            • Fixed parser inheritance problems with variables
                            • -
                            • Fixed Processing.debug
                            • -
                            • Fixed PImage examples with Frame Rate
                            • -
                            • Fixed all functions that rely on p.vertex
                            • -
                            • Fixed Chrome error for Win that appeared when image() was used chrome
                            • -
                            • Fixed functions to allow Chromium to render 3D sketches
                            • -
                            • Fixed Reference test script
                            • -
                            • Fixed init.js fails to load sketch into targetted canvas
                            • -
                            • Removed dead code: Point
                            • -
                            diff --git a/blog/_posts/2010-07-26-processingjs-v096-released.html b/blog/_posts/2010-07-26-processingjs-v096-released.html deleted file mode 100644 index 825c547..0000000 --- a/blog/_posts/2010-07-26-processingjs-v096-released.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: post -title: Processing.js v0.9.6 Released ---- -

                            Download Processing.js 0.9.6

                            - -

                            We are very pleased to announce the release of Processing.js 0.9.6!

                            - -

                            The new 0.9.6 release is now available for -download on the GitHub repository. -This release encompasses an early implementation of loading and displaying SVG (Scalable -Vector Graphics) shapes. It also includes additional 3D features such as hint() and -background transparency. For the optimization enthusiasts, we optimized our code by -removing recursion and removing temporary variables where possible.

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage -questions about Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js You -can also get involved by helping with the testing or documentation phase. We are -desperately seeking help with documentation.

                            - -

                            Changelog

                            - -
                              -
                            • Added PConstants Object
                            • -
                            • Added PShape
                            • -
                            • Added hint() - 3D
                            • -
                            • Added ArrayList add(int index, Object value)
                            • -
                            • Added ArrayList set(index, value)
                            • -
                            • Added shape()
                            • -
                            • Added shapeMode()
                            • -
                            • Added loadShape()
                            • -
                            • Added createGraphics() 3D support
                            • -
                            • Added transparent backgrounds 3D support
                            • -
                            • Added transparency directive to fix Moving On Curves example
                            • -
                            • Added "IMAGE" to the global members array
                            • -
                            • Added createFont()
                            • -
                            • Added size() default width and height
                            • -
                            • Added textAlign()
                            • -
                            • Added pause-on-blur/focus for draw() and @pjs directive to reduce cpu usage
                            • -
                            • Added textWidth() 3D
                            • -
                            • Fixed tinylogLite so it doesn't slows down frame rate
                            • -
                            • Fixed ajax() to check whether the data request was successful
                            • -
                            • Fixed point does not render after text()
                            • -
                            • Fixed ref tests broken on file:/// uri
                            • -
                            • Fixed 2D ref tests
                            • -
                            • Fixed p.splice
                            • -
                            • Fixed exit() to remove the instance from the "Processing.instances"
                            • -
                            • Fixed loading remote images security errors
                            • -
                            • Fixed extra argument bug for a parseFloat line
                            • -
                            • Fixed use of .moz  attributes
                            • -
                            • Fixed p.arrayCopy()
                            • -
                            • Fixed smooth and noSmooth
                            • -
                            • Fixed strokeWeight for 2d point
                            • -
                            • Fixed keyCode is not defined parser error
                            • -
                            • Fixed parser errors when semicolon is missed
                            • -
                            • Fixed parser bug on cast with space: (type) (something)
                            • -
                            • Remove all occurances of typeof obj === 'undefined'
                            • -
                            • Optimized performance by removing recursive calls when possible
                            • -
                            • Optimized p.expand()
                            • -
                            • Optimized p.parse(), introduce p.compile()
                            • -
                            • Updated ref test runner for 3D tests
                            • -
                            • Removed unnecessary whitespace from processing.js
                            • -
                            diff --git a/blog/_posts/2010-08-16-processingjs-v097-released.html b/blog/_posts/2010-08-16-processingjs-v097-released.html deleted file mode 100644 index 47d2bed..0000000 --- a/blog/_posts/2010-08-16-processingjs-v097-released.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: post -title: Processing.js v0.9.7 Released ---- -

                            Download Processing.js 0.9.7

                            - -

                            We are very pleased to announce the release of Processing.js 0.9.7!

                            - -

                            The new 0.9.7 release is now available for -download on the GitHub repository. -Release features include 3D implementation of PImage, updated SVG support, improved -PGraphics, and added functionality such as textDescent. For IE9 users we are proud to -finally offer you a processing-js version that will run in your browser (IE 9 preview 4). -Also, for those of you that like native JavaScript we have added the ability to run -processing-js sketches using straight JavaScript. Look at examples/js for a demonstration.

                            - -

                            Get involved!

                            - -

                            If you would like to get involved with Processing.js development, or have general usage -questions about Processing.js, we would love meet you on IRC: -irc://irc.mozilla.org/processing.js You -can also get involved by helping with the testing or documentation phase. We are -desperately seeking help with documentation.

                            - -

                            Changelog

                            - -
                              -
                            • Added saveStrings()
                            • -
                            • Added textMode()
                            • -
                            • Added 3D implementation to image()
                            • -
                            • Added 3D implementation to PImage
                            • -
                            • Added loadStrings()
                            • -
                            • Added textAscent()
                            • -
                            • Added textDescent()
                            • -
                            • Added createFont / loadFont and PDE "development environment"
                            • -
                            • Added parser test coverage to 55%
                            • -
                            • Added PConstants parser optimization
                            • -
                            • Added PVector constructor optimization
                            • -
                            • Added PShapeSVG::parseMatrix
                            • -
                            • Added IE9 support
                            • -
                            • Fixed SVG single path cutout not rendering correctly
                            • -
                            • Fixed SVG color strings object
                            • -
                            • Fixed SVG parsePoly Chrome bug
                            • -
                            • Fixed SVG parsePath
                            • -
                            • Fixed PImage.mask doesnt work given an object generated by PGraphics.get
                            • -
                            • Fixed PImage functions to check this.isRemote
                            • -
                            • Fixed 3D Lights
                            • -
                            • Fixed make-check errors does not print array braces
                            • -
                            • Fixed Chrome 3D rect error
                            • -
                            • Fixed vertex 2D inline shape stroke and fill color
                            • -
                            • Fixed background in draw doesn't redraw 3d
                            • -
                            • Fixed Canvas not being painted when inside div
                            • -
                            • Fixed readPixels call for "ref test"
                            • -
                            • Fixed web color parsing behavior
                            • -
                            • Fixed XMLElement type doesn't support one parameter string ctor
                            • -
                            • Fixed tickle example is crashing using opera 10.53 on windows 7
                            • -
                            • Fixed shaders so they pass shader validation
                            • -
                            • Fixed frameRate() not changable outside of setup()
                            • -
                            • Fixed Paser fails silently when keywords aren't in global member array
                            • -
                            • Fixed Parser test speed on new parser's generated constructors
                            • -
                            • Fixed Parser bug: in-class default scope is not "this" but the DOM window
                            • -
                            • Change name of opaque pjs directive to "transparent" transparency "transparent background"
                            • -
                            • Removed newWebGLArray wrapper
                            • -
                            • Removed unsupported symbols
                            • -
                            • Created JS only example documentation example
                            • -
                            diff --git a/blog/_posts/2010-11-18-processingjs-v10-released.html b/blog/_posts/2010-11-18-processingjs-v10-released.html deleted file mode 100644 index 1cbdf16..0000000 --- a/blog/_posts/2010-11-18-processingjs-v10-released.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: post -title: Processing.js v1.0 Released ---- -

                            This is the one you've been waiting for. The Processing.js team is pleased to announce -the release of Processing.js -version 1.0.  Since its original release by John Resig in 2008, over 1,000 bug fixes, -features, and under-the-hood improvements were made.  The goal of Processing.js is parity -with Processing, ease of use in the web environment, wide compatibility with modern web -browsers, and great performance.  Processing.js is now feature complete with Processing, -with a very few exceptions (see the Reference -page for details).

                            - -

                            This release represents years of work by a very dedicated developer and user community. -With Processing.js we hope to expand the reach of Processing on the web, and bring a new -generation of developers to this wonderful language.  The open web will be a much easier -place to do graphical programming, starting today.

                            - -We're proud of Processing.js and hope you'll enjoy using it as much as we do! - -

                            Download the code here -and get started learning -how to use Processing.js.

                            - -

                            ChangeLog

                            - -
                              -
                            • Added source level documentation for functions
                            • -
                            • Added reference pages for missing language features
                            • -
                            • Added sketchpad.cc to list of dev tools
                            • -
                            • Added saveFrame()
                            • -
                            • Added remaining PImage features
                            • -
                            • Added compile-time optimizations for constants, functions, closures
                            • -
                            • Added PShapeSVG(new XMLElemnt(svg string))
                            • -
                            • Added check for missing use of 'new' to Processing() calls
                            • -
                            • Added test for casting and negative ints
                            • -
                            • Added cursor URL example to test suite
                            • -
                            • Added Makefile target for examples packaging
                            • -
                            • Created wiki for processingjs.org
                            • -
                            • Created quick start guides for Processing and JavaScript developers
                            • -
                            • Fixed keyReleased so it doesn't fire when key is held down
                            • -
                            • Fixed neighborhood.html
                            • -
                            • Fixed translate() call ordering with background()
                            • -
                            • Fixed issue with loadStrings() so it doesn't remove last character
                            • -
                            • Fixed matrix operations run in setup such that they are not reset in draw
                            • -
                            • Fixed remaining KNOWN-FAILURES that were fixable
                            • -
                            • Fixed performance issue with Image() function when mask and tint aren't specified
                            • -
                            • Fixed performance issue with text$line
                            • -
                            • Fixed SVG to work properly with negative widths
                            • -
                            • Fixed PShapeSVG/PShape to be public
                            • -
                            • Fixes to allow WebKit to load 3D sketches
                            • -
                            • Fixed PImage.mask to work with objects generated by PGraphics.get
                            • -
                            • Fixes to support IE9
                            • -
                            • Fixed parser to accept additional float literal formats
                            • -
                            • Fixed performance issue with ArrayList
                            • -
                            • Fixed issue with abstract methods
                            • -
                            • Fixed text 3D error
                            • -
                            • Fixed mouseX/mouseY values to take scrollbars into account
                            • -
                            • Fixed parser bug with discarded processing methods
                            • -
                            • Fixed performance issue with uniformMatrix and vertexAttributePointer
                            • -
                            • Fixed (int) casting
                            • -
                            • Fixed non-power-of-two texture load issue
                            • -
                            • Fixed all non-power-of-two images in source tree
                            • -
                            • Fixed text-width example in Firefox and Ubuntu
                            • -
                            • Fixed method invocation using this and super
                            • -
                            • Fixed js linting issues
                            • -
                            • Fixed ref test runner for Uint8Array
                            • -
                            • Fixed Learning IDE frame rate bug
                            • -
                            • Removed .svn dirs from source tree
                            • -
                            • Updated fake-dom.js for curContext.setTransform
                            • -
                            • Updated processingjs.org (many fixes, corrections)
                            • -
                            • Updated documentation for loadImage, requestImage, @pjs preloading
                            • -
                            diff --git a/blog/_posts/2011-03-01-processingjs-v11-released.html b/blog/_posts/2011-03-01-processingjs-v11-released.html deleted file mode 100644 index c0bccde..0000000 --- a/blog/_posts/2011-03-01-processingjs-v11-released.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: post -title: Processing.js v1.1 Released ---- -

                            Release 1.1 is now available -for download and contains a whole host of new features!

                            - -

                            Our mission this release was to focus on tightening up on as many bugs as possible but -also to add a large set of new features to the library. Some of the highlights of the new -features for this release are:

                            - -
                              -
                            • Support for touch events on iOS devices
                            • -
                            • mouseOver and mouseOut events were added to allow events to take place when the user - enters and leaves a canvas
                            • -
                            • A custom pjs packager has been created that can take a sketch and package it together - with the library, strip out unneeded code, minify it, and create a final .js file that is - much smaller in size and lightweight
                            • -
                            • An option was added to the makefile that allows you to create an API only version of - processing.js
                            • -
                            • Numerous website updates were done to the reference pages and documentation
                            • -
                            - -

                            More than 60 other bugs were fixed this release including 3D fixes and a ton of fixes -to our testing platforms making our bug detection process much more efficient.

                            - -

                            Our exhibition page has also been updated with some of the newest Processing.js works -on the web. If you have some work, and would like us to showcase it all you have to do is -get in touch with us. You -can do so via IRC, twitter (@annasob, or -@dhhodgin), or the -processingjs google group. -We accept all exhibit requests as long as they are your own work.

                            - -

                            Download the new release -and experience a faster, more powerful Processing experience today!

                            - -

                            Changelog

                            - -
                              -
                            • Added mouseover, mouseout events
                            • -
                            • Added parseBoolean()
                            • -
                            • Added make file option to create an API only version of processing.js
                            • -
                            • Added webkit touch events natively in pjs
                            • -
                            • Added custom pjs packager for pre-parsed code
                            • -
                            • Added Java for each loop is now supported
                            • -
                            • Fixed PJS defaults not matching P5 where reasonable
                            • -
                            • Fixed 3D demos broken on systems running OSX 10.6 using nVidia cards
                            • -
                            • Fixed key event filtering per sketch (multi-sketch page setup)
                            • -
                            • Fixed xmlElementRemoveAttribute test failing
                            • -
                            • Fixed XMLElement.parseChildrenRecursive
                            • -
                            • Fixed XMLElement constructor returning this
                            • -
                            • Fixed OO bug with classes
                            • -
                            • Fixed Processing instances not always being added to Processing.instances
                            • -
                            • Fixed P3D not respecting noFill()
                            • -
                            • Fixed ref test runner broken on IE9
                            • -
                            • Fixed ajax() should be asynchronous
                            • -
                            • Fixed XMLElement.getChildren(path) not returning all the children
                            • -
                            • Fixed inheriting from ArrayList failing
                            • -
                            • Fixed toImageData() scope issue
                            • -
                            • Fixed ArrayList contains() not checking equality (1.0)
                            • -
                            • Fixed shaders being broken with new restrictions on non-constant loops
                            • -
                            • Fixed Ref test creation problem with WebGL
                            • -
                            • Fixed parsing problem with the ternary operator and the pixel array
                            • -
                            • Fixed box vertices and comments not being congruent
                            • -
                            • Fixed loop() going relatively mad after a noLoop() and more than 0 second wait
                            • -
                            • Fixed Minefield from reporting syntax error on first line
                            • -
                            • Fixed text() function width and height restrictions being unreliable
                            • -
                            • Fixed unexpected result when converting char() to str()
                            • -
                            • Fixed jsshell tests to use snarf() instead of munging strings
                            • -
                            • Fixed pollution of object prototypes
                            • -
                            • Fixed static methods not working
                            • -
                            • Updated the way document focus is checked at the start of every frame redraw (1.0)
                            • -
                            • Updated fake-dom.js to support xhr.overrideMimeType
                            • -
                            • Updated PShape to use prototypes
                            • -
                            • Updated numerous website reference pages
                            • -
                            • Removed pimagefilter.pde, and filter.pde files from unit tests
                            • -
                            diff --git a/blog/_posts/2011-05-31-processingjs-v12-released.html b/blog/_posts/2011-05-31-processingjs-v12-released.html deleted file mode 100644 index b6e8c5f..0000000 --- a/blog/_posts/2011-05-31-processingjs-v12-released.html +++ /dev/null @@ -1,168 +0,0 @@ ---- -layout: post -title: Processing.js v1.2 Released ---- -

                            The Processing.js team is pleased to announce the -release of Processing.js version 1.2. This -is one of our largest releases to date, and focuses on performance, compatibility, 3D, and -bug fixes. More people than ever are using Processing.js, from professional design houses -to video game developers to fashion designers, and as the demand and uses continue to -grow, we are excited to be able to bring you an even better Processing.js.

                            - -

                            Since our last release, exciting things have been happening in browser development. -WebGL, the 3D extension of the HTML5 canvas element, has now shipped in Firefox and Chrome, -and is being tested in nightly builds of Safari and Opera. Processing.js has been fully -WebGL compatible for more than a year, and version 1.2 includes some great 3D performance -and bug fixes. We've also -written a guide to -help explain how Processing.js uses canvas and WebGL to support the various Processing -render modes. Processing.js is a great way to get started with 2D and 3D graphics on the -web, without having to understand all of the underlying technologies. With several guides for -people new to Processing, -JavaScript developers -and Processing developers, -there has never been a better time to jump in!

                            - -

                            This release also includes some important changes to ensure better compatibility with -Processing 1.5. First, we've altered our default frame rate to match Processing's (i.e., -60 fps). Developers who are upgrading from previous versions of Processing.js, and who -don't explicitly set a frame rate, may notice that sketches seem to run more slowly. Don't -worry, Processing.js is faster than ever! Your sketch is just drawing at 60fps. It's -possible to make things as fast as the browsers will allow by setting a higher frame rate, -but this will of course consume more CPU, and actually -not -provide any real gain other than bigger deltas between visible frames.

                            - -

                            We had many requests from our users to follow Processing's lead and add support for Java -Generics, and we're happy to report that as of Processing 1.2 this is fully supported! -We've also improved our compatibility in key classes and functions like ArrayList and -XMLElement, and arc() and beginShape(), etc. If you find that your Processing code isn't -compatible with Processing.js, please make sure you tell us.

                            - -

                            While we've been developing 1.2, we've seen some great examples of Processing.js in the -wild. Here are some of our favorites:

                            - - - -

                            One of the things we love most is seeing all the creative and unexpected ways that -people use Processing.js. If you have a cool example, let us know about it, and we might -showcase it on the site and in our blog posts.

                            - -

                            Finally, we want to take this release as an opportunity to acknowledge one of our team -members who will be leaving us. Anna Sobiepanek -has been a full-time developer and researcher at -Seneca's Centre for -Development of Open Technology (CDOT) for more than a year. She's helped develop and -lead the Processing.js project, and been our main git master -(Anna's github graph is often -used as an example of a complex git project). Anna's been a passionate contributor and -great leader in the Processing.js project, and we'll miss her daily work with us. Lots of -people bemoan the lack of women in open source, and we've been blessed to have such a great -developer and amazing woman working on our team. We wish her well in her new job, and look -forward to her continued contributions as a volunteer.

                            - -

                            We hope you enjoy using Processing.js 1.2. We enjoyed making it for you, and are already -working on 1.3!

                            - -

                            Changelog

                            - -
                              -
                            • Aligned default frameRate to match Processing (e.g., 60fps). NOTE: if your sketch seems slower than before, frameRate(1000) will yield the old behavior.
                            • -
                            • Added Performance Tests
                            • -
                            • Added lazy loading sketch extension
                            • -
                            • Added XMLElement toString() function
                            • -
                            • Added loadShape() testing
                            • -
                            • Added support for Java Generics
                            • -
                            • Added ArrayList addAll()
                            • -
                            • Fixed stroke being applied in endShape()
                            • -
                            • Fixed the key variable to hold the proper data type
                            • -
                            • Fixed string functions split(), contains()
                            • -
                            • Fixed background() when called with image different size from sketch
                            • -
                            • Fixed IE9 loading issues
                            • -
                            • Fixed mouseX/mouseY to be computed with canvas scaling taken into account
                            • -
                            • Fixed text string's height to not ignore textLeading()
                            • -
                            • Fixed copy() to handle transparency
                            • -
                            • Fixed ellipse 3D to take noStroke and noFill values into account
                            • -
                            • Fixed regression in specular() defaults to be same as 1.1.0
                            • -
                            • Fixed screenX()
                            • -
                            • Fixed arc() 3D fill
                            • -
                            • Fixed endShape(CLOSE) so the shape doesn't disappear
                            • -
                            • Fix for 3D PGraphics always drawing below 2D shapes
                            • -
                            • Fixed noStroke() on P3D endShape()
                            • -
                            • Fixed 3D ref tests
                            • -
                            • Fixed rect() for 3D when used with lights
                            • -
                            • Fixed param()
                            • -
                            • Fixed leak of global typed array variables
                            • -
                            • Fixed rendering of println() so it's more usable
                            • -
                            • Fixed Scaling/Light problem in 3D
                            • -
                            • Fixed reverseTransform()
                            • -
                            • Fixed line(x,y,x,y) so that it draws a point
                            • -
                            • Fixed Processing constructor to take a single argument
                            • -
                            • Fixed Iterator for Map's EntrySet to iterate through the entire set
                            • -
                            • Fixed dir vector transforms in directionalLight() and spotLight()
                            • -
                            • Fixed arrayList remove() to take an object argument
                            • -
                            • Fixed light/shadowing failures in ref tests for 3D
                            • -
                            • Fixed strokeWeight to not get reset in draw()
                            • -
                            • Fixed image cache to set loaded property for images inserted from js
                            • -
                            • Fixed parser bug with negative values
                            • -
                            • Fixed parser bug with static variables
                            • -
                            • Fixed textWidth to work with newlines
                            • -
                            • Fixed beginShape() and endShape() to work with bezierVertex()
                            • -
                            • Fixed arc() when covering 0 radians
                            • -
                            • Fixed unit tests that caused UTF-8 errors in newer JSSHELL
                            • -
                            • Fixed linting errors
                            • -
                            • Fixed arc() regressions
                            • -
                            • Fixed XML API to be Processing 1.5 compatible
                            • -
                            • Fixed subset(array, offset) bug
                            • -
                            • Converted all XMLElement tests to unit tests
                            • -
                            • Converted endShape() ref tests to be part of the regular 2D/3D ref tests
                            • -
                            • Documented rotate() to explain direction
                            • -
                            • Documentation fixes and corrections on website
                            • -
                            • Improved minification
                            • -
                            • Improved the performance of arc()
                            • -
                            • Improved the performance of blur()
                            • -
                            • Improve the performance of blend()'s ADD mode
                            • -
                            • Implemented ArrayList indexOf()
                            • -
                            • Improve the performance and output of ref tests
                            • -
                            • Improved compatibility of WebGL context creation
                            • -
                            • Moved colors object out of Processing instances to save memory
                            • -
                            • Reduced calls to uniformMatrix()
                            • -
                            • Removed test/unit/braces.js
                            • -
                            • Removed clear()
                            • -
                            • Removed transform matrix calculations if there are no lights
                            • -
                            • Removed dependency on init.js, and init.js from examples
                            • -
                            • Removed all uses of use3DContext from compiled sketches
                            • -
                            • Rewrote build system, switched to closure
                            • -
                            • Removed Bespin IDE
                            • -
                            • Removed unused tools and minifiers
                            • -
                            • Removed uses of constructor.name
                            • -
                            • Renamed internal uses of int(), boolean(), etc. to parseInt(), parseBoolean(), etc
                            • -
                            • Updated README, LICENSE, AUTHORS, CHANGELOG
                            • -
                            • Add known failures to ref tests
                            • -
                            • Convert test-suite tests to REF tests
                            • -
                            • Fixed inheritance for certain (js object) methods still broken (1.1)
                            • -
                            • Fixed more extra semi-colon breaking
                            • -
                            • Fixed createImage for RGB format produces image with transparent background
                            • -
                            • Removed String.prototype.match and .replace in IE9
                            • -
                            • Removed static beginCamera/endCamera examples from repo
                            • -
                            • Re-factor 3D and 2D drawing functions into separate objects
                            • -
                            diff --git a/blog/_posts/2011-06-02-processingjs-v121-released.html b/blog/_posts/2011-06-02-processingjs-v121-released.html deleted file mode 100644 index 6361761..0000000 --- a/blog/_posts/2011-06-02-processingjs-v121-released.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: post -title: Processing.js v1.2.1 Released ---- -

                            Hot on the heels of 1.2.0 we're releasing a maintenance -release 1.2.1 to address a regression identified by Florian Jenett, relating to the -use of background() with 3 arguments. An associated issue broke the @pjs "transparent" -directive, and we fixed both issues in this maintenance release. We also took the -opportunity to update the gzipped version of processing.js in the release archive, which -was accidentally posted as a 0-byte file. This release is brought to you thanks to -Florian's quick post on our bug tracker, so: if you find issues with Processing.js, don't -hesitate to file a bug with us at -https://processing-js.lighthouseapp.com -- we hate them just as much as you do.

                            - -

                            Changelog

                            - -
                              -
                            • Fixed background() when called with 3 arguments
                            • -
                            • Fixed use @pjs transparent directive
                            • -
                            • Updates to build system for testing, release
                            • -
                                diff --git a/blog/_posts/2011-07-14-processing-js-v1-2-3-released.html b/blog/_posts/2011-07-14-processing-js-v1-2-3-released.html deleted file mode 100644 index 55affa6..0000000 --- a/blog/_posts/2011-07-14-processing-js-v1-2-3-released.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: post -title: Processing.js v1.2.3 released ---- -

                                The Processing.js team is pleased to announce the release of -Processing.js 1.2.3. This is a maintenance release, which focused primarily on tests, -non-core Processing code, and other things we never have time to do--spring cleaning, if you will.

                                - -

                                While we mainly worked around the edges of the core Processing code, there are still -some notable changes and updates for our users. Specifically:

                                - -
                                  -
                                1. We have removed init.js, and changed the way that inline Processing code gets loaded -by Processing.js. In the past, inline sketches (e.g., those contained within <script -type="text/processing">...</script>) were loaded by a helper script called -"init.js". This was confusing for users. Starting with 1.2.3, inline Processing scripts -need to specify the ID of the canvas in which they should be drawn, by specifying this ID -as the value of an attribute called "data-processing-target". For example: -
                                  <script type="text/processing" data-processing-target="targetcanvas">
                                  -  /* processing code here */
                                  -</script>
                                  -...
                                  -<canvas id="targetcanvas"></canvas>
                                  -While the preferred way to load sketches is using the "data-processing-sources" attribute -on the canvas element instead of doing inline sketches, sometimes using inline code is -desirable, and that's now easier to use. The "example.html" file further demonstrates -several ways of getting your Processing sketches shown on a page.
                                2. -
                                3. We have removed the @pjs "transparent" directive. In the past we used this in order -to give a hint to the canvas that transparency would be happening. Not all browsers -implement this hint, and we decided (after doing performance tests) that the confusion it -caused for users isn't worth keeping it.
                                4. -
                                - -

                                Our next release will be focused on core Processing fixes again, as well as achieving -parity with the upcoming -Processing -2.0 release of our sister project. If you are using Processing.js and notice -compatibility, performance, or other issues, please let us know via -IRC (irc.mozilla.org #processing.js) or -by filing a bug on our -bug -tracker. - -

                                In the mean time, grab a copy of -Processing.js 1.2.3 and go make something awesome! Here are some cool sketches to get -you thinking:

                                - - - -

                                Changelog

                                - -
                                  -
                                • Added a note to the test suite about Opera failing Cursor
                                • -
                                • Added httpd.py to the distribution in order to run a local http server for testing
                                • -
                                • Added Shiffman's "Nature of Code" into parser test suite
                                • -
                                • Added support for hash/bookmark url from sketch loading
                                • -
                                • Added both inline and external loading samples to the example.html example
                                • -
                                • Add JavaScript event hooks to Sketch
                                • -
                                • Changed Processing.logger back to tinyLogLite
                                • -
                                • Changed the script attribute used to target a canvas from data-target to data-processing-target
                                • -
                                • Converted test suite #113 and #114 to ref tests
                                • -
                                • Converted README to README.md
                                • -
                                • Converted ref tests to have proper draw loops with exit() in them
                                • -
                                • Created SVG ref tests
                                • -
                                • Created curve* ref tests.
                                • -
                                • Created more background() ref tests
                                • -
                                • Created makefile documentation
                                • -
                                • Deleted dead code in processing.js
                                • -
                                • Deleted unused variables and functions
                                • -
                                • Expanded test suite configurations for more OS/browser combos
                                • -
                                • Expanded lerp unit test beyond r/g/b
                                • -
                                • Fixed ArrayList's copy constructor
                                • -
                                • Fixed processing.js header to include type of distribution
                                • -
                                • Fixed processing-helper to work when creating 3D tests after 2D tests
                                • -
                                • Fixed 3D points to take strokeWeight() into account
                                • -
                                • Fixed exit() to properly release events that are bound to sketches
                                • -
                                • Fixed split() so it doesn't scope-conflict with objects that implement their own split function
                                • -
                                • Fixed Test suite blur test to properly load second image
                                • -
                                • Fixed ref test runner so it can re-run without reloading the page
                                • -
                                • Fixed parser so that all classes in a deep class hierarchy get a $base
                                • -
                                • Fixed ref test runner to use epsilonOverride global value when higher than test-specified value
                                • -
                                • Fixed failing ref tests due to pixel diff errors
                                • -
                                • Fixed build system to run make check-lint as part of make check
                                • -
                                • Fixed test suite #56 alpha mask on IE9 and Opera
                                • -
                                • Fixed processing helper preloading in Firefox 4
                                • -
                                • Fixed ref tests that use text
                                • -
                                • Fixed event handler leaks processing.js
                                • -
                                • Fixed error messages when local files cannot be loaded
                                • -
                                • Fixed ref test runner to properly diff images
                                • -
                                • Fixed ref test runner to properly sort completed tests
                                • -
                                • Fixed test suite and ref test runner to use minified vs. full processing.js in test suite
                                • -
                                • Fixed Makefile to be Windows-friendly
                                • -
                                • Fixed @pjs directives to work when multiple directives are specified
                                • -
                                • Fixed build system to add version number and header to minified processing.js
                                • -
                                • Fixed build system so that release target triggers check-release automatically
                                • -
                                • Fixed example.html to use size() instead of canvas width/height
                                • -
                                • Fixed regression from #1363
                                • -
                                • Fixed SVG path "m" statement regression
                                • -
                                • Fixed loadImage() reference to not mention signing applets
                                • -
                                • Fixed SVG regression from failed merge
                                • -
                                • Fixed loadShape()
                                • -
                                • Fixed Makefile so that check-closure does not die mid-way
                                • -
                                • Fixed PVector.set to not set z to undefined (NaN)
                                • -
                                • Fixed is3D regex in ref tester
                                • -
                                • Fixed case-sensitivity in ref test SVG filenames and associated tests
                                • -
                                • Implemented fillStyle
                                • -
                                • Implemented __hashCode function via virtHashCode
                                • -
                                • Investigated the suitability of implementing the A3D Renderer
                                • -
                                • Moved the utility functions (extendClassChain, defineProperty, ...) to defaultScope
                                • -
                                • Refactored rotateZ into 2D and 3D methods
                                • -
                                • Refactored mag() to use function args
                                • -
                                • Refactored vertex() to use function args
                                • -
                                • Refactored line() to use function args
                                • -
                                • Removed fixOperaCreateImageData()
                                • -
                                • Removed fixOperaCreateImageData() in ref test runner
                                • -
                                • Removed delay() from Reference
                                • -
                                • Removed init and loadSketchFromSources from the api version of pjs
                                • -
                                • Removed init.js from repo and /download
                                • -
                                • Removed uses of eval("...")
                                • -
                                • Removed impossible parser tests
                                • -
                                • Removed duplicate loadSketchFromSources and disableInit
                                • -
                                • Removed nop and eval_ from the global closure arg list
                                • -
                                • Removed @pjs transparency directive
                                • -
                                • Restored feature to load inline sketches after accidental deletion
                                • -
                                • Rewrote beginDraw and endDraw comments to better explain their presence
                                • -
                                diff --git a/blog/_posts/2011-08-02-processing-js-siggraph-2011.html b/blog/_posts/2011-08-02-processing-js-siggraph-2011.html deleted file mode 100644 index 428ac79..0000000 --- a/blog/_posts/2011-08-02-processing-js-siggraph-2011.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: post -title: Processing.js @ SIGGRAPH 2011 ---- -

                                Members of the Processing.js development team will be presenting a talk at -SIGGRAPH 2011. We will be talking about the -development of Processing.js and showing off some really cool demos using Processing.js -and other web features.  If you are at SIGGRAPH, be sure to come check us out.

                                - -

                                Session info:

                                -

                                Session Name: Changing Dimensions -

                                Talk Name: Processing.js: Sketching with <canvas> -

                                Date: Monday, August 8 -

                                Time: 3:45pm to 5pm -

                                Room: West Building, rooms 109/110 - -

                                We will be in Vancouver for the whole conference. If you'd like to meet up with us, you -can contact us on Twitter:

                                - -
                                  -
                                • @asalga
                                • -
                                • @dhhodgin
                                • -
                                • @cathyatseneca
                                • -
                                diff --git a/blog/_posts/2011-08-24-processing-js-v1-3-0-released.html b/blog/_posts/2011-08-24-processing-js-v1-3-0-released.html deleted file mode 100644 index 7cef04b..0000000 --- a/blog/_posts/2011-08-24-processing-js-v1-3-0-released.html +++ /dev/null @@ -1,164 +0,0 @@ ---- -layout: post -title: Processing.js v1.3.0 released ---- -

                                Our Biggest Release Ever: Announcing Processing.js 1.3.0

                                - -

                                The Processing.js team is pleased to announce the release of Processing.js 1.3.0. This -is our biggest release to date, and represents an enourmous amount of work from the team. -This release focuses on a number of key issues: significant performance improvements, -greatly improved text handling and font metrics, and general bug fixes and compatibility -with Processing, including getting ready for Processing 2.0!

                                - -

                                1.3.0 is fast. We've put a ton of effort into making Processing.js run your sketches -faster. Our performance test suite shows some incredible speed-ups using 1.3.0 over -previous releases. All browsers on all platforms run faster. How much faster? Our tests -show a 6% - 60% gain across the board:

                                - -
                                  -
                                • Firefox: 10% - 25% increase
                                • -
                                • Chrome: 35% increase
                                • -
                                • Safari: 30% - 60% increase
                                • -
                                • Opera: 30% - 50% increase
                                • -
                                • Internet Explorer: 41% increase
                                • -
                                • Safari Mobile on iOS: 6% - 8% increase
                                • -
                                - -

                                We're really proud of the gains we've made in this release, and we're not done yet. -There are further performance gains to be had in 1.4 and beyond. Couple this with the -tremendous improvements in JavaScript engines and browser graphics performance, and the -future is looking better and better for doing Processing.js development. If you find -something runs slowly in Processing.js, we want to know. Make sure you file a bug or talk -to us on IRC. Chances are we can make it faster.

                                - -

                                1.3.0 is amazing at working with text and fonts. The release includes a total rewrite -of our font and text handling code. We know that typography is important to many Processing -and Processing.js users—it is to us as well. In order to get the amazing cross-platform, -cross-browser compatibility we did in this release, we had to go to -some extreme lengths -. It wasn't easy, but the results are beautiful, and should make working with text in -processing.js an enjoyable and beautiful experience.

                                - -

                                1.3.0 is more compatible with Processing than ever before. As Processing moves toward -its 2.0 release, and with it new features and API changes, we're implementing the same -things in Processing.js. The 1.3.0 release includes many compatibility fixes, which address -differences between sketches written in Processing and Processing.js. "If it works in -Processing, it should work in Processing.js." As Shaun McWhinnie (@himseelf) -wrote on Twitter:

                                - -
                                Sat down to *learn* processing.js last night, then found out it can parse my -existing pde sketches #jobdone
                                - -

                                Compatibility continues to be our goal, and with 1.3.0, it's more true than ever before. -Have you found a Processing sketch that doesn't work in Processing.js? Let us know!

                                - -

                                This release also introduces an important change for functions like line(), point(), -rect(). In the past we used anit-alised points/lines, due to limitations in HTML5 canvas. -In the past we told our users to add the crisp pjs directive to their sketches, as a hint -to Processing.js that you wanted points/lines without anti-aliasing. This was confusing to -most people, and cumbersome to use. Our team has figured out a way to overcome this -limitation, and we are now able to draw crisp points/lines by default, which matches the -expected behaviour of the same sketches run in Processing.

                                - -

                                We hope you enjoy working with Processing.js 1.3.0, and let us know. Processing.js is -a labour of love, and we appreciate your encouragement and hearing how you're using it in -your data visualizations, art, teaching, game development, etc. The number of people using -Processing.js around the world is humbling to us.

                                - -

                                While you're downloading Processing.js 1.3.0, here are some uses of Processing.js we -found while we were creating this release:

                                - - - -

                                Changelog

                                - -
                                  -
                                • Added a chart to the perf test suite
                                • -
                                • Added an error message to the ref test builder if 'exit()' is not found in the sketch
                                • -
                                • Added blendColor ref tests
                                • -
                                • Added codePointAt to the String object
                                • -
                                • Added documentation to toP5String function
                                • -
                                • Added equalsIgnoresCase to String object
                                • -
                                • Added error messages to beginCamera and endCamera when used in 2D mode
                                • -
                                • Added error messages to Processing file and I/O functions that are unsupported by Processing.js
                                • -
                                • Added printMatrix unit tests
                                • -
                                • Added resetMatrix unit tests
                                • -
                                • Added rounded rect
                                • -
                                • Added screenWidth and screenHeight variables to match Processing v2.0
                                • -
                                • Added script to build process to replace PConstants.* with their numerical values
                                • -
                                • Added startsWith and endsWith to the String object
                                • -
                                • Added support for external javascript code to add images to the imageCache
                                • -
                                • Added tint perf and ref tests
                                • -
                                • Added toArray() to the Array object
                                • -
                                • Added transparency perf test
                                • -
                                • Changed function(){} to the Processing local variable 'nop'
                                • -
                                • Changed obj.constructor type-checking to typeof(obj)
                                • -
                                • Changed perf tests to use exit()
                                • -
                                • Changed Processing.js errors to throw instead of print to tinylog
                                • -
                                • Converted animated test suite tests to ref tests
                                • -
                                • Converted XMLElement unit tests to use XMLElement.parse(string) instead of XMLElement(string)
                                • -
                                • Fixed crisp not working properly when any transformations were applied to the sketch
                                • -
                                • Fixed CSS font declaration when using SVG fonts
                                • -
                                • Fixed default vertical align in textMode(halign, valign) to BASELINE
                                • -
                                • Fixed equalsIgnoreCase to use toLowerCase rather than RegEx(//i)
                                • -
                                • Fixed fake-dom.js returning the same canvas every time createElement is called
                                • -
                                • Fixed font metrics (textAscent, textDescent, etc.)
                                • -
                                • Fixed font preloading not checking whether a @font-face rule already exists
                                • -
                                • Fixed font preloading to use tinyfont
                                • -
                                • Fixed font quoting bug in computeFontMetrics
                                • -
                                • Fixed HashMap.values() so that it returns an ArrayList
                                • -
                                • Fixed hex literal #FFFFFF not being converted to an int properly
                                • -
                                • Fixed HSB functions ignoring colorMode range in grayscale
                                • -
                                • Fixed httpd.py webserver to be multi-threaded and MSIE compatible
                                • -
                                • Fixed image() not working in 3D mode
                                • -
                                • Fixed lerpColor generating incorrect values in HSB color mode
                                • -
                                • Fixed make release-files creating the temporary file in the wrong directory
                                • -
                                • Fixed mandelbrot.pde and histogram.pde ref tests
                                • -
                                • Fixed MSIE crash when loading from a script element -
                                • Fixed negative color and opacity values returning incorrect results -
                                • Fixed performance loss when drawing images at fractional co-ordinates -
                                • Fixed PImage.get not returning valid data -
                                • Fixed rectMode() regressions caused by @pjs crisp removal -
                                • Fixed runtests.py to use Unix paths only -
                                • Fixed screenXYZ.pde unit test -
                                • Fixed sketch starting before font preloading is done -
                                • Fixed smooth() and noSmooth() to use new image-rendering modes -
                                • Fixed SVG loading in Opera -
                                • Fixed SVG path handling for 'z' and 'Z' -
                                • Fixed text-width.pde ref test to use the correct font -
                                • Fixed text$4 and text$6 font alignment -
                                • Fixed textAlign and textMode not getting saved in pushStyle() and popStyle() -
                                • Fixed textSize not caching textAscent, textDescent, and textLeading -
                                • Fixed tint() to work with texture() -
                                • Fixed vertex() not working with optional parameters -
                                • Fixed vertical align behaviour -
                                • Fixed XMLElement.parse when parsing a string with '.svg' or '.xml' -
                                • Improved the performance of blend modes -
                                • Improved the performance of blend() -
                                • Improved the performance of images created with createImage() -
                                • Improved the performance of PVector -
                                • Reduced the number of canvas objects the ref test runner creates so that tests pass on Chrome in Windows -
                                • Refactored forwardTransform and reverseTransform into modelView and modelViewInverse -
                                • Refactored PFont -
                                • Refactored point(), line(), and rect() to draw crisp lines -
                                • Refactored Processing.js to have no else after return or throw -
                                • Refactored unbinary() -
                                • Removed @pjs crisp directive -
                                • Removed color profiles from all images used in our ref test suite -
                                • Removed comments from the release version of Processing.js -
                                • Removed reliance on use3DContext variable -
                                • Removed textMode(SCREEN) -
                                • Removed unused 'Keys and Keystrokes' variables -
                                • Removed unused function colorBlendWithAlpha -
                                • Removed use of .apply(this, arguments) -
                                • Removed use of parseFloat and parseInt as cast operators -
                                • Replaced 'new Date().getTime()' with 'Date.now()' -
                                • Switched back to YUI compressor for this release, as Google Closure was producing buggy code -
                                diff --git a/blog/_posts/2011-09-05-meet-the-processing-js-team.html b/blog/_posts/2011-09-05-meet-the-processing-js-team.html deleted file mode 100644 index c43179d..0000000 --- a/blog/_posts/2011-09-05-meet-the-processing-js-team.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: post -title: Meet the Processing.js team ---- -

                                After finishing our v1.3.0 release, we were able to gather all of our current -Processing.js developers in one place for the day. Meet the team:

                                - - - Processing.js - the team - - -

                                From left to right, we have:

                                -
                                  -
                                • Scott "scott" Downe -
                                • -
                                • Andor "asalga" Salga - blog
                                • -
                                • Daniel "dhodgin" Hodgin - blog
                                • -
                                • Mike "Pomax" Kamermans - blog
                                • -
                                • David "humph" Humphrey - blog
                                • -
                                • Jon "jbuck" Buckley - blog
                                • -
                                diff --git a/blog/_posts/2011-10-06-processing-js-v1-3-5-released.html b/blog/_posts/2011-10-06-processing-js-v1-3-5-released.html deleted file mode 100644 index bcb3581..0000000 --- a/blog/_posts/2011-10-06-processing-js-v1-3-5-released.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: post -title: Processing.js v1.3.5 released ---- -

                                The Processing.js team is pleased to announce the release of Processing.js 1.3.5. This -is a maintenance release, containing many compatibility fixes for the soon to be released -Processing v 2.0, as well as fixes for issues reported by our users in 1.3.0. We've also -included a number of updates for 3D, not the least of which is that 3D now renders crisp, -and addressed several performance issues. As always, we encourage you to - -file bugs when you spot something we missed, and thank those of you who filed bugs that -we fixed in this release. Our community continues to grow, and the feedback, demos, and test -cases are always welcome.

                                - -

                                You can download the full Processing.js 1.3.5 library -(production (recommended), -debug version), get the - -API-only version (no Processing parser, for JavaScript developers), or grab a -zip file -containing everything, including many working examples.

                                - -

                                While you're downloading Processing.js 1.3.5, here are some demos we really liked:

                                - - - -

                                Changelog

                                - -
                                  -
                                • Added check for canvas in Processing ctor [#1646]
                                • -
                                • Added document.head compatibility for Firefox 3.6 [#1660]
                                • -
                                • Added reference to p instance in onLoad() [#1643]
                                • -
                                • Added text(string, x, y, z) ref tests [#1642]
                                • -
                                • Disabled WebGL anti-aliasing [#1701]
                                • -
                                • Fixed PImage.mask() when passed a PImage created from a PGraphics [#1623]
                                • -
                                • Fixed PImage.toImageData not using cache [#1647]
                                • -
                                • Fixed colorMode not working in 3D [#1670]
                                • -
                                • Fixed copy() without a source argument [#1631]
                                • -
                                • Fixed frustum() not throwing an error in 2D mode [#1693]
                                • -
                                • Fixed get() not returning a copy of a PImage [#1622]
                                • -
                                • Fixed get(x,y) when called on 3D PGraphics [#1630]
                                • -
                                • Fixed getUniformLocation checking for null [#1650]
                                • -
                                • Fixed lights not being applied to textures [#1503]
                                • -
                                • Fixed modelX/Y/Z() failing if camera() was not called first [#1103]
                                • -
                                • Fixed noFill()/noStroke() not working if called before size() [#1417]
                                • -
                                • Fixed pixels not allowed as a variable name in classes [#1674]
                                • -
                                • Fixed pmouseX/Y values during draw() [#1635]
                                • -
                                • Fixed rectMode() not working in 3D [#1656]
                                • -
                                • Fixed textWidth() returning a string instead of a number [#1624]
                                • -
                                • Fixed texture UV coordinates not normalized and clamped with NPOT textures [#1669]
                                • -
                                • Fixed texture() modifying a NPOT PImage passed to it [#1664]
                                • -
                                • Fixed tint() ignoring alpha parameter [#1625]
                                • -
                                • Fixed tint() not marking a PImage as dirty [#1707]
                                • -
                                • Fixed using p as a class member identifier [#1618]
                                • -
                                • Fixed vertical align in textAlign() [#1628]
                                • -
                                • Optimized use of curRectMode and curEllipseMode [#1676]
                                • -
                                • Removed p.Import [#1632]
                                • -
                                • Removed unused inDraw variable [#1641]
                                • -
                                diff --git a/blog/_posts/2011-10-13-processing-js-v1-3-6-released.html b/blog/_posts/2011-10-13-processing-js-v1-3-6-released.html deleted file mode 100644 index 9158c2e..0000000 --- a/blog/_posts/2011-10-13-processing-js-v1-3-6-released.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: post -title: Processing.js v1.3.6 released ---- -

                                The Processing.js team is pleased to announce the release of Processing.js 1.3.6. This -is a maintenance release for 1.3.5, which had a bug where any non-square 3D sketch would -be stretched. We highly recommend that you upgrade to this version, especially if you're -using 3D mode. A big thanks to Casey Reas on the Processing team for reporting this bug. -And congratulations on the -newest addition to the family!

                                - -

                                If you run into any problems with Processing.js, please file a - -bug or talk to us on IRC -(irc://irc.mozilla.org/processing.js).

                                - -

                                Changelog

                                - -
                                  -
                                • Fixed arc() not filling the last half degree [#1717]
                                • -
                                • Fixed camera() call order regression in 1.3.5 [#1714]
                                • -
                                • Fixed delay() to throw an unsupported function error [#1724]
                                • -
                                diff --git a/blog/_posts/2011-10-25-processing-js-workshops.html b/blog/_posts/2011-10-25-processing-js-workshops.html deleted file mode 100644 index c1615e3..0000000 --- a/blog/_posts/2011-10-25-processing-js-workshops.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: post -title: Processing.js Workshops ---- -

                                It's conference season, and the Processing.js team has been invited to speak at various -events around the world in the next month.  If you're interested in learning Processing.js, -or want to connect with others who use it, these events are great places to meet the -Processing/Processing.js communities.  Two of Processing.js' lead developers, David Humphrey -and Jon Buckley, will be running these sessions and giving talks.

                                - -

                                On Thursday October 27, 2011 from 9:00am -- 12:00pm we'll be at the Free Software and -Open Source Symposium (FSOSS) at Seneca College in Toronto (the home of Processing.js!). -This workshop will give an introduction to Processing and Processing.js, and show how to -integrate web technologies (e.g., JavaScript libraries) and data services (e.g., Twitter) -with Processing.js sketches.

                                - -

                                From November 4-6 we'll be in London, UK for the -Mozilla Media Festival.  We'll be giving a workshop -on Processing.js, and showing how to use HTML5 media technologies, JavaScript libraries, and -mobile device APIs.  Workshop time TBD.

                                - -

                                From November 11-13 we'll be in Chicago for the -Mobile Processing conference. We'll -be giving a -workshop on using Processing.js with the web and mobile web, how to make Processing -sketches work on Andorid, iOS, and other mobile platforms, and generally how to leverage -web technologies and data sources in Processing.js. We will also give a - -talk on Processing.js generally, and how it can be used with the (mobile) web.

                                - -

                                We also see that there is a series of -Processing.js -workshops going on at GAFFTA on Tuesdays & Thursdays, October 25th & -27th, November 1st & 3rd.  If you're in San Francisco, be sure to check these out.

                                - -

                                Looking forward to meeting you at one of these events.

                                diff --git a/blog/_posts/2012-07-31-processing-js-v1-4-0-released.html b/blog/_posts/2012-07-31-processing-js-v1-4-0-released.html deleted file mode 100644 index 18a063f..0000000 --- a/blog/_posts/2012-07-31-processing-js-v1-4-0-released.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: post -title: Processing.js v1.4.0 released ---- -

                                Processing.js 1.4.0! Yes, it's finally here, and it's a doozy. Many of the dev team have -been working on other projects over the last year, with some people wondering whether Processing.js -was a dead project, so just to reassure you: it is very much alive. However, we've had to make some -changes to the way we do releases now that we no longer have any developers dedicating all their time -to the project. So, let's start with the biggest change: a release! You can find the full list of -things that were added or fixed in the changelog below, but to give you a taste of -what's changed: SVG drawing to buffers now works, method overloading has been made far more robust, -XML with CDATA no longer breaks and the Processing 2.0 XML API is supported, IE9 no longer crashes -without the debug tools turned one, and we even managed to slip variable argument syntax (Type... -varname) into the parser. There's even a new extension to play with.

                                - -

                                The second change is also relatively big: we're changing from spaced out, big releases to -relatively frequent, but small releases. This benefits everyone: you get more frequent updates -to Processing.js, and issues that you report (or contribute code for!) make it into the public -version much faster, and the people who work on Processing.js (a number of formerly full-time -devs are still involved with the project on a part time basis) can simply focus on getting two -or three important tickets out of the way each release, rather than spending time trying to work -through twenty or thirty. This makes things much more managable.

                                - -

                                The tl;dr version; Processing 1.4.0 is out! Go download -it! And to keep you coming back for more, expect 1.4.1 at the end of August!

                                - -

                                As always: if you run into any problems with Processing.js, please file a - -bug or talk to us on IRC -(irc://irc.mozilla.org/processing.js).

                                - -

                                Changelog

                                - -
                                  -
                                • Added a PJS object inspector [#1867]
                                • -
                                • Added ArrayList.lastIndexOf() [#1837]
                                • -
                                • Added ArrayList.removeAll() [#1001]
                                • -
                                • Added CDATA support to XML [#1788]
                                • -
                                • Added check for IE9 non-HTML5 doctype [#1606]
                                • -
                                • Added online global variable [#1743]
                                • -
                                • Added option to stop ref test suite on failures [#1681]
                                • -
                                • Added PFont cache limits [#1741]
                                • -
                                • Added PImage.get() ref tests [#1601]
                                • -
                                • Added point smoothing in 3D [#602]
                                • -
                                • Added Processing.reload() [#1133]
                                • -
                                • Added shearX() and shearX() to 2D mode [#1640]
                                • -
                                • Added shearX() and shearY() in 3D mode [#1773]
                                • -
                                • Added support for Processing 2.0 XML support [#1806]
                                • -
                                • Added support for variable arguments [#1842]
                                • -
                                • Added tinyLogLite license and author to LICENSE [#1731]
                                • -
                                • Enabled preserveDrawingBuffer when context is acquired [#1651]
                                • -
                                • Fixed array initialization code [#1817]
                                • -
                                • Fixed ArrayList(int) constructor [#1829]
                                • -
                                • Fixed data-processing-sources to seperate files or ids by whitespace, not just spaces [#1818]
                                • -
                                • Fixed handling of namespaces in XMLElement.getChild [#1382]
                                • -
                                • Fixed HashMap iterator.remove() bug [#1871]
                                • -
                                • Fixed I-bar cursor appearing on click-dragging [#1755]
                                • -
                                • Fixed IE9 hanging on exception without debugger [#1789]
                                • -
                                • Fixed init to cache <script> elements [#1740]
                                • -
                                • Fixed lazy loading height calculation [#1846]
                                • -
                                • Fixed naming convention in shaders [#1279]
                                • -
                                • Fixed off-by-one error in arc startLUT calculations [#1802]
                                • -
                                • Fixed overloaded method calls [#1810]
                                • -
                                • Fixed parser to allow $ in names [#1688]
                                • -
                                • Fixed PGraphics initially not transparent [#1813]
                                • -
                                • Fixed PImage.toImageData using cached image data [#1768]
                                • -
                                • Fixed popStyle() setting rectMode() to undefined [#1771]
                                • -
                                • Fixed PShape to work with PGraphics [#1778]
                                • -
                                • Fixed PShape.shape() changing rectMode() and ellipseMode() [#1753]
                                • -
                                • Fixed right-click context menu appearing in 3D sketches [#1779]
                                • -
                                • Fixed splitTokens() to work with special characters [#1799]
                                • -
                                • Fixed textSize() not resetting font metrics [#1687]
                                • -
                                • Removed duplicate curElement assigned code [#1763]
                                • -
                                • Set animated ref tests to run at 1000 FPS [#1830]
                                • -
                                • Unmarked ref tests as known fails due to FF9 JIT bugs [#1700]
                                • -
                                • Updated the generics regexp for array notation [#1812]
                                • -
                                diff --git a/blog/_posts/2012-08-08-processing-js-v1-4-1-hotfix.html b/blog/_posts/2012-08-08-processing-js-v1-4-1-hotfix.html deleted file mode 100644 index f2684da..0000000 --- a/blog/_posts/2012-08-08-processing-js-v1-4-1-hotfix.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post -title: Processing.js v1.4.1 released ---- -

                                Hot on the heels of 1.4.0 comes 1.4.1, which is an emergency -hotfix release to fix a regression issue introduced by the patch for -ticket #1775, -which aimed to solve the problem of getting an I-bar cursor when -doing click-drags on a sketch. Long story short, the code intercepted -click events but forgot to set focus on the sketch. Without focus, -key events don't make it into the sketch so we had the unfortunate -situation where your sketch wouldn't respond to the keyboard.

                                - -

                                This was fixed as issue #1883 -and should no longer cause any problems. As a bonus, we also threw in -#1886 -which adds String.matches, which has been missing all this time.

                                \ No newline at end of file diff --git a/blog/_posts/2014-03-25-processing-js-v1-4-7.html b/blog/_posts/2014-03-25-processing-js-v1-4-7.html deleted file mode 100644 index 9341d4e..0000000 --- a/blog/_posts/2014-03-25-processing-js-v1-4-7.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: post -title: Processing.js v1.4.7 released ---- -

                                Since our last release, 1.4.1, Processing.js has been given a bit of a source code -overhaul, culminating in a new release: 1.4.7! This release adds in new functionality -that you might already know from Processing 2.0, but was missing in Processing.js such -as new methods in PVector and XML. The release model has also been changed: we're going -to be releasing a new version every time a merge in a patch that either fixes something, -or adds a feature that is still missing. This makes things way easier for us to manage, -and ensures that you don't have to wait months while updates slowly gather dust waiting -for a major release. You can download the new version of Processing.js over on the -download section, and let us know what's still missing!

                                - -

                                As we're reshuffling the source code, some things are currently not available: the -API-only version of Processing.js was so insignificantly smaller than the regular version -that it will no longer be generated. The difference was about 10kb on 200kb, and the -added complexity of compiling an API-only version was simply not something that could be -taken on. If you want to help bring that back, we'd love to talk to you! We're also -not packaging the examples anymore, as a lot of them are actually incredibly out of date -and do not reflect proper Processing.js or even Processing approaches. Again, if you -want to help create a set of useful example again with us, get in touch!

                                \ No newline at end of file diff --git a/blog/_posts/2014-03-25-processing-js-v1-4-8.html b/blog/_posts/2014-03-25-processing-js-v1-4-8.html deleted file mode 100644 index c6b33c1..0000000 --- a/blog/_posts/2014-03-25-processing-js-v1-4-8.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: post -title: Processing.js v1.4.8 released ---- -

                                It's been a few weeks and PRocessing.js got a few PRs merge in, so it's time for a new -release: say hello to 1.4.8! This version has some fixes to PVector's rotate, support for -randomGaussian(), and several unit tests to make sure those fixes pass muster. You -can download the new version of Processing.js over on the download -section, and let us know what's still missing!

                                diff --git a/blog/_posts/2014-04-17-processing-js-v1-4-8.html b/blog/_posts/2014-04-17-processing-js-v1-4-8.html deleted file mode 100644 index c6b33c1..0000000 --- a/blog/_posts/2014-04-17-processing-js-v1-4-8.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: post -title: Processing.js v1.4.8 released ---- -

                                It's been a few weeks and PRocessing.js got a few PRs merge in, so it's time for a new -release: say hello to 1.4.8! This version has some fixes to PVector's rotate, support for -randomGaussian(), and several unit tests to make sure those fixes pass muster. You -can download the new version of Processing.js over on the download -section, and let us know what's still missing!

                                diff --git a/blog/_posts/template.html b/blog/_posts/template.html deleted file mode 100644 index fc7a841..0000000 --- a/blog/_posts/template.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: post -title: Template blog title ---- -

                                This is a blog template

                                - -

                                Go nuts with whatever HTML you like, but try to stick to your basic p's, h3's, and ul's.

                                - -

                                Be sure to name this new blog post properly, "yyyy-mm-dd-title-with-dashes.ext", where -.ext can be html, md, or textile.

                                diff --git a/blog/index.html b/blog/index.html deleted file mode 100644 index 663d46e..0000000 --- a/blog/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default ---- -{% assign first_post = site.categories.blog.first %} -

                                Blog

                                -
                                -

                                {{ first_post.title }}

                                -
                                {{ first_post.date | date_to_string }}
                                -{{ first_post.content }} -
                                - -
                                - -

                                Archives

                                -
                                  -{% for post in site.categories.blog %} -
                                • {{ post.title }}{{ post.date | date_to_string }}
                                • -{% endfor %} -
                                \ No newline at end of file diff --git a/community/index.html b/community/index.html deleted file mode 100644 index ffc5136..0000000 --- a/community/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default ---- -

                                Community

                                -
                                - - - IRC Channel -

                                The Processing.js IRC channel has moved to irc.mozilla.org where the PJS - developers are hanging out. Need information, have feature suggestions, bugs? Join - irc://irc.mozilla.org/processing.js - and we will help you get the most out of Processing.js.

                                -
                                -
                                - -
                                - - - GitHub Repository -

                                The current fork of the Processing.js repo at GitHub. Developers wishing to contribute - to Processing.js should sign-up at GitHub and pull the code to their local machines. - Then any changes you make can be easily integrated into the master version.

                                -

                                The development team have also chosen to go with Github as the bug tracking system - for Processing.js. If you think you may have stumbled accross a bug, or you are - interested in joining in the development, visit - Processing.js on Github.

                                -
                                -
                                - -
                                - - - Google Group -

                                A very helpful group of Processing.js enthusiasts who frequently share code, - techniques and collaborate on new ideas. A great place for beginners to get started.

                                -
                                -
                                - -
                                - - - Open Source @ Seneca -

                                After its initial release in 2008 by John Resig, the - Processing.js project was picked-up by students in the - Centre for Development of - Open Technology at Seneca College. The - student team - finished the port of Processing.js, fixing more than 900 bugs, shipping 12 releases, - and creating a vibrant developer community around Processing.js in the process. This - project was done through a partnership between the - Mozilla Foundation and - Seneca College, and was led by - David Humphrey, Al - MacDonald, and Corban Brook. The students - continue to maintain the project today.

                                -
                                -
                                diff --git a/css/bootstrap.css b/css/bootstrap.css deleted file mode 100644 index efabec5..0000000 --- a/css/bootstrap.css +++ /dev/null @@ -1,356 +0,0 @@ -html,body{margin:0;padding:0;} -h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,cite,code,del,dfn,em,img,q,s,samp,small,strike,strong,sub,sup,tt,var,dd,dl,dt,li,ol,ul,fieldset,form,label,legend,button,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:normal;font-style:normal;font-size:100%;line-height:1;font-family:inherit;} -table{border-collapse:collapse;border-spacing:0;} -ol,ul{list-style:none;} -q:before,q:after,blockquote:before,blockquote:after{content:"";} -html{overflow-y:scroll;font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} -a:focus{outline:thin dotted;} -a:hover,a:active{outline:0;} -article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} -audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} -audio:not([controls]){display:none;} -sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;} -sup{top:-0.5em;} -sub{bottom:-0.25em;} -img{border:0;-ms-interpolation-mode:bicubic;} -button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;} -button,input{line-height:normal;*overflow:visible;} -button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;} -button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} -input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;} -input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;} -textarea{overflow:auto;vertical-align:top;} -body{background-color:#ffffff;margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;color:#404040;} -.container{width:940px;margin-left:auto;margin-right:auto;zoom:1;}.container:before,.container:after{display:table;content:"";zoom:1;} -.container:after{clear:both;} -.container-fluid{position:relative;min-width:940px;padding-left:20px;padding-right:20px;zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";zoom:1;} -.container-fluid:after{clear:both;} -.container-fluid>.sidebar{position:absolute;top:0;left:20px;width:220px;} -.container-fluid>.content{margin-left:240px;} -a{color:#0069d6;text-decoration:none;line-height:inherit;font-weight:inherit;}a:hover{color:#00438a;text-decoration:underline;} -.pull-right{float:right;} -.pull-left{float:left;} -.hide{display:none;} -.show{display:block;} -.row{zoom:1;margin-left:-20px;}.row:before,.row:after{display:table;content:"";zoom:1;} -.row:after{clear:both;} -.row>[class*="span"]{display:inline;float:left;margin-left:20px;} -.span1{width:40px;} -.span2{width:100px;} -.span3{width:160px;} -.span4{width:220px;} -.span5{width:280px;} -.span6{width:340px;} -.span7{width:400px;} -.span8{width:460px;} -.span9{width:520px;} -.span10{width:580px;} -.span11{width:640px;} -.span12{width:700px;} -.span13{width:760px;} -.span14{width:820px;} -.span15{width:880px;} -.span16{width:940px;} -.span17{width:1000px;} -.span18{width:1060px;} -.span19{width:1120px;} -.span20{width:1180px;} -.span21{width:1240px;} -.span22{width:1300px;} -.span23{width:1360px;} -.span24{width:1420px;} -.row>.offset1{margin-left:80px;} -.row>.offset2{margin-left:140px;} -.row>.offset3{margin-left:200px;} -.row>.offset4{margin-left:260px;} -.row>.offset5{margin-left:320px;} -.row>.offset6{margin-left:380px;} -.row>.offset7{margin-left:440px;} -.row>.offset8{margin-left:500px;} -.row>.offset9{margin-left:560px;} -.row>.offset10{margin-left:620px;} -.row>.offset11{margin-left:680px;} -.row>.offset12{margin-left:740px;} -.span-one-third{width:300px;} -.span-two-thirds{width:620px;} -.row>.offset-one-third{margin-left:340px;} -.row>.offset-two-thirds{margin-left:660px;} -p{font-size:13px;font-weight:normal;line-height:18px;margin-bottom:9px;}p small{font-size:11px;color:#bfbfbf;} -h1,h2,h3,h4,h5,h6{font-weight:bold;color:#404040;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#bfbfbf;} -h1{margin-bottom:18px;font-size:30px;line-height:36px;}h1 small{font-size:18px;} -h2{font-size:24px;line-height:36px;}h2 small{font-size:14px;} -h3,h4,h5,h6{line-height:36px;} -h3{font-size:18px;}h3 small{font-size:14px;} -h4{font-size:16px;}h4 small{font-size:12px;} -h5{font-size:14px;} -h6{font-size:13px;color:#bfbfbf;text-transform:uppercase;} -ul,ol{margin:0 0 18px 25px;} -ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} -ul{list-style:disc;} -ol{list-style:decimal;} -li{line-height:18px;color:#808080;} -ul.unstyled{list-style:none;margin-left:0;} -dl{margin-bottom:18px;}dl dt,dl dd{line-height:18px;} -dl dt{font-weight:bold;} -dl dd{margin-left:9px;} -hr{margin:20px 0 19px;border:0;border-bottom:1px solid #eee;} -strong{font-style:inherit;font-weight:bold;} -em{font-style:italic;font-weight:inherit;line-height:inherit;} -.muted{color:#bfbfbf;} -blockquote{margin-bottom:18px;border-left:5px solid #eee;padding-left:15px;}blockquote p{font-size:14px;font-weight:300;line-height:18px;margin-bottom:0;} -blockquote small{display:block;font-size:12px;font-weight:300;line-height:18px;color:#bfbfbf;}blockquote small:before{content:'\2014 \00A0';} -address{display:block;line-height:18px;margin-bottom:18px;} -code,pre{font-family:Monaco, Andale Mono, Courier New, monospace;font-size:12px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -code{color:rgba(0, 0, 0, 0.75);} -pre{background-color:#f5f5f5;display:block;padding:8.5px;margin:0 0 18px;line-height:18px;font-size:12px;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;white-space:pre;white-space:pre-wrap;word-wrap:break-word;} -form{margin-bottom:18px;} -fieldset{margin-bottom:18px;padding-top:18px;}fieldset legend{display:block;padding-left:150px;font-size:19.5px;line-height:1;color:#404040;*padding:0 0 5px 145px;*line-height:1.5;} -form .clearfix{margin-bottom:18px;zoom:1;}form .clearfix:before,form .clearfix:after{display:table;content:"";zoom:1;} -form .clearfix:after{clear:both;} -label,input,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:normal;} -label{padding-top:6px;font-size:13px;line-height:18px;float:left;width:130px;text-align:right;color:#404040;} -form .input{margin-left:150px;} -input[type=checkbox],input[type=radio]{cursor:pointer;} -input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;font-size:13px;line-height:18px;color:#808080;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -select{padding:initial;} -input[type=checkbox],input[type=radio]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:none;} -input[type=file]{background-color:#ffffff;padding:initial;border:initial;line-height:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -input[type=button],input[type=reset],input[type=submit]{width:auto;height:auto;} -select,input[type=file]{height:27px;*height:auto;line-height:27px;*margin-top:4px;} -select[multiple]{height:inherit;background-color:#ffffff;} -textarea{height:auto;} -.uneditable-input{background-color:#ffffff;display:block;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} -:-moz-placeholder{color:#bfbfbf;} -::-webkit-input-placeholder{color:#bfbfbf;} -input,textarea{-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);} -input:focus,textarea:focus{outline:0;border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);} -input[type=file]:focus,input[type=checkbox]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:1px dotted #666;} -form .clearfix.error>label,form .clearfix.error .help-block,form .clearfix.error .help-inline{color:#b94a48;} -form .clearfix.error input,form .clearfix.error textarea{color:#b94a48;border-color:#ee5f5b;}form .clearfix.error input:focus,form .clearfix.error textarea:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;} -form .clearfix.error .input-prepend .add-on,form .clearfix.error .input-append .add-on{color:#b94a48;background-color:#fce6e6;border-color:#b94a48;} -form .clearfix.warning>label,form .clearfix.warning .help-block,form .clearfix.warning .help-inline{color:#c09853;} -form .clearfix.warning input,form .clearfix.warning textarea{color:#c09853;border-color:#ccae64;}form .clearfix.warning input:focus,form .clearfix.warning textarea:focus{border-color:#be9a3f;-webkit-box-shadow:0 0 6px #e5d6b1;-moz-box-shadow:0 0 6px #e5d6b1;box-shadow:0 0 6px #e5d6b1;} -form .clearfix.warning .input-prepend .add-on,form .clearfix.warning .input-append .add-on{color:#c09853;background-color:#d2b877;border-color:#c09853;} -form .clearfix.success>label,form .clearfix.success .help-block,form .clearfix.success .help-inline{color:#468847;} -form .clearfix.success input,form .clearfix.success textarea{color:#468847;border-color:#57a957;}form .clearfix.success input:focus,form .clearfix.success textarea:focus{border-color:#458845;-webkit-box-shadow:0 0 6px #9acc9a;-moz-box-shadow:0 0 6px #9acc9a;box-shadow:0 0 6px #9acc9a;} -form .clearfix.success .input-prepend .add-on,form .clearfix.success .input-append .add-on{color:#468847;background-color:#bcddbc;border-color:#468847;} -.input-mini,input.mini,textarea.mini,select.mini{width:60px;} -.input-small,input.small,textarea.small,select.small{width:90px;} -.input-medium,input.medium,textarea.medium,select.medium{width:150px;} -.input-large,input.large,textarea.large,select.large{width:210px;} -.input-xlarge,input.xlarge,textarea.xlarge,select.xlarge{width:270px;} -.input-xxlarge,input.xxlarge,textarea.xxlarge,select.xxlarge{width:530px;} -textarea.xxlarge{overflow-y:auto;} -input.span1,textarea.span1{display:inline-block;float:none;width:30px;margin-left:0;} -input.span2,textarea.span2{display:inline-block;float:none;width:90px;margin-left:0;} -input.span3,textarea.span3{display:inline-block;float:none;width:150px;margin-left:0;} -input.span4,textarea.span4{display:inline-block;float:none;width:210px;margin-left:0;} -input.span5,textarea.span5{display:inline-block;float:none;width:270px;margin-left:0;} -input.span6,textarea.span6{display:inline-block;float:none;width:330px;margin-left:0;} -input.span7,textarea.span7{display:inline-block;float:none;width:390px;margin-left:0;} -input.span8,textarea.span8{display:inline-block;float:none;width:450px;margin-left:0;} -input.span9,textarea.span9{display:inline-block;float:none;width:510px;margin-left:0;} -input.span10,textarea.span10{display:inline-block;float:none;width:570px;margin-left:0;} -input.span11,textarea.span11{display:inline-block;float:none;width:630px;margin-left:0;} -input.span12,textarea.span12{display:inline-block;float:none;width:690px;margin-left:0;} -input.span13,textarea.span13{display:inline-block;float:none;width:750px;margin-left:0;} -input.span14,textarea.span14{display:inline-block;float:none;width:810px;margin-left:0;} -input.span15,textarea.span15{display:inline-block;float:none;width:870px;margin-left:0;} -input.span16,textarea.span16{display:inline-block;float:none;width:930px;margin-left:0;} -input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;} -.actions{background:#f5f5f5;margin-top:18px;margin-bottom:18px;padding:17px 20px 18px 150px;border-top:1px solid #ddd;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;}.actions .secondary-action{float:right;}.actions .secondary-action a{line-height:30px;}.actions .secondary-action a:hover{text-decoration:underline;} -.help-inline,.help-block{font-size:13px;line-height:18px;color:#bfbfbf;} -.help-inline{padding-left:5px;*position:relative;*top:-5px;} -.help-block{display:block;max-width:600px;} -.inline-inputs{color:#808080;}.inline-inputs span{padding:0 2px 0 1px;} -.input-prepend input,.input-append input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} -.input-prepend .add-on,.input-append .add-on{position:relative;background:#f5f5f5;border:1px solid #ccc;z-index:2;float:left;display:block;width:auto;min-width:16px;height:18px;padding:4px 4px 4px 5px;margin-right:-1px;font-weight:normal;line-height:18px;color:#bfbfbf;text-align:center;text-shadow:0 1px 0 #ffffff;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-prepend .active,.input-append .active{background:#a9dba9;border-color:#46a546;} -.input-prepend .add-on{*margin-top:1px;} -.input-append input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} -.input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:0;margin-left:-1px;} -.inputs-list{margin:0 0 5px;width:100%;}.inputs-list li{display:block;padding:0;width:100%;} -.inputs-list label{display:block;float:none;width:auto;padding:0;margin-left:20px;line-height:18px;text-align:left;white-space:normal;}.inputs-list label strong{color:#808080;} -.inputs-list label small{font-size:11px;font-weight:normal;} -.inputs-list .inputs-list{margin-left:25px;margin-bottom:10px;padding-top:0;} -.inputs-list:first-child{padding-top:6px;} -.inputs-list li+li{padding-top:2px;} -.inputs-list input[type=radio],.inputs-list input[type=checkbox]{margin-bottom:0;margin-left:-20px;float:left;} -.form-stacked{padding-left:20px;}.form-stacked fieldset{padding-top:9px;} -.form-stacked legend{padding-left:0;} -.form-stacked label{display:block;float:none;width:auto;font-weight:bold;text-align:left;line-height:20px;padding-top:0;} -.form-stacked .clearfix{margin-bottom:9px;}.form-stacked .clearfix div.input{margin-left:0;} -.form-stacked .inputs-list{margin-bottom:0;}.form-stacked .inputs-list li{padding-top:0;}.form-stacked .inputs-list li label{font-weight:normal;padding-top:0;} -.form-stacked div.clearfix.error{padding-top:10px;padding-bottom:10px;padding-left:10px;margin-top:0;margin-left:-10px;} -.form-stacked .actions{margin-left:-20px;padding-left:20px;} -table{width:100%;margin-bottom:18px;padding:0;font-size:13px;border-collapse:collapse;}table th,table td{padding:10px 10px 9px;line-height:18px;text-align:left;} -table th{padding-top:9px;font-weight:bold;vertical-align:middle;} -table td{vertical-align:top;border-top:1px solid #ddd;} -table tbody th{border-top:1px solid #ddd;vertical-align:top;} -.condensed-table th,.condensed-table td{padding:5px 5px 4px;} -.bordered-table{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.bordered-table th+th,.bordered-table td+td,.bordered-table th+td{border-left:1px solid #ddd;} -.bordered-table thead tr:first-child th:first-child,.bordered-table tbody tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;} -.bordered-table thead tr:first-child th:last-child,.bordered-table tbody tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;} -.bordered-table tbody tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;} -.bordered-table tbody tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;} -table .span1{width:20px;} -table .span2{width:60px;} -table .span3{width:100px;} -table .span4{width:140px;} -table .span5{width:180px;} -table .span6{width:220px;} -table .span7{width:260px;} -table .span8{width:300px;} -table .span9{width:340px;} -table .span10{width:380px;} -table .span11{width:420px;} -table .span12{width:460px;} -table .span13{width:500px;} -table .span14{width:540px;} -table .span15{width:580px;} -table .span16{width:620px;} -.zebra-striped tbody tr:nth-child(odd) td,.zebra-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} -.zebra-striped tbody tr:hover td,.zebra-striped tbody tr:hover th{background-color:#f5f5f5;} -table .header{cursor:pointer;}table .header:after{content:"";float:right;margin-top:7px;border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:hidden;} -table .headerSortUp,table .headerSortDown{background-color:rgba(141, 192, 219, 0.25);text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);} -table .header:hover:after{visibility:visible;} -table .headerSortDown:after,table .headerSortDown:hover:after{visibility:visible;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;} -table .headerSortUp:after{border-bottom:none;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;visibility:visible;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;} -table .blue{color:#049cdb;border-bottom-color:#049cdb;} -table .headerSortUp.blue,table .headerSortDown.blue{background-color:#ade6fe;} -table .green{color:#46a546;border-bottom-color:#46a546;} -table .headerSortUp.green,table .headerSortDown.green{background-color:#cdeacd;} -table .red{color:#9d261d;border-bottom-color:#9d261d;} -table .headerSortUp.red,table .headerSortDown.red{background-color:#f4c8c5;} -table .yellow{color:#ffc40d;border-bottom-color:#ffc40d;} -table .headerSortUp.yellow,table .headerSortDown.yellow{background-color:#fff6d9;} -table .orange{color:#f89406;border-bottom-color:#f89406;} -table .headerSortUp.orange,table .headerSortDown.orange{background-color:#fee9cc;} -table .purple{color:#7a43b6;border-bottom-color:#7a43b6;} -table .headerSortUp.purple,table .headerSortDown.purple{background-color:#e2d5f0;} -.topbar{height:40px;position:fixed;top:0;left:0;right:0;z-index:10000;overflow:visible;}.topbar a{color:#bfbfbf;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);} -.topbar h3 a:hover,.topbar .brand:hover,.topbar ul .active>a{background-color:#333;background-color:rgba(255, 255, 255, 0.05);color:#ffffff;text-decoration:none;} -.topbar h3{position:relative;} -.topbar h3 a,.topbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;color:#ffffff;font-size:20px;font-weight:200;line-height:1;} -.topbar p{margin:0;line-height:40px;}.topbar p a:hover{background-color:transparent;color:#ffffff;} -.topbar form{float:left;margin:5px 0 0 0;position:relative;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} -.topbar form.pull-right{float:right;} -.topbar input{background-color:#444;background-color:rgba(255, 255, 255, 0.3);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:normal;font-weight:13px;line-height:1;padding:4px 9px;color:#ffffff;color:rgba(255, 255, 255, 0.75);border:1px solid #111;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.topbar input:-moz-placeholder{color:#e6e6e6;} -.topbar input::-webkit-input-placeholder{color:#e6e6e6;} -.topbar input:hover{background-color:#bfbfbf;background-color:rgba(255, 255, 255, 0.5);color:#ffffff;} -.topbar input:focus,.topbar input.focused{outline:0;background-color:#ffffff;color:#404040;text-shadow:0 1px 0 #ffffff;border:0;padding:5px 10px;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);} -.topbar-inner,.topbar .fill{background-color:#222;background-color:#222222;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);} -.topbar div>ul,.nav{display:block;float:left;margin:0 10px 0 0;position:relative;left:0;}.topbar div>ul>li,.nav>li{display:block;float:left;} -.topbar div>ul a,.nav a{display:block;float:none;padding:10px 10px 11px;line-height:19px;text-decoration:none;}.topbar div>ul a:hover,.nav a:hover{color:#ffffff;text-decoration:none;} -.topbar div>ul .active>a,.nav .active>a{background-color:#222;background-color:rgba(0, 0, 0, 0.5);} -.topbar div>ul.secondary-nav,.nav.secondary-nav{float:right;margin-left:10px;margin-right:0;}.topbar div>ul.secondary-nav .menu-dropdown,.nav.secondary-nav .menu-dropdown,.topbar div>ul.secondary-nav .dropdown-menu,.nav.secondary-nav .dropdown-menu{right:0;border:0;} -.topbar div>ul a.menu:hover,.nav a.menu:hover,.topbar div>ul li.open .menu,.nav li.open .menu,.topbar div>ul .dropdown-toggle:hover,.nav .dropdown-toggle:hover,.topbar div>ul .dropdown.open .dropdown-toggle,.nav .dropdown.open .dropdown-toggle{background:#444;background:rgba(255, 255, 255, 0.05);} -.topbar div>ul .menu-dropdown,.nav .menu-dropdown,.topbar div>ul .dropdown-menu,.nav .dropdown-menu{background-color:#333;}.topbar div>ul .menu-dropdown a.menu,.nav .menu-dropdown a.menu,.topbar div>ul .dropdown-menu a.menu,.nav .dropdown-menu a.menu,.topbar div>ul .menu-dropdown .dropdown-toggle,.nav .menu-dropdown .dropdown-toggle,.topbar div>ul .dropdown-menu .dropdown-toggle,.nav .dropdown-menu .dropdown-toggle{color:#ffffff;}.topbar div>ul .menu-dropdown a.menu.open,.nav .menu-dropdown a.menu.open,.topbar div>ul .dropdown-menu a.menu.open,.nav .dropdown-menu a.menu.open,.topbar div>ul .menu-dropdown .dropdown-toggle.open,.nav .menu-dropdown .dropdown-toggle.open,.topbar div>ul .dropdown-menu .dropdown-toggle.open,.nav .dropdown-menu .dropdown-toggle.open{background:#444;background:rgba(255, 255, 255, 0.05);} -.topbar div>ul .menu-dropdown li a,.nav .menu-dropdown li a,.topbar div>ul .dropdown-menu li a,.nav .dropdown-menu li a{color:#999;text-shadow:0 1px 0 rgba(0, 0, 0, 0.5);}.topbar div>ul .menu-dropdown li a:hover,.nav .menu-dropdown li a:hover,.topbar div>ul .dropdown-menu li a:hover,.nav .dropdown-menu li a:hover{background-color:#191919;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919));background-image:-moz-linear-gradient(top, #292929, #191919);background-image:-ms-linear-gradient(top, #292929, #191919);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919));background-image:-webkit-linear-gradient(top, #292929, #191919);background-image:-o-linear-gradient(top, #292929, #191919);background-image:linear-gradient(top, #292929, #191919);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0);color:#ffffff;} -.topbar div>ul .menu-dropdown .active a,.nav .menu-dropdown .active a,.topbar div>ul .dropdown-menu .active a,.nav .dropdown-menu .active a{color:#ffffff;} -.topbar div>ul .menu-dropdown .divider,.nav .menu-dropdown .divider,.topbar div>ul .dropdown-menu .divider,.nav .dropdown-menu .divider{background-color:#222;border-color:#444;} -.topbar ul .menu-dropdown li a,.topbar ul .dropdown-menu li a{padding:4px 15px;} -li.menu,.dropdown{position:relative;} -a.menu:after,.dropdown-toggle:after{width:0;height:0;display:inline-block;content:"↓";text-indent:-99999px;vertical-align:top;margin-top:8px;margin-left:4px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #ffffff;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} -.menu-dropdown,.dropdown-menu{background-color:#ffffff;float:left;display:none;position:absolute;top:40px;z-index:900;min-width:160px;max-width:220px;_width:160px;margin-left:0;margin-right:0;padding:6px 0;zoom:1;border-color:#999;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:0 1px 1px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.menu-dropdown li,.dropdown-menu li{float:none;display:block;background-color:none;} -.menu-dropdown .divider,.dropdown-menu .divider{height:1px;margin:5px 0;overflow:hidden;background-color:#eee;border-bottom:1px solid #ffffff;} -.topbar .dropdown-menu a,.dropdown-menu a{display:block;padding:4px 15px;clear:both;font-weight:normal;line-height:18px;color:#808080;text-shadow:0 1px 0 #ffffff;}.topbar .dropdown-menu a:hover,.dropdown-menu a:hover,.topbar .dropdown-menu a.hover,.dropdown-menu a.hover{background-color:#dddddd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd));background-image:-moz-linear-gradient(top, #eeeeee, #dddddd);background-image:-ms-linear-gradient(top, #eeeeee, #dddddd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #dddddd));background-image:-webkit-linear-gradient(top, #eeeeee, #dddddd);background-image:-o-linear-gradient(top, #eeeeee, #dddddd);background-image:linear-gradient(top, #eeeeee, #dddddd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0);color:#404040;text-decoration:none;-webkit-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);} -.open .menu,.dropdown.open .menu,.open .dropdown-toggle,.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);} -.open .menu-dropdown,.dropdown.open .menu-dropdown,.open .dropdown-menu,.dropdown.open .dropdown-menu{display:block;} -.tabs,.pills{margin:0 0 18px;padding:0;list-style:none;zoom:1;}.tabs:before,.pills:before,.tabs:after,.pills:after{display:table;content:"";zoom:1;} -.tabs:after,.pills:after{clear:both;} -.tabs>li,.pills>li{float:left;}.tabs>li>a,.pills>li>a{display:block;} -.tabs{border-color:#ddd;border-style:solid;border-width:0 0 1px;}.tabs>li{position:relative;margin-bottom:-1px;}.tabs>li>a{padding:0 15px;margin-right:2px;line-height:34px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.tabs>li>a:hover{text-decoration:none;background-color:#eee;border-color:#eee #eee #ddd;} -.tabs .active>a,.tabs .active>a:hover{color:#808080;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} -.tabs .menu-dropdown,.tabs .dropdown-menu{top:35px;border-width:1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;} -.tabs a.menu:after,.tabs .dropdown-toggle:after{border-top-color:#999;margin-top:15px;margin-left:5px;} -.tabs li.open.menu .menu,.tabs .open.dropdown .dropdown-toggle{border-color:#999;} -.tabs li.open a.menu:after,.tabs .dropdown.open .dropdown-toggle:after{border-top-color:#555;} -.pills a{margin:5px 3px 5px 0;padding:0 15px;line-height:30px;text-shadow:0 1px 1px #ffffff;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}.pills a:hover{color:#ffffff;text-decoration:none;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);background-color:#00438a;} -.pills .active a{color:#ffffff;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);background-color:#0069d6;} -.pills-vertical>li{float:none;} -.tab-content>.tab-pane,.pill-content>.pill-pane,.tab-content>div,.pill-content>div{display:none;} -.tab-content>.active,.pill-content>.active{display:block;} -.breadcrumb{padding:7px 14px;margin:0 0 18px;background-color:#f5f5f5;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5));background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;} -.breadcrumb .divider{padding:0 5px;color:#bfbfbf;} -.breadcrumb .active a{color:#404040;} -.hero-unit{background-color:#f5f5f5;margin-bottom:30px;padding:60px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;} -.hero-unit p{font-size:18px;font-weight:200;line-height:27px;} -footer{margin-top:17px;padding-top:17px;border-top:1px solid #eee;} -.page-header{margin-bottom:17px;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}.page-header h1{margin-bottom:8px;} -.btn.danger,.alert-message.danger,.btn.danger:hover,.alert-message.danger:hover,.btn.error,.alert-message.error,.btn.error:hover,.alert-message.error:hover,.btn.success,.alert-message.success,.btn.success:hover,.alert-message.success:hover,.btn.info,.alert-message.info,.btn.info:hover,.alert-message.info:hover{color:#ffffff;} -.btn .close,.alert-message .close{font-family:Arial,sans-serif;line-height:18px;} -.btn.danger,.alert-message.danger,.btn.error,.alert-message.error{background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);} -.btn.success,.alert-message.success{background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);} -.btn.info,.alert-message.info{background-color:#339bb9;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#339bb9 #339bb9 #22697d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);} -.btn{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-webkit-transition:0.1s linear all;-moz-transition:0.1s linear all;-ms-transition:0.1s linear all;-o-transition:0.1s linear all;transition:0.1s linear all;}.btn:hover{background-position:0 -15px;color:#333;text-decoration:none;} -.btn:focus{outline:1px dotted #666;} -.btn.primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);} -.btn.active,.btn:active{-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);} -.btn.disabled{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn[disabled]{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} -.btn.large{font-size:15px;line-height:normal;padding:9px 14px 9px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} -.btn.small{padding:7px 9px 7px;font-size:11px;} -:root .alert-message,:root .btn{border-radius:0 \0;} -button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0;} -.close{float:right;color:#000000;font-size:20px;font-weight:bold;line-height:13.5px;text-shadow:0 1px 0 #ffffff;filter:alpha(opacity=25);-khtml-opacity:0.25;-moz-opacity:0.25;opacity:0.25;}.close:hover{color:#000000;text-decoration:none;filter:alpha(opacity=40);-khtml-opacity:0.4;-moz-opacity:0.4;opacity:0.4;} -.alert-message{position:relative;padding:7px 15px;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);}.alert-message .close{margin-top:1px;*margin-top:0;} -.alert-message a{font-weight:bold;color:#404040;} -.alert-message.danger p a,.alert-message.error p a,.alert-message.success p a,.alert-message.info p a{color:#ffffff;} -.alert-message h5{line-height:18px;} -.alert-message p{margin-bottom:0;} -.alert-message div{margin-top:5px;margin-bottom:2px;line-height:28px;} -.alert-message .btn{-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);} -.alert-message.block-message{background-image:none;background-color:#fdf5d9;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);padding:14px;border-color:#fceec1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}.alert-message.block-message ul,.alert-message.block-message p{margin-right:30px;} -.alert-message.block-message ul{margin-bottom:0;} -.alert-message.block-message li{color:#404040;} -.alert-message.block-message .alert-actions{margin-top:5px;} -.alert-message.block-message.error,.alert-message.block-message.success,.alert-message.block-message.info{color:#404040;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} -.alert-message.block-message.error{background-color:#fddfde;border-color:#fbc7c6;} -.alert-message.block-message.success{background-color:#d1eed1;border-color:#bfe7bf;} -.alert-message.block-message.info{background-color:#ddf4fb;border-color:#c6edf9;} -.alert-message.block-message.danger p a,.alert-message.block-message.error p a,.alert-message.block-message.success p a,.alert-message.block-message.info p a{color:#404040;} -.pagination{height:36px;margin:18px 0;}.pagination ul{float:left;margin:0;border:1px solid #ddd;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} -.pagination li{display:inline;} -.pagination a{float:left;padding:0 14px;line-height:34px;border-right:1px solid;border-right-color:#ddd;border-right-color:rgba(0, 0, 0, 0.15);*border-right-color:#ddd;text-decoration:none;} -.pagination a:hover,.pagination .active a{background-color:#c7eefe;} -.pagination .disabled a,.pagination .disabled a:hover{background-color:transparent;color:#bfbfbf;} -.pagination .next a{border:0;} -.well{background-color:#f5f5f5;margin-bottom:20px;padding:19px;min-height:20px;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} -.modal-backdrop{background-color:#000000;position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;}.modal-backdrop.fade{opacity:0;} -.modal-backdrop,.modal-backdrop.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;} -.modal{position:fixed;top:50%;left:50%;z-index:11000;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal .close{margin-top:7px;} -.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} -.modal.fade.in{top:50%;} -.modal-header{border-bottom:1px solid #eee;padding:5px 15px;} -.modal-body{padding:15px;} -.modal-body form{margin-bottom:0;} -.modal-footer{background-color:#f5f5f5;padding:14px 15px 15px;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;zoom:1;margin-bottom:0;}.modal-footer:before,.modal-footer:after{display:table;content:"";zoom:1;} -.modal-footer:after{clear:both;} -.modal-footer .btn{float:right;margin-left:5px;} -.modal .popover,.modal .twipsy{z-index:12000;} -.twipsy{display:block;position:absolute;visibility:visible;padding:5px;font-size:11px;z-index:1000;filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}.twipsy.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;} -.twipsy.above .twipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} -.twipsy.left .twipsy-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} -.twipsy.below .twipsy-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} -.twipsy.right .twipsy-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} -.twipsy-inner{padding:3px 8px;background-color:#000000;color:white;text-align:center;max-width:200px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.twipsy-arrow{position:absolute;width:0;height:0;} -.popover{position:absolute;top:0;left:0;z-index:1000;padding:5px;display:none;}.popover.above .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} -.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} -.popover.below .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} -.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} -.popover .arrow{position:absolute;width:0;height:0;} -.popover .inner{background:#000000;background:rgba(0, 0, 0, 0.8);padding:3px;overflow:hidden;width:280px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);} -.popover .title{background-color:#f5f5f5;padding:9px 15px;line-height:1;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;border-bottom:1px solid #eee;} -.popover .content{background-color:#ffffff;padding:14px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover .content p,.popover .content ul,.popover .content ol{margin-bottom:0;} -.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;} -.label{padding:1px 3px 2px;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;white-space:nowrap;background-color:#bfbfbf;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.label.important{background-color:#c43c35;} -.label.warning{background-color:#f89406;} -.label.success{background-color:#46a546;} -.label.notice{background-color:#62cffc;} -.media-grid{margin-left:-20px;margin-bottom:0;zoom:1;}.media-grid:before,.media-grid:after{display:table;content:"";zoom:1;} -.media-grid:after{clear:both;} -.media-grid li{display:inline;} -.media-grid a{float:left;padding:4px;margin:0 0 18px 20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}.media-grid a img{display:block;} -.media-grid a:hover{border-color:#0069d6;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} diff --git a/css/processing-js.css b/css/processing-js.css deleted file mode 100644 index 74edd3a..0000000 --- a/css/processing-js.css +++ /dev/null @@ -1,239 +0,0 @@ -.container { - box-shadow: 0px 0px 30px #888; - margin-bottom: 4em; -} - -.header { - background-color: #0077B5; - line-height: 0; -} - -.tagline { - padding-left: 1em; - color: #0077B5; - font-family: "lucida console", verdana; - line-height: 2; -} - -/* The amount of CSS needed for the navbar is terrifying. I am sorry. */ -.navbar { - background-color: #000000; - line-height: 0; - position: relative; - width: 940px; - height: 78px; -} - -.navbar ul { - list-style: none outside none; - position: absolute; - bottom: 0; - left: 1em; - margin: 0; -} - -.navbar ul li { - display: inline; - position: relative; - line-height: 1.2; -} - -.navbar ul li a span { - position: relative; - color: #909090; - background-color: white; - background-image: -moz-linear-gradient(white, rgb(213, 213, 213)); - background-image: -webkit-linear-gradient(white, rgb(213, 213, 213)); - background-image: -o-linear-gradient(white, rgb(213, 213, 213)); - background-image: -ms-linear-gradient(white, rgb(213, 213, 213)); - background-image: linear-gradient(white, rgb(213, 213, 213)); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#d5d5d5'); - padding: 0.25em 0.75em; - bottom: 0.25em; - margin: 0 0.1em; - border-radius: 0.3em 0.3em 0 0; -} - -.navbar ul li a:hover, .navbar ul li a:focus { - text-decoration: none; -} - -.navbar ul li a:hover span, .navbar ul li a:focus span { - position: relative; - color: #00a7fd; - padding-bottom: 1em; - bottom: 1em; -} - -.navbar ul a.selected { - text-decoration: none; -} - -.navbar ul a.selected span { - position: relative; - color: #00a7fd; - background-color: white; - background-image: none; - padding-bottom: 1em; - bottom: 1em; -} - -.navbar .viewsource { - color: white; - position: absolute; - bottom: 1em; - right: 0.5em; -} - -.footer { - font-size: 0.85em; - color: #aaa; - padding-left: 1em; -} - -a { - color: #0075B2; -} - -a:hover, a:focus { - color: #00a7fd; -} - -.page { - padding: 2em 0 2em 2em; -} - -.home-exhibition { - float: left; - width: 190px; -} - -.home-exhibition span a img { - border-radius: 0.5em; -} - -.sidebar { - border-left: 1px dotted #0073AF; - padding-left: 1.3em; -} - -.sidebar h3 a { - text-decoration: none; -} - -.sidebar ul li { - list-style-type: circle; - color: #0075B2; -} - -.sidebar ul li:hover { - list-style-type: disc; - color: #00a7fd; -} - -.blog-archives li abbr { - float: right; -} - -.exhibition span { - width: 210px; - height: 250px; - float: left; -} - -.exhibition span a img { - border-radius: 0.5em; -} - -.exhibition span p { - width: 180px; -} - -.reference .category { - margin-bottom: 2em; -} - -.reference .category a { - display: block; -} - -.reference .category a.warning { - color: red; -} - -.reference .category b { - display: block; - margin-bottom: 0.5em; -} - -.reference .category h5 { - font-style: italic; - font-weight: normal; - font-size: 0.9em; - line-height: 2em; - margin-top:0.5em; -} - -.example200px { - float: right; - border-radius: 5px; - padding: 5px; - border: 1px solid #999999; - box-shadow: 0px 0px 5px #999; - margin-left: 10px; -} - -.demo-screens .section.wild > a { - margin-right: 0px; - margin-bottom: 1em; - height: auto; - float: none; -} - -.demo-screens .section > a span { - display: block; -} - -.demo-screens .section > a { - display: block; - float: left; - width: 200px; - height: 300px; - margin-right: 50px; -} - -.clear { - clear: both; - height: 0; - line-height: 0; -} - -.learning-demo canvas { - border-radius: 5px; - padding: 5px; - border: 1px solid #999999; - box-shadow: 0px 0px 5px #999; -} - -.tweet_list { - border-radius: 0.5em; - margin: 0; - overflow-y: hidden; - background-color: #E0E0E0; -} - -ul.tweet_list li,ul.tweet_list li:hover { - color: #404040; -} - -.tweet_list li { - padding: 0.5em; -} - -.tweet_list .tweet_even { - background-color: #EFEFEF; -} - -.tweet_list .tweet_avatar { - padding-right: .5em; float: left; -} diff --git a/css/syntax.css b/css/syntax.css deleted file mode 100644 index 2774b76..0000000 --- a/css/syntax.css +++ /dev/null @@ -1,60 +0,0 @@ -.highlight { background: #ffffff; } -.highlight .c { color: #999988; font-style: italic } /* Comment */ -.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ -.highlight .k { font-weight: bold } /* Keyword */ -.highlight .o { font-weight: bold } /* Operator */ -.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ -.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ -.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #aa0000 } /* Generic.Error */ -.highlight .gh { color: #999999 } /* Generic.Heading */ -.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ -.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ -.highlight .go { color: #888888 } /* Generic.Output */ -.highlight .gp { color: #555555 } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #aaaaaa } /* Generic.Subheading */ -.highlight .gt { color: #aa0000 } /* Generic.Traceback */ -.highlight .kc { font-weight: bold } /* Keyword.Constant */ -.highlight .kd { font-weight: bold } /* Keyword.Declaration */ -.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ -.highlight .kr { font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ -.highlight .m { color: #009999 } /* Literal.Number */ -.highlight .s { color: #d14 } /* Literal.String */ -.highlight .na { color: #008080 } /* Name.Attribute */ -.highlight .nb { color: #0086B3 } /* Name.Builtin */ -.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ -.highlight .no { color: #008080 } /* Name.Constant */ -.highlight .ni { color: #800080 } /* Name.Entity */ -.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ -.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ -.highlight .nn { color: #555555 } /* Name.Namespace */ -.highlight .nt { color: #000080 } /* Name.Tag */ -.highlight .nv { color: #008080 } /* Name.Variable */ -.highlight .ow { font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mf { color: #009999 } /* Literal.Number.Float */ -.highlight .mh { color: #009999 } /* Literal.Number.Hex */ -.highlight .mi { color: #009999 } /* Literal.Number.Integer */ -.highlight .mo { color: #009999 } /* Literal.Number.Oct */ -.highlight .sb { color: #d14 } /* Literal.String.Backtick */ -.highlight .sc { color: #d14 } /* Literal.String.Char */ -.highlight .sd { color: #d14 } /* Literal.String.Doc */ -.highlight .s2 { color: #d14 } /* Literal.String.Double */ -.highlight .se { color: #d14 } /* Literal.String.Escape */ -.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ -.highlight .si { color: #d14 } /* Literal.String.Interpol */ -.highlight .sx { color: #d14 } /* Literal.String.Other */ -.highlight .sr { color: #009926 } /* Literal.String.Regex */ -.highlight .s1 { color: #d14 } /* Literal.String.Single */ -.highlight .ss { color: #990073 } /* Literal.String.Symbol */ -.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #008080 } /* Name.Variable.Class */ -.highlight .vg { color: #008080 } /* Name.Variable.Global */ -.highlight .vi { color: #008080 } /* Name.Variable.Instance */ -.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ diff --git a/download/_posts/2008-05-08-v0.0.0.html b/download/_posts/2008-05-08-v0.0.0.html deleted file mode 100644 index 1fd3b93..0000000 --- a/download/_posts/2008-05-08-v0.0.0.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Processing.js Original Release ---- - diff --git a/download/_posts/2010-01-02-v0.0.0.html b/download/_posts/2010-01-02-v0.0.0.html deleted file mode 100644 index 3ba8751..0000000 --- a/download/_posts/2010-01-02-v0.0.0.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Processing.js v0.0.0 ---- - diff --git a/download/_posts/2010-02-02-v0.4.0.html b/download/_posts/2010-02-02-v0.4.0.html deleted file mode 100644 index 017cc35..0000000 --- a/download/_posts/2010-02-02-v0.4.0.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Processing.js v0.4.0 ---- - diff --git a/download/_posts/2010-02-17-v0.5.0.html b/download/_posts/2010-02-17-v0.5.0.html deleted file mode 100644 index 489e18c..0000000 --- a/download/_posts/2010-02-17-v0.5.0.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.5.0 ---- - diff --git a/download/_posts/2010-02-26-v0.6.0.html b/download/_posts/2010-02-26-v0.6.0.html deleted file mode 100644 index b78c44e..0000000 --- a/download/_posts/2010-02-26-v0.6.0.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.6.0 ---- - diff --git a/download/_posts/2010-03-24-v0.7.0.html b/download/_posts/2010-03-24-v0.7.0.html deleted file mode 100644 index fd2b302..0000000 --- a/download/_posts/2010-03-24-v0.7.0.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.7.0 ---- - diff --git a/download/_posts/2010-03-25-v0.7.1.html b/download/_posts/2010-03-25-v0.7.1.html deleted file mode 100644 index 51fe2b0..0000000 --- a/download/_posts/2010-03-25-v0.7.1.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.7.1 ---- - diff --git a/download/_posts/2010-04-08-v0.8.0.html b/download/_posts/2010-04-08-v0.8.0.html deleted file mode 100644 index 8703ad2..0000000 --- a/download/_posts/2010-04-08-v0.8.0.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.8.0 ---- - diff --git a/download/_posts/2010-05-11-v0.9.0.html b/download/_posts/2010-05-11-v0.9.0.html deleted file mode 100644 index effdd18..0000000 --- a/download/_posts/2010-05-11-v0.9.0.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.9.0 ---- - diff --git a/download/_posts/2010-05-20-v0.9.1.html b/download/_posts/2010-05-20-v0.9.1.html deleted file mode 100644 index 0afe523..0000000 --- a/download/_posts/2010-05-20-v0.9.1.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.9.1 ---- - diff --git a/download/_posts/2010-06-15-v0.9.3.html b/download/_posts/2010-06-15-v0.9.3.html deleted file mode 100644 index 6b78a4f..0000000 --- a/download/_posts/2010-06-15-v0.9.3.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.9.3 ---- - diff --git a/download/_posts/2010-06-16-v0.9.4.html b/download/_posts/2010-06-16-v0.9.4.html deleted file mode 100644 index 0fbd8a8..0000000 --- a/download/_posts/2010-06-16-v0.9.4.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.9.4 ---- - diff --git a/download/_posts/2010-07-26-v0.9.6.html b/download/_posts/2010-07-26-v0.9.6.html deleted file mode 100644 index 3830369..0000000 --- a/download/_posts/2010-07-26-v0.9.6.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.9.6 ---- - diff --git a/download/_posts/2010-08-14-v0.9.7.html b/download/_posts/2010-08-14-v0.9.7.html deleted file mode 100644 index eebbac6..0000000 --- a/download/_posts/2010-08-14-v0.9.7.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v0.9.7 ---- - diff --git a/download/_posts/2010-11-28-v1.0.0.html b/download/_posts/2010-11-28-v1.0.0.html deleted file mode 100644 index 67e23bf..0000000 --- a/download/_posts/2010-11-28-v1.0.0.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v1.0.0 ---- - diff --git a/download/_posts/2011-02-27-v1.1.0.html b/download/_posts/2011-02-27-v1.1.0.html deleted file mode 100644 index 3b07ce6..0000000 --- a/download/_posts/2011-02-27-v1.1.0.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Processing.js v1.1.0 ---- - diff --git a/download/_posts/2011-06-02-v1.2.1.html b/download/_posts/2011-06-02-v1.2.1.html deleted file mode 100644 index aafc3ba..0000000 --- a/download/_posts/2011-06-02-v1.2.1.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Processing.js v1.2.1 ---- - diff --git a/download/_posts/2011-07-14-v1.2.3.html b/download/_posts/2011-07-14-v1.2.3.html deleted file mode 100644 index 6127ee4..0000000 --- a/download/_posts/2011-07-14-v1.2.3.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Processing.js v1.2.3 ---- - diff --git a/download/_posts/2011-08-23-v1.3.0.html b/download/_posts/2011-08-23-v1.3.0.html deleted file mode 100644 index a7ee76d..0000000 --- a/download/_posts/2011-08-23-v1.3.0.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Processing.js v1.3.0 ---- - diff --git a/download/_posts/2011-10-13-v1.3.6.html b/download/_posts/2011-10-13-v1.3.6.html deleted file mode 100644 index 07e4e1a..0000000 --- a/download/_posts/2011-10-13-v1.3.6.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Processing.js v1.3.6 ---- - diff --git a/download/_posts/2012-07-31-v1.4.0.html b/download/_posts/2012-07-31-v1.4.0.html deleted file mode 100644 index 2625c65..0000000 --- a/download/_posts/2012-07-31-v1.4.0.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Processing.js v1.4.0 ---- - diff --git a/download/_posts/2012-08-09-v1.4.1.html b/download/_posts/2012-08-09-v1.4.1.html deleted file mode 100644 index 0d66f94..0000000 --- a/download/_posts/2012-08-09-v1.4.1.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Processing.js v1.4.1 ---- - diff --git a/download/_posts/2014-03-25-v1.4.7.html b/download/_posts/2014-03-25-v1.4.7.html deleted file mode 100644 index 665074a..0000000 --- a/download/_posts/2014-03-25-v1.4.7.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Processing.js v1.4.7 ---- -
                                  -
                                • Development - processing.js v1.4.7
                                • -
                                • Production - processing.min.js v1.4.7
                                • -

                                  Alternatively, install through Bower by using bower install Processing.js

                                  diff --git a/download/_posts/2014-03-25-v1.4.8.html b/download/_posts/2014-03-25-v1.4.8.html deleted file mode 100644 index 773fb72..0000000 --- a/download/_posts/2014-03-25-v1.4.8.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Processing.js v1.4.8 ---- -
                                    -
                                  • Development - processing.js v1.4.8
                                  • -
                                  • Production - processing.min.js v1.4.8
                                  • -

                                    Alternatively, install through Bower by using bower install Processing.js

                                    diff --git a/download/_posts/2016-08-01-v1.6.0.html b/download/_posts/2016-08-01-v1.6.0.html deleted file mode 100644 index 96f6228..0000000 --- a/download/_posts/2016-08-01-v1.6.0.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Processing.js v1.6.0 ---- -
                                      -
                                    • Development - processing.js v1.6.0
                                    • -
                                    • Production - processing.min.js v1.6.0
                                    • -

                                      Alternatively, install through NPM by using npom install processing-js

                                      diff --git a/download/_posts/template.html b/download/_posts/template.html deleted file mode 100644 index ac80587..0000000 --- a/download/_posts/template.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Processing.js vversion ---- - diff --git a/download/archived.html b/download/archived.html deleted file mode 100644 index 5bd1fcc..0000000 --- a/download/archived.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default ---- -

                                      Download Archive

                                      - -

                                      Download older releases of Processing.js

                                      - -{% for old in site.categories.download offset:1 %} - -

                                      {{ old.title }}

                                      -

                                      Released {{ old.date | date_to_long_string }}

                                      -{{ old.content }} - -{% endfor %} diff --git a/download/index.html b/download/index.html deleted file mode 100644 index c68c4fe..0000000 --- a/download/index.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default ---- -{% assign current = site.categories.download.first %} -

                                      Download {{ current.title }}

                                      - -

                                      Download the latest Processing.js from NPM.

                                      - -

                                      Alternatively, download it directly from the Github code repository.

                                      - -Released {{ current.date | date_to_long_string }}

                                      - -{{ current.content }} - -

                                      Previous releases

                                      - -

                                      You can download older releases from our Download Archive -or our GitHub repository

                                      diff --git a/exhibition/_posts/2011-11-01-ui-dial.html b/exhibition/_posts/2011-11-01-ui-dial.html deleted file mode 100644 index 11f334a..0000000 --- a/exhibition/_posts/2011-11-01-ui-dial.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      UI Dial with Ajax
                                      by
                                      -

                                      Alistair MacDonald

                                      -

                                      This dial interface has magnetic snap points, and integrates with jQuery AJAX functions to load new content when turned

                                      -
                                      diff --git a/exhibition/_posts/2011-11-02-sparklines.html b/exhibition/_posts/2011-11-02-sparklines.html deleted file mode 100644 index d7d67bb..0000000 --- a/exhibition/_posts/2011-11-02-sparklines.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Sparklines
                                      by
                                      -

                                      Will Larson

                                      -

                                      An innovative script to visualize trends in data. Using a pop-up Canvas that can be fully customized for your site

                                      -
                                      diff --git a/exhibition/_posts/2011-11-03-tower-of-defense.html b/exhibition/_posts/2011-11-03-tower-of-defense.html deleted file mode 100644 index 328b855..0000000 --- a/exhibition/_posts/2011-11-03-tower-of-defense.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Tower of Defence
                                      by
                                      -

                                      Will Larson & Peter Burns

                                      -

                                      Will Larson has gone about revising the classic Tower Defense genre, porting it to the open web using Processing.js

                                      -
                                      diff --git a/exhibition/_posts/2011-11-04-mouse.html b/exhibition/_posts/2011-11-04-mouse.html deleted file mode 100644 index 05cc336..0000000 --- a/exhibition/_posts/2011-11-04-mouse.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Mouse Equalizer
                                      by
                                      -

                                      Alistair MacDonald

                                      -

                                      This mouse-driven visualization samples your the movement speed of your mouse and renders the data in the form of a graphic equalizer

                                      -
                                      diff --git a/exhibition/_posts/2011-11-05-wiki.html b/exhibition/_posts/2011-11-05-wiki.html deleted file mode 100644 index b178150..0000000 --- a/exhibition/_posts/2011-11-05-wiki.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Wiki Visualizations
                                      by
                                      -

                                      Matt Ryall

                                      -

                                      A small collection of animated visualizations which analyze wiki data using Processing.js

                                      -
                                      diff --git a/exhibition/_posts/2011-11-06-balldroppings.html b/exhibition/_posts/2011-11-06-balldroppings.html deleted file mode 100644 index c5d1141..0000000 --- a/exhibition/_posts/2011-11-06-balldroppings.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Ball Droppings
                                      by
                                      -

                                      Josh Nimoy

                                      -

                                      Turn your sound up. Draw lines on the black screen to bounce the balls. Enjoy the music

                                      -
                                      diff --git a/exhibition/_posts/2011-11-07-twitch.html b/exhibition/_posts/2011-11-07-twitch.html deleted file mode 100644 index f75292d..0000000 --- a/exhibition/_posts/2011-11-07-twitch.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      TWITCH
                                      by
                                      -

                                      Casey Reas

                                      -

                                      TWITCH is a series of minimal games using the mouse. How fast can you solve them all?

                                      -
                                      diff --git a/exhibition/_posts/2011-11-08-bittorrent.html b/exhibition/_posts/2011-11-08-bittorrent.html deleted file mode 100644 index c713378..0000000 --- a/exhibition/_posts/2011-11-08-bittorrent.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      BitTorrent Visalizations
                                      by
                                      -

                                      Chris Lee

                                      -

                                      A simplified BitTorrent visualization originally written by Abram Stern, updated by Jeff Atwood

                                      -
                                      diff --git a/exhibition/_posts/2011-11-09-askken.html b/exhibition/_posts/2011-11-09-askken.html deleted file mode 100644 index a63912d..0000000 --- a/exhibition/_posts/2011-11-09-askken.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Ask Ken
                                      by
                                      -

                                      Michael Aufreiter at Quasipartikel Labs

                                      -

                                      Visualization-based search engine

                                      -
                                      diff --git a/exhibition/_posts/2011-11-10-abstract.html b/exhibition/_posts/2011-11-10-abstract.html deleted file mode 100644 index 05dd8ba..0000000 --- a/exhibition/_posts/2011-11-10-abstract.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      ABSTRACT01js
                                      by
                                      -

                                      Marius Watz

                                      -

                                      Abstract01js is a reworking of an old 2D Processing sketch from 2003

                                      -
                                      diff --git a/exhibition/_posts/2011-11-11-facebook.html b/exhibition/_posts/2011-11-11-facebook.html deleted file mode 100644 index 8188a3e..0000000 --- a/exhibition/_posts/2011-11-11-facebook.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Facebook Privacy
                                      by
                                      -

                                      Matt McKeon

                                      -

                                      Visualization based on the evolution of privacy on Facebook

                                      -
                                      diff --git a/exhibition/_posts/2011-11-12-inbox.html b/exhibition/_posts/2011-11-12-inbox.html deleted file mode 100644 index 3f9b58d..0000000 --- a/exhibition/_posts/2011-11-12-inbox.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Galactic Inbox
                                      by
                                      -

                                      Paul at Monocubed

                                      -

                                      This is a keyboard-driven game written by the GMail team

                                      -
                                      diff --git a/exhibition/_posts/2011-11-13-wordpress.html b/exhibition/_posts/2011-11-13-wordpress.html deleted file mode 100644 index 19b7c9f..0000000 --- a/exhibition/_posts/2011-11-13-wordpress.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Wordpress plugin
                                      by
                                      -

                                      Keyvan Minoukadeh

                                      -

                                      Include Processing.js sketches into your WordPress blog posts

                                      -
                                      diff --git a/exhibition/_posts/2011-11-14-drupal.html b/exhibition/_posts/2011-11-14-drupal.html deleted file mode 100644 index a368919..0000000 --- a/exhibition/_posts/2011-11-14-drupal.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Drupal plugin
                                      by
                                      -

                                      Matthew Radcliffe

                                      -

                                      Include Processing.js sketches in your Drupal modules

                                      -
                                      diff --git a/exhibition/_posts/2011-11-15-asteroids.html b/exhibition/_posts/2011-11-15-asteroids.html deleted file mode 100644 index c2a3c17..0000000 --- a/exhibition/_posts/2011-11-15-asteroids.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Asteroids
                                      by
                                      -

                                      Benjamin Blundell

                                      -

                                      This modern day re-work of Asteroids uses Processing.js to bring this portfolio to life

                                      -
                                      diff --git a/exhibition/_posts/2011-11-16-jsnake.html b/exhibition/_posts/2011-11-16-jsnake.html deleted file mode 100644 index 91272a3..0000000 --- a/exhibition/_posts/2011-11-16-jsnake.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      JSnake
                                      by
                                      -

                                      Anton Pirogov

                                      -

                                      A snake game implemented with Processing.js and jQuery, inspired by DeluxeSnake

                                      -
                                      diff --git a/exhibition/_posts/2011-11-17-gif-tower-defense.html b/exhibition/_posts/2011-11-17-gif-tower-defense.html deleted file mode 100644 index e76d77f..0000000 --- a/exhibition/_posts/2011-11-17-gif-tower-defense.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Gif Tower Defense
                                      by
                                      -

                                      Daniel Arellano Aliaga

                                      -

                                      It is a tower defense game implemented in Processing.js

                                      -
                                      diff --git a/exhibition/_posts/2011-11-18-letters.html b/exhibition/_posts/2011-11-18-letters.html deleted file mode 100644 index 5ecc77d..0000000 --- a/exhibition/_posts/2011-11-18-letters.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - -
                                      - Letter-pairs Analysis -

                                      by
                                      Martin Ignacio Bereciartua

                                      -

                                      Showing and displaying in realtime the number of times each pair of letters appears - in a given text.

                                      -
                                      \ No newline at end of file diff --git a/exhibition/_posts/2011-11-19-fizz-bloom.html b/exhibition/_posts/2011-11-19-fizz-bloom.html deleted file mode 100644 index 9f38089..0000000 --- a/exhibition/_posts/2011-11-19-fizz-bloom.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - -
                                      - Fizz -

                                      by
                                      Bloom

                                      -

                                      Fizz visualizes updates from your Facebook or Twitter account.

                                      -
                                      diff --git a/exhibition/_posts/2011-11-20-virion.html b/exhibition/_posts/2011-11-20-virion.html deleted file mode 100644 index 6982596..0000000 --- a/exhibition/_posts/2011-11-20-virion.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - -
                                      - Virion -

                                      by
                                      Jonah Kagan, Varun Singh, Jonathan Koh, Charis Loke

                                      -

                                      A game written in Processing.js. Winner of Zynga's Hidden Agenda Facebook Game - Competition

                                      -
                                      diff --git a/exhibition/_posts/2011-11-21-kanji.html b/exhibition/_posts/2011-11-21-kanji.html deleted file mode 100644 index 8ac37f2..0000000 --- a/exhibition/_posts/2011-11-21-kanji.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Kanji Compositing
                                      by
                                      -

                                      Mike Kamermans

                                      -

                                      A web app for specifying kanji compositions

                                      -
                                      diff --git a/exhibition/_posts/2011-11-22-clearcongress.html b/exhibition/_posts/2011-11-22-clearcongress.html deleted file mode 100644 index a7dda4c..0000000 --- a/exhibition/_posts/2011-11-22-clearcongress.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Clear Congress Project
                                      by
                                      -

                                      Thomas Gibes

                                      -

                                      A real-time information visualization of the US Congress

                                      -
                                      diff --git a/exhibition/_posts/2011-11-23-bezierinfo.html b/exhibition/_posts/2011-11-23-bezierinfo.html deleted file mode 100644 index 16f3cb7..0000000 --- a/exhibition/_posts/2011-11-23-bezierinfo.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      A primer on Bezier curves
                                      by
                                      -

                                      Mike Kamermans

                                      -

                                      A comprehensive guide to the math behind bezier curves

                                      -
                                      diff --git a/exhibition/_posts/2011-11-24-tunealiser.html b/exhibition/_posts/2011-11-24-tunealiser.html deleted file mode 100644 index 2842261..0000000 --- a/exhibition/_posts/2011-11-24-tunealiser.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Tunealiser
                                      by
                                      -

                                      Brendan Ratliff

                                      -

                                      Tunealiser is a tool for making structural analysis notes along a multitrack timeline.

                                      -
                                      diff --git a/exhibition/_posts/2011-11-25-toxiclibs.html b/exhibition/_posts/2011-11-25-toxiclibs.html deleted file mode 100644 index b6b5af0..0000000 --- a/exhibition/_posts/2011-11-25-toxiclibs.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      toxiclibs.js
                                      by
                                      -

                                      Kyle Philips

                                      -

                                      Toxiclibs.js is an open-source computational design library

                                      -
                                      diff --git a/exhibition/_posts/2011-11-26-p5p.html b/exhibition/_posts/2011-11-26-p5p.html deleted file mode 100644 index d3e9def..0000000 --- a/exhibition/_posts/2011-11-26-p5p.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      P5P
                                      by
                                      -

                                      Beat Raess

                                      -

                                      P5P is a collection of generative sketches that you control.

                                      -
                                      diff --git a/exhibition/_posts/2011-11-27-animated-background.html b/exhibition/_posts/2011-11-27-animated-background.html deleted file mode 100644 index d07aefc..0000000 --- a/exhibition/_posts/2011-11-27-animated-background.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Animated background
                                      by
                                      -

                                      José Henrique Padovani

                                      -

                                      An animated background written in Processing.js

                                      -
                                      diff --git a/exhibition/_posts/2011-11-28-afl-flags.html b/exhibition/_posts/2011-11-28-afl-flags.html deleted file mode 100644 index 23087bb..0000000 --- a/exhibition/_posts/2011-11-28-afl-flags.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      AFL Flags
                                      by
                                      -

                                      Flink Labs

                                      -

                                      AFL Flags is an interactive visualisation showing the winners and losers from of the AFL and VFL premierships from 1897 until 2010.

                                      -
                                      diff --git a/exhibition/_posts/2011-11-29-twitter-flow.html b/exhibition/_posts/2011-11-29-twitter-flow.html deleted file mode 100644 index 299c81c..0000000 --- a/exhibition/_posts/2011-11-29-twitter-flow.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Twitter Flow
                                      by
                                      -

                                      Sandro Paganotti

                                      -

                                      Twitter Flow is an interactive visualization that shows tweets and sorts them into what language they're written in

                                      -
                                      diff --git a/exhibition/_posts/2011-11-30-coaltrace.html b/exhibition/_posts/2011-11-30-coaltrace.html deleted file mode 100644 index 927744e..0000000 --- a/exhibition/_posts/2011-11-30-coaltrace.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - -
                                      - coaltrace.js -

                                      by
                                      Trevor Bedford

                                      -

                                      Evolutionary simulation. Individuals reproduce and die leaving behind a trace of their ancestry.

                                      -
                                      \ No newline at end of file diff --git a/exhibition/_posts/2011-12-01-flocking.html b/exhibition/_posts/2011-12-01-flocking.html deleted file mode 100644 index 31abc85..0000000 --- a/exhibition/_posts/2011-12-01-flocking.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Flocking
                                      by
                                      -

                                      Harry Brundage

                                      -

                                      The math behind flocking algorithms

                                      -
                                      diff --git a/exhibition/_posts/2011-12-02-pewpew.html b/exhibition/_posts/2011-12-02-pewpew.html deleted file mode 100644 index 44d2b60..0000000 --- a/exhibition/_posts/2011-12-02-pewpew.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Pew Pew
                                      by
                                      -

                                      Nightmare

                                      -

                                      Retro Asteroids clone written in Processing.js

                                      -
                                      diff --git a/exhibition/_posts/2011-12-03-fotn.html b/exhibition/_posts/2011-12-03-fotn.html deleted file mode 100644 index a839d39..0000000 --- a/exhibition/_posts/2011-12-03-fotn.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Flight of the Navigator
                                      by
                                      -

                                      The Mozilla #audio team

                                      -

                                      Fight of the Navigator is a demo showcasing the power of WebGL and Audio API

                                      -
                                      diff --git a/exhibition/_posts/2011-12-04-coffeescript.html b/exhibition/_posts/2011-12-04-coffeescript.html deleted file mode 100644 index 80e3bc6..0000000 --- a/exhibition/_posts/2011-12-04-coffeescript.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      PJS in CoffeeScript
                                      by
                                      -

                                      David Guttman

                                      -

                                      A tutorial showing how to write Processing.js sketches in CoffeeScript, a language that is compiled into Javascript

                                      -
                                      diff --git a/exhibition/_posts/2011-12-15-andor.html b/exhibition/_posts/2011-12-15-andor.html deleted file mode 100644 index 735fbd4..0000000 --- a/exhibition/_posts/2011-12-15-andor.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      3D Sketches
                                      by
                                      -

                                      Andor Salga

                                      -

                                      A collection of 3D sketches by Processing.js' 3D developer

                                      -
                                      diff --git a/exhibition/_posts/2011-12-24-advent-2011.html b/exhibition/_posts/2011-12-24-advent-2011.html deleted file mode 100644 index 276b682..0000000 --- a/exhibition/_posts/2011-12-24-advent-2011.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      2011 Advent Calendar
                                      by
                                      -

                                      Nikolaus Gradwohl

                                      -

                                      An advent calendar built with Processing.js

                                      -
                                      diff --git a/exhibition/_posts/2011-12-25-circle-of-fifths.html b/exhibition/_posts/2011-12-25-circle-of-fifths.html deleted file mode 100644 index c6a4eb9..0000000 --- a/exhibition/_posts/2011-12-25-circle-of-fifths.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Circle of Fifths
                                      by
                                      -

                                      Shelley Marshall

                                      -

                                      Create, transpose, and change a chord progression by using the circle of fifths, and play the progression.

                                      -
                                      diff --git a/exhibition/_posts/2012-07-13-mylifeaquatic.html b/exhibition/_posts/2012-07-13-mylifeaquatic.html deleted file mode 100644 index bc8ee66..0000000 --- a/exhibition/_posts/2012-07-13-mylifeaquatic.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - -
                                      My Life Aquatic
                                      by
                                      -

                                      David Leibovic, - Sunah Suh

                                      -

                                      A shared aquarium
                                      - Source code

                                      -
                                      diff --git a/exhibition/_posts/2013-04-26-delaunay.html b/exhibition/_posts/2013-04-26-delaunay.html deleted file mode 100644 index 76348b2..0000000 --- a/exhibition/_posts/2013-04-26-delaunay.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Incremental Delaunay Triangulation
                                      by
                                      -

                                      Jeonggyu Lee

                                      -

                                      An interactive implementation of incremental Delaunay Triangulation algorithm.

                                      -
                                      diff --git a/exhibition/_posts/template.html b/exhibition/_posts/template.html deleted file mode 100644 index 5a2e621..0000000 --- a/exhibition/_posts/template.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - -
                                      Demoname
                                      by
                                      -

                                      Authors

                                      -

                                      Description

                                      -
                                      diff --git a/exhibition/index.html b/exhibition/index.html deleted file mode 100644 index 08f51a1..0000000 --- a/exhibition/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default ---- -

                                      Exhibition

                                      - -
                                      -{% for post in site.categories.exhibition %} -{{ post.content }} -{% endfor %} -
                                      diff --git a/favicon.ico b/favicon.ico deleted file mode 100644 index 0312a543da5a9ba33e392641d59d51027de462d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmb7EF>3;042|F2T5xi9yh5QM6dW7`1zk#^OACcgEeImGIJn6DH2+!5i}xUeioF~! zFYo1ro9;vg_6&z&eJq<=WF#Vu!7OvGzLALSa;d6xFzQvj1MB*+?uG76e*5}VDS+Zk zj-CfXhWh=vD1hP|Is4RL)aRr);!F=5{X9c|zZ6HD>4E8!x$}j!pJ{PGb0+_lVUD}) ztSFF+{w-#HKQ9WPI7gj*X8gd~VNo2=oWWVg9rwr_SH%%$cv&+?_JFn1+k*p|GdSzG z;~tszt8v5`Ue?T!Jz%ZHq)$ diff --git a/images/exhibition/abstract.jpg b/images/exhibition/abstract.jpg deleted file mode 100644 index fe747f9415974c752e69031c2d123b7f228a81cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43710 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 F{tr{+_7?yE diff --git a/images/exhibition/advent-2011.png b/images/exhibition/advent-2011.png deleted file mode 100644 index 01544fc002d810057204f3905d9f34dad7f7292f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16027 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 diff --git a/images/exhibition/afl-flags.png b/images/exhibition/afl-flags.png deleted file mode 100644 index a0b66e4a7b092624d08d4249a1b0d4673c84feae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22753 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 diff --git a/images/exhibition/andor.png b/images/exhibition/andor.png deleted file mode 100644 index 729557ec8bab6b01968e0b3b401efcda8f6e5d59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6275 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 diff --git a/images/exhibition/ask.png b/images/exhibition/ask.png deleted file mode 100644 index 0c411a5dbb8239acf3e0c5a67888dd5d0890a667..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14695 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

                                      acOyFb!~m) z+YT290RIc?FS37dA-B1>AP_JFw!;PD3f>kN34zLKa-(pzu+srT@>IbEb{*%`wQ%Eu1^3j7_|L)U?gA+Y_MZg)3|>XN= zg>2^~VNduM?y)bvw%0#g5Qk1XrZPL{Ji_&E3L--~b=(tAMA*itJztwIZ zHT9JPeKRw@W2L3{hTUS%KCz#H*@f{8E@9ev7Qil3l)h zJfLwh;Z4^$@`PTX)6{j(O^?JAb9BM|*|-CvqX(V)+x@)-7-(p3rLn-Lv0{pgz{a{@ zx$w9cNsK#oJRXmjumY_3S_gGsZ}N>5=+?kJil}&{7ax=;+(!M+j{W9XJ}N_)XJQ#vL8xIiH4A-V}Un!^7_WA@G+NqH$6w-O~b0Nr%8z&_iYMy&9MHdq`UN{FH z$JXbB&Dz$FE&5|Ipc1$25RcHd1nI3c%EPWltZHymag1MH+WybOclyid(18>wk1`9l z5ciO5yah6*@Kv3iLFAq)ezS|!@}_x{x(8Kjo&8b^F5qg10wkVk3Aj!*J8^*Upa9Y# zsh;h=N_*bXA*9NT@b!Fuu91?TeIu?#)~n%5z!vVhZ2X2!_|fXbaMNc)lb_J3nVBNm z(pp$_uuL6_PSCSl6bU11X=_CLT&&VN>FeU`UQP}V5A|K{%X)LfQk8J@&7*GYhI#7% zJyN1{*3q%D*Dq>~45kH{p;VnlaGgkVp3Dv#=u4Eh|1>4$y>E{5WbZ<5l9WS79!h&H z<*DSOHGOag&kvjISmme4PRchtQ-w(zcck^6Nj_LsFfy+)cad0&E;dGfPuRpC8JZ!5 z+RhxR3|9Hf3J>U_O#m4&syhOw^%9B07x)KP7Q4c^59VME>o`DsTjqRz>53~}(s|z* zraF1htZzZB6`9l#%Zi7gdvd+m4_QVg=$GzS`05i5lU$|P-lF49!awYtnK7y5ZE&pw zrM6%Gv7frw0sfibXQ^6M*DN z=;QejX?xcQ`G&cH41-W{>Nn*X(RCr&{iJdcs3|gLOj0tw!({xLwH2TwLK}WEqcNMs z0iy1pW?bX>57NQ- zdQETuA3UwNx}@@&sZLerJvmTMU8`R{Tov1H8NWhgqog(1QSSxV9N;$&uxLhHwt+e8 z-4bO0=MV0_eW~cladP;QOAhd)HCvzr}|1doZFW}PjopaZf7geA}JV9 zW*P~fL!fWv{Zf95rxhH#ANKT}zVRK{d`<`CgQKJ92Rm2ScEzRUV8cS1huf6Jv`ueL zLi+pXccUxUeSHeJihG#vZ$?|xvM#q;u%HmiVC5B*2KW@8dadsCge+k?i+kkPUn=fl zkuSf!5()ITc3Ll4`bdb#|BeB!W4yY0FD80~y zFmTW_*}57ZVtGSA-2PVF=5G6VbBJI_8@ExI$L%aHO8iY?rpjs}ZC~7&z52Vi`A53S z57lZ8wjwlBP75^6ct_WCvj;}vOuBJ2s@K(SjgJMx4i6c)_|684`cVqdlo1J6L`E8H z`h?LvjFJefrwr{cd;J-SPRv}2ds zux|l#GhrLhKLpF3Fi@s;oJ*ufW0I1}uMXIC;(|&e9nUC5hgUkqt@5YiW_pr|%6Ern z`TLJD?KjO&(5lPN`PdZJD=G16+m8Flqh+yn#J6BLT%2jMUyq ze^!`#YQmJomN(ZAf9nl1ziv5>@aYbn>h&NGqO`v2&Rsi`Jan8GhdFq(2 zJO^;N>q0B0PJJ_DW*5a1qA!;ryfPf>qpb3#OiB*mog#rn%EXo$gnm`NB!Z&cMK#II z8N29iY!mTxd)a%{#LmoCp7JKTU+_0PaN6IauzR#0WCv@0AIB=yZy_^A=TYk}j9^i; zdS`zA@3#rvyI1$Pm%LW8%!?JnsPeL0FmvH oL+Ivm0C>%oLiO2*kL(M{aW{g9DW2Vi-!?~M8vmYtW6sAv0pxF!6951J diff --git a/images/exhibition/balldroppings.gif b/images/exhibition/balldroppings.gif deleted file mode 100644 index 241898f7c4a5fc23658868e2cc0ce93e6a25860a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1044 zcmV+v1nc`pNk%w1VYC2C0J8u9{r&w`R#s+aW=2Lvf`Wno001^NHhX(}wY9Z!a&jgn zCKD4AoSdA}($ePU=8cVwA^8LV00000EC2ui0JH#0000F45P-9az1Sv|yZ>M)j^9#| zXsWK*@<@O|2E@tU_^KR1?*FL)AVG3*fXJl9KoHoJP#*&&AV#ma9RHi911qudFe`Pdohjly!3jqcLhKo^Xkpuyglvo34 z20fXZTnGRH1x!w&T`qnL1Cg2;27an20S|r(O|i8;38ohc19Kh*2o1EoUc1UkfxIE4 z01VL09t#H>);dZ1u+~z-~hoISL_HV6hN$37>E)71qg5;fn176BNPNcN8o?}khQ|} zh#0280|!%-Q0&;jgi4k!1Mt+NYn(G}t1vnG2ju}Z6(&p!$e0b%CI#q*rcgkN0G1;L zjA8+pBkCt~*vmG4?EJRcSOD)oQFJJ*<2QhhxEFdzy4epgKupGLn371bI6kOV+x1cp~zMhFVf zUJ?Yr@Kl7`xUv#MTnx~F1Q2p);z{Y8NT31?G|<2nD#jSX3ow)@twaoTAs1Lh%{coWyH1l$N>*D5oI8lW=gC`A~E|}vdVtOEVtun zi5?valq%E+ec7npvdywq?wExBr;M%$`d7qcQF{65s_NitEx^|(L}#5`{G^eE1cTtp z!3aZfR!c%b8nKtEDKw157e}O0Mrr}uaWjt`28nAU`#7J-ln}ylm%LHOLvAVirfHrp z*Q|_w;u5E`Y#zqPYjQt#3I#?iafDsbWbD8NMw7WjDAQ3GnQ9aYx5QDyRNDdrr)6Z# OL(W|rU?cz$00292r@oi~ diff --git a/images/exhibition/bezier.png b/images/exhibition/bezier.png deleted file mode 100644 index 9231e7115b2ab032933f762ad093f229c7333629..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5541 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 diff --git a/images/exhibition/bittorrent.jpg b/images/exhibition/bittorrent.jpg deleted file mode 100644 index a5d4510fed61e49b5ee59a75169241acce406a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50042 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 Cb{*aT diff --git a/images/exhibition/cecinestpasparis.png b/images/exhibition/cecinestpasparis.png deleted file mode 100644 index dfa38f3451a9037e43969afa428f5e383c3dda16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33119 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

                                      XGGVguRcD=LpEd@QvC0$3zO{P$7t)SjeDn7q- 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 P00000NkvXXu0mjfNS$=S diff --git a/images/exhibition/circle-of-fifths.png b/images/exhibition/circle-of-fifths.png deleted file mode 100644 index e17ed7418fa59f12ed036d51d85ace0ad1177f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14839 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 diff --git a/images/exhibition/coaltrace.png b/images/exhibition/coaltrace.png deleted file mode 100644 index 056abfb21d0123862f0194f85a625737c3fecd11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6940 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 C+n{m) diff --git a/images/exhibition/drupal.png b/images/exhibition/drupal.png deleted file mode 100644 index 38d9ab6b54a76afdfe84446c438d0e50488e14d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8225 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 diff --git a/images/exhibition/facebook.png b/images/exhibition/facebook.png deleted file mode 100644 index 79171fa59b44a084766b5800103cc9838747f624..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16567 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 diff --git a/images/exhibition/gmail.png b/images/exhibition/gmail.png deleted file mode 100644 index 47778fb1e529ce5242ffaba4b8389f3cba0d8818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16658 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 diff --git a/images/exhibition/harry-flocking.png b/images/exhibition/harry-flocking.png deleted file mode 100644 index 5f6a5fa468976ec60536caf57ebe5fa05c09244a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6364 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 Ef{|SZQvd(} diff --git a/images/exhibition/letters.jpg b/images/exhibition/letters.jpg deleted file mode 100644 index 0ec9cd6840dd0f6922455c0b1b38fa6d9b650d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4325 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 diff --git a/images/exhibition/mousedrivengraphicequalizer.gif b/images/exhibition/mousedrivengraphicequalizer.gif deleted file mode 100644 index 9208669a6fa40e978d8f998dddac929f6e64f95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1283 zcmV+e1^oI)Nk%w1VYC2C0J8u90a0gGk(vGd{fL~OH+_!A(9#%VcDTgH083&cZ-VLV z?VGi_07hI7TyN3b-v?K0A^8LV00000EC2ui0JH#0000F4P>9ihy*TU5yZ>M)j$~;9 z#v%#H>Ar9*&u}o&c&_jKwjjNra7g4N7{#P=IYTm^&?v_#ty-1Tt9Gl)a=+k{H%u;f z#^!Vyt!{(a?)VihuS4nfd=d|P_#b+82tZRje}92)2n_@Vgc^J&ein#{W(Wih0tx|- z7?CB1hn8gs1_~2nU-BnhFV?0Iedgu(4a15(fhds6QFJAilrAR|qN! z0|5iHES}0AhYj4^mCjYBsKf-+$JjXA-rbYnRSW~0(*e}93XT`q9e>>o2JG$JMbT7X zS~+tQsOaP1r<;L?54`~r_(Yh11pykB8&E)igNeKUIv`-cV9>IL{vbkZ5Rf94c+xV; z44^^)0YYd75m>N*f-VgxA0`+&^dC!*E|X|Fkdc7XjZ1NAK=7cZ1P3?wH55ve=)aap zg;>N$pn`#e_V9Tz)zRYtRI1nn9s1Pi(4%3CAb^?CYl4la1|Z3@NYf1l1`HDz!_NTS zgH02B&0Az?->wHcI

                                      6YTH#0Dm1utB*Rv^^ioG=Nm*)&?3M5vx%YS%iHCN4@cTU3tex}d zSYUZdZm6vp7))ST@86D*TkAx9yzzQ)IY12mJ(3}%-VCO|wwy{r0hSN|qsikN0RRjF z1OdJ&MwNfm7?X+w1!csXfd|3>9Ve18M_o#&b)-N^HT5(=E>v+-VFJaVf(wM?akN5g z0kjoj0_l}F1AC3AcmazWNx*;&0u)363Xok^%vA|IaF&Mx9FPl1RoT}FiAI`$z-t#t z#*#!lwkW_U9{J{&YIGiFjRHIw#z}=2cm`VlM3x!DcAOa1&ruCh(`79)s)k+z{~gEW z3SN#Ojyz?NDd-675h)Q${u%dHm-8rB0U?9XrW!{IC~&|{KXC?S0f1_{=?4}K5L!#2 zIb@v!4wPCJpSoySWkw-+z(9<{-s;N#1JG=er7tUTlW21EI6{a&kJVL|0U|7-V*ubf zdlDcC9K(z{+?JOSOXNM3nzv4Y8|xHMzG|zv>fGiDGuFo2m%L5cm10-Zl@RR&<(g|6 zKmHJaomLPx=v2Y(AqDAOE?lYrg$`p76nWNUx z{p@#yoLBYYw?TgSYoPDa`RbFwe*160@6P-3Z$W?kbKnom{rXG6fB)eFU?Tn}z$Fl{ tfO|lo9uBC$AuzCkLC_rpw}7Jw#z6%jv!EHEbdd~da0?H>nE)aH06Vs*MehIr diff --git a/images/exhibition/mylifeaquatic.png b/images/exhibition/mylifeaquatic.png deleted file mode 100644 index 3f3870653754c1d865380600b9e4be633426510e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14904 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 diff --git a/images/exhibition/twitterflow.png b/images/exhibition/twitterflow.png deleted file mode 100644 index 70ac07f10dda0f8536e7340e0b4b2e742302f903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2008 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 Dd?&Qk diff --git a/images/exhibition/virion.png b/images/exhibition/virion.png deleted file mode 100644 index 7b88ecc0575572110be9b8dce11fc77573489d47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22526 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 Ze+Nho53lKxcBcRU002ovPDHLkV1gTGc*+0( diff --git a/images/exhibition/wikivisualizations.gif b/images/exhibition/wikivisualizations.gif deleted file mode 100644 index 0f24da5473844d5158b51198bf1b21dc0e975ba0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1670 zcmV;126_2MNk%w1VYC2C0J8u9nchPH008>?`(t!Hai=m}VootLCpT0UBPJUO3kN?# zE}Nu;78wzHhgm>DKu=OXA^8LV00000EC2ui0JH#0000F4P>7a-y*TU5yZ>M)j$~;D z%pwWK>Ar9*&+s$Rc&_jKwp6{Ka7f%BipZpL$!t2G(5Q4uty-_xtai)odcWW>2T^dC z#b{__u~;+G@MQuB)FBXzJfj}(2McV0Z+?U?d>IZ1W(G%vjwJ~Vl4}o-mNEs)UEDsdKKbd$FqqgS4ogxTgsz4!cST2dzQ}01GX^NC*J8MaDD- z2g)GK&PD?`#>6HB0MsAWAKTFY+$97A;2i@1&Ew|f=K%!MAnEHI-tQjdGyWU^WV@%% z!@N`bu4w=mgP{h2A@CVAWgyvxgzyfIaF_ui!4C@mK{Y6N(OpOk2IBow8DM~djsrhP z`rA6XfmS< z?ODet42(ScdBH8j778c-YQb*?$9NJ$4&e1$0Z9NFv>0$Xd*;m=@D+!>0Z^dUYz&xh z;~)^5Unb_*eS;Up9S3>vhf-iwJ zU3Jt+!p2$LmF3+9;7tXXEmPkc=7+^+Wia6jRekarvz#U*2U?U2eoECtK zTKzVVaKi=AzyJ?O!r49p9Pz*)M<%&|JH2sN$!U{J!ij|#V0hgcL$%c1SttNfp<2f* zKwukN!lglbl_0QyCv#emWB>~U-~gE}Fi^l!w#4XX1v7TyCujaCkmLgcH1L3glBBa> zmPkIZPm~R~mgSVk5SXNrjW(L4BoQu(z*3S;3Z|n6);vO+_4*P zysf1}K*H@_$6cf8EUfUx6?0eds~dwnKst;z%&y1Nwi{~2oOm-7lI*&+u}y$9u%{$7 zQ}Vtsx`b#~8rCU9MXHgfN=2{Y@hE|cHmd*vrAjE9dUPvL(Wx4^$VqScFmM20 zEgrC1gp3G|#{iD^viMwg;GvuUU8`l@mpwo8z`(^v8ZdE|1XOguNMJXrXtxtvX+XoJ z&7Nh1q4yx4et7lL`R=Fgch_o7YAzdn`kh+!Pq{bo;^CD%z$UxudD3p#t-Xd@YeSEa zHpUW%pH5S;+-&n2)vMcppAC>PiJxBG2MpY42n32e z%przNs{kEF2@5`m@fHg731Q&jd! zLmEzSFhY5|1Kv8Qw>>_xZd-d*YR0C)6Ic<7n3JCvD^imuZE}G{qardRr_5_csEyjB zq)n=s0cp7N0QGq10Tky>?jXRO2DlvMq%pdB9$)}N^kwM&$sO@cEFJm0SV1$Ev3mkw zeE-BCJA)v~aLV#Co++~BD>sVEaHeviAPuQVM@rI?iXej~y@GI38U_`>hoxL7zzUFo Qgj))9q6uh^1R?+cJBuFn`2YX_ diff --git a/images/exhibition/wordpress-logo-stacked-rgb.png b/images/exhibition/wordpress-logo-stacked-rgb.png deleted file mode 100644 index 46f2a5f8b63085e964ef90900d4741729cda1457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10774 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 V)~XPt9$f$c002ovPDHLkV1fgJi?9Fy diff --git a/images/github-v04.png b/images/github-v04.png deleted file mode 100644 index 7d739d1732059df68ca8c022b56ba6262a991e87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19407 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 diff --git a/images/lighthouseapp-logo.png b/images/lighthouseapp-logo.png deleted file mode 100644 index ae8487d7a7699da9d2553bc6801c5ccbd3d4a912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2142 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 Ar~m)} diff --git a/index.html b/index.html deleted file mode 100644 index a19ccdf..0000000 --- a/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: default ---- -

                                      - - - Virion -

                                      by Jonah Kagan, Varun Singh, Jonathan Koh, Charis Loke

                                      -
                                      - - - Fizz -

                                      by Bloom

                                      -
                                      - - - Letter-pairs Analysis -

                                      by Martin Ignacio Bereciartua

                                      -
                                      -
                                      - -

                                      Latest release: Processing.js v1.6.0

                                      - -

                                      Updates have been trickling in over the last few releases, and while the original dev team for Processing.js -moved on, there are a number of enthusiastic users who have been finding problems with the library and have been -willing to help fix them. As such, the current version has quite a few improvements compared to the version of -Processing.js you might find bundled with some processing bundles, but: if there are things it doesn't do that -you rely on, do head over to the Processing.js issue -tracker and let people know.

                                      - -

                                      Want to help out?

                                      - -

                                      We're also happy to get help in the form of pull requests to add functionality to Pjs, -or to simply fix small errors that were found. You don't have to be a code wizard to contribute: -if you simply know of a function or a constant that's missing, feel free to fork the code, -patch what you think needs patching, and file a Pull Request so that we can merge your -improvement in! Don't know where to start? Drop into our IRC channel, #processingjs on -irc.mozilla.org, and we'll be happy to help you get the most out improving Processing.js!

                                      - -

                                      About Processing.js

                                      - -

                                      Processing.js is a project based on the popular Processing -visual programming language, designed to bring Processing sketches to the web without a need for -special browser plugins. Processing.js makes your data visualizations, digital art, interactive -animations, educational graphs, video games, etc. work using web standards and without any plug-ins. -You write code using the Processing language, include it in your web page, and Processing.js does -the rest. It's not magic, but it's close.

                                      - -

                                      Originally developed by Ben Fry and -Casey Reas, Processing started as an open source programming language based on Java to help -the electronic arts and visual design communities learn the basics of computer programming in a -visual context. Processing.js takes this to the next level, allowing Processing code to be run -by any HTML5 compatible browser, including current versions of Firefox, Safari, Chrome, Opera, and -Internet Explorer. Processing.js brings the best of visual programming to the web, both for -Processing and web developers.

                                      - -

                                      Everything you need to work with Processing.js is here. You can download -the most recent version of Processing.js, read Quick Start Guides for -Processing Developers or -JavaScript Developers, -learn about the Processing language and Processing.js -render modes, consult the -Reference, and of course view many existing demos -that use Processing.js. You can also get involved with the Processing -and Processing.js communities, both of which are active and and looking for new users and developers.

                                      - -

                                      Whether you're an advanced Processing developer or completely new, whether you're a pro with -web technologies or just getting started, Processing.js bridges the -gap between these two powerful technologies.

                                      - -

                                      Processing.js Example

                                      - - - - - - - -

                                      My Life Aquatic (2012) -by David Leibovic and Sunah Suh
                                      -Koi designed by nardove

                                      diff --git a/js/buzz.js b/js/buzz.js deleted file mode 100644 index 6da0703..0000000 --- a/js/buzz.js +++ /dev/null @@ -1,855 +0,0 @@ -// ---------------------------------------------------------------------------- -// Buzz, a Javascript HTML5 Audio library -// v 1.0.x beta -// Licensed under the MIT license. -// http://buzz.jaysalvat.com/ -// ---------------------------------------------------------------------------- -// Copyright (C) 2011 Jay Salvat -// http://jaysalvat.com/ -// ---------------------------------------------------------------------------- -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files ( the "Software" ), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ---------------------------------------------------------------------------- - -var buzz = { - defaults: { - autoplay: false, - duration: 5000, - formats: [], - loop: false, - placeholder: '--', - preload: 'metadata', - volume: 80 - }, - types: { - 'mp3': 'audio/mpeg', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'aac': 'audio/aac', - 'm4a': 'audio/x-m4a' - }, - sounds: [], - el: document.createElement( 'audio' ), - - sound: function( src, options ) { - options = options || {}; - - var pid = 0, - events = [], - eventsOnce = {}, - supported = buzz.isSupported(); - - // publics - this.load = function() { - if ( !supported ) { - return this; - } - - this.sound.load(); - return this; - }; - - this.play = function() { - if ( !supported ) { - return this; - } - - this.sound.play(); - return this; - }; - - this.togglePlay = function() { - if ( !supported ) { - return this; - } - - if ( this.sound.paused ) { - this.sound.play(); - } else { - this.sound.pause(); - } - return this; - }; - - this.pause = function() { - if ( !supported ) { - return this; - } - - this.sound.pause(); - return this; - }; - - this.isPaused = function() { - if ( !supported ) { - return null; - } - - return this.sound.paused; - }; - - this.stop = function() { - if ( !supported ) { - return this; - } - - this.setTime( this.getDuration() ); - this.sound.pause(); - return this; - }; - - this.isEnded = function() { - if ( !supported ) { - return null; - } - - return this.sound.ended; - }; - - this.loop = function() { - if ( !supported ) { - return this; - } - - this.sound.loop = 'loop'; - this.bind( 'ended.buzzloop', function() { - this.currentTime = 0; - this.play(); - }); - return this; - }; - - this.unloop = function() { - if ( !supported ) { - return this; - } - - this.sound.removeAttribute( 'loop' ); - this.unbind( 'ended.buzzloop' ); - return this; - }; - - this.mute = function() { - if ( !supported ) { - return this; - } - - this.sound.muted = true; - return this; - }; - - this.unmute = function() { - if ( !supported ) { - return this; - } - - this.sound.muted = false; - return this; - }; - - this.toggleMute = function() { - if ( !supported ) { - return this; - } - - this.sound.muted = !this.sound.muted; - return this; - }; - - this.isMuted = function() { - if ( !supported ) { - return null; - } - - return this.sound.muted; - }; - - this.setVolume = function( volume ) { - if ( !supported ) { - return this; - } - - if ( volume < 0 ) { - volume = 0; - } - if ( volume > 100 ) { - volume = 100; - } - - this.volume = volume; - this.sound.volume = volume / 100; - return this; - }; - - this.getVolume = function() { - if ( !supported ) { - return this; - } - - return this.volume; - }; - - this.increaseVolume = function( value ) { - return this.setVolume( this.volume + ( value || 1 ) ); - }; - - this.decreaseVolume = function( value ) { - return this.setVolume( this.volume - ( value || 1 ) ); - }; - - this.setTime = function( time ) { - if ( !supported ) { - return this; - } - - this.whenReady( function() { - this.sound.currentTime = time; - }); - return this; - }; - - this.getTime = function() { - if ( !supported ) { - return null; - } - - var time = Math.round( this.sound.currentTime * 100 ) / 100; - return isNaN( time ) ? buzz.defaults.placeholder : time; - }; - - this.setPercent = function( percent ) { - if ( !supported ) { - return this; - } - - return this.setTime( buzz.fromPercent( percent, this.sound.duration ) ); - }; - - this.getPercent = function() { - if ( !supported ) { - return null; - } - - var percent = Math.round( buzz.toPercent( this.sound.currentTime, this.sound.duration ) ); - return isNaN( percent ) ? buzz.defaults.placeholder : percent; - }; - - this.setSpeed = function( duration ) { - if ( !supported ) { - return this; - } - - this.sound.playbackRate = duration; - }; - - this.getSpeed = function() { - if ( !supported ) { - return null; - } - - return this.sound.playbackRate; - }; - - this.getDuration = function() { - if ( !supported ) { - return null; - } - - var duration = Math.round( this.sound.duration * 100 ) / 100; - return isNaN( duration ) ? buzz.defaults.placeholder : duration; - }; - - this.getPlayed = function() { - if ( !supported ) { - return null; - } - - return timerangeToArray( this.sound.played ); - }; - - this.getBuffered = function() { - if ( !supported ) { - return null; - } - - return timerangeToArray( this.sound.buffered ); - }; - - this.getSeekable = function() { - if ( !supported ) { - return null; - } - - return timerangeToArray( this.sound.seekable ); - }; - - this.getErrorCode = function() { - if ( supported && this.sound.error ) { - return this.sound.error.code; - } - return 0; - }; - - this.getErrorMessage = function() { - if ( !supported ) { - return null; - } - - switch( this.getErrorCode() ) { - case 1: - return 'MEDIA_ERR_ABORTED'; - case 2: - return 'MEDIA_ERR_NETWORK'; - case 3: - return 'MEDIA_ERR_DECODE'; - case 4: - return 'MEDIA_ERR_SRC_NOT_SUPPORTED'; - default: - return null; - } - }; - - this.getStateCode = function() { - if ( !supported ) { - return null; - } - - return this.sound.readyState; - }; - - this.getStateMessage = function() { - if ( !supported ) { - return null; - } - - switch( this.getStateCode() ) { - case 0: - return 'HAVE_NOTHING'; - case 1: - return 'HAVE_METADATA'; - case 2: - return 'HAVE_CURRENT_DATA'; - case 3: - return 'HAVE_FUTURE_DATA'; - case 4: - return 'HAVE_ENOUGH_DATA'; - default: - return null; - } - }; - - this.getNetworkStateCode = function() { - if ( !supported ) { - return null; - } - - return this.sound.networkState; - }; - - this.getNetworkStateMessage = function() { - if ( !supported ) { - return null; - } - - switch( this.getNetworkStateCode() ) { - case 0: - return 'NETWORK_EMPTY'; - case 1: - return 'NETWORK_IDLE'; - case 2: - return 'NETWORK_LOADING'; - case 3: - return 'NETWORK_NO_SOURCE'; - default: - return null; - } - }; - - this.set = function( key, value ) { - if ( !supported ) { - return this; - } - - this.sound[ key ] = value; - return this; - }; - - this.get = function( key ) { - if ( !supported ) { - return null; - } - - return key ? this.sound[ key ] : this.sound; - }; - - this.bind = function( types, func ) { - if ( !supported ) { - return this; - } - - types = types.split( ' ' ); - - var that = this, - efunc = function( e ) { func.call( that, e ); }; - - for( var t = 0; t < types.length; t++ ) { - var type = types[ t ], - idx = type; - type = idx.split( '.' )[ 0 ]; - - events.push( { idx: idx, func: efunc } ); - this.sound.addEventListener( type, efunc, true ); - } - return this; - }; - - this.unbind = function( types ) { - if ( !supported ) { - return this; - } - - types = types.split( ' ' ); - - for( var t = 0; t < types.length; t++ ) { - var idx = types[ t ], - type = idx.split( '.' )[ 0 ]; - - for( var i = 0; i < events.length; i++ ) { - var namespace = events[ i ].idx.split( '.' ); - if ( events[ i ].idx == idx || ( namespace[ 1 ] && namespace[ 1 ] == idx.replace( '.', '' ) ) ) { - this.sound.removeEventListener( type, events[ i ].func, true ); - // remove event - events.splice(i, 1); - } - } - } - return this; - }; - - this.bindOnce = function( type, func ) { - if ( !supported ) { - return this; - } - - var that = this; - - eventsOnce[ pid++ ] = false; - this.bind( pid + type, function() { - if ( !eventsOnce[ pid ] ) { - eventsOnce[ pid ] = true; - func.call( that ); - } - that.unbind( pid + type ); - }); - }; - - this.trigger = function( types ) { - if ( !supported ) { - return this; - } - - types = types.split( ' ' ); - - for( var t = 0; t < types.length; t++ ) { - var idx = types[ t ]; - - for( var i = 0; i < events.length; i++ ) { - var eventType = events[ i ].idx.split( '.' ); - if ( events[ i ].idx == idx || ( eventType[ 0 ] && eventType[ 0 ] == idx.replace( '.', '' ) ) ) { - var evt = document.createEvent('HTMLEvents'); - evt.initEvent( eventType[ 0 ], false, true ); - this.sound.dispatchEvent( evt ); - } - } - } - return this; - }; - - this.fadeTo = function( to, duration, callback ) { - if ( !supported ) { - return this; - } - - if ( duration instanceof Function ) { - callback = duration; - duration = buzz.defaults.duration; - } else { - duration = duration || buzz.defaults.duration; - } - - var from = this.volume, - delay = duration / Math.abs( from - to ), - that = this; - this.play(); - - function doFade() { - setTimeout( function() { - if ( from < to && that.volume < to ) { - that.setVolume( that.volume += 1 ); - doFade(); - } else if ( from > to && that.volume > to ) { - that.setVolume( that.volume -= 1 ); - doFade(); - } else if ( callback instanceof Function ) { - callback.apply( that ); - } - }, delay ); - } - this.whenReady( function() { - doFade(); - }); - - return this; - }; - - this.fadeIn = function( duration, callback ) { - if ( !supported ) { - return this; - } - - return this.setVolume(0).fadeTo( 100, duration, callback ); - }; - - this.fadeOut = function( duration, callback ) { - if ( !supported ) { - return this; - } - - return this.fadeTo( 0, duration, callback ); - }; - - this.fadeWith = function( sound, duration ) { - if ( !supported ) { - return this; - } - - this.fadeOut( duration, function() { - this.stop(); - }); - - sound.play().fadeIn( duration ); - - return this; - }; - - this.whenReady = function( func ) { - if ( !supported ) { - return null; - } - - var that = this; - if ( this.sound.readyState === 0 ) { - this.bind( 'canplay.buzzwhenready', function() { - func.call( that ); - }); - } else { - func.call( that ); - } - }; - - // privates - function timerangeToArray( timeRange ) { - var array = [], - length = timeRange.length - 1; - - for( var i = 0; i <= length; i++ ) { - array.push({ - start: timeRange.start( length ), - end: timeRange.end( length ) - }); - } - return array; - } - - function getExt( filename ) { - return filename.split('.').pop(); - } - - function addSource( sound, src ) { - var source = document.createElement( 'source' ); - source.src = src; - if ( buzz.types[ getExt( src ) ] ) { - source.type = buzz.types[ getExt( src ) ]; - } - sound.appendChild( source ); - } - - // init - if ( supported && src ) { - - for(var i in buzz.defaults ) { - if(buzz.defaults.hasOwnProperty(i)) { - options[ i ] = options[ i ] || buzz.defaults[ i ]; - } - } - - this.sound = document.createElement( 'audio' ); - - if ( src instanceof Array ) { - for( var j in src ) { - if(src.hasOwnProperty(j)) { - addSource( this.sound, src[ j ] ); - } - } - } else if ( options.formats.length ) { - for( var k in options.formats ) { - if(options.formats.hasOwnProperty(k)) { - addSource( this.sound, src + '.' + options.formats[ k ] ); - } - } - } else { - addSource( this.sound, src ); - } - - if ( options.loop ) { - this.loop(); - } - - if ( options.autoplay ) { - this.sound.autoplay = 'autoplay'; - } - - if ( options.preload === true ) { - this.sound.preload = 'auto'; - } else if ( options.preload === false ) { - this.sound.preload = 'none'; - } else { - this.sound.preload = options.preload; - } - - this.setVolume( options.volume ); - - buzz.sounds.push( this ); - } - }, - - group: function( sounds ) { - sounds = argsToArray( sounds, arguments ); - - // publics - this.getSounds = function() { - return sounds; - }; - - this.add = function( soundArray ) { - soundArray = argsToArray( soundArray, arguments ); - for( var a = 0; a < soundArray.length; a++ ) { - sounds.push( soundArray[ a ] ); - } - }; - - this.remove = function( soundArray ) { - soundArray = argsToArray( soundArray, arguments ); - for( var a = 0; a < soundArray.length; a++ ) { - for( var i = 0; i < sounds.length; i++ ) { - if ( sounds[ i ] == soundArray[ a ] ) { - delete sounds[ i ]; - break; - } - } - } - }; - - this.load = function() { - fn( 'load' ); - return this; - }; - - this.play = function() { - fn( 'play' ); - return this; - }; - - this.togglePlay = function( ) { - fn( 'togglePlay' ); - return this; - }; - - this.pause = function( time ) { - fn( 'pause', time ); - return this; - }; - - this.stop = function() { - fn( 'stop' ); - return this; - }; - - this.mute = function() { - fn( 'mute' ); - return this; - }; - - this.unmute = function() { - fn( 'unmute' ); - return this; - }; - - this.toggleMute = function() { - fn( 'toggleMute' ); - return this; - }; - - this.setVolume = function( volume ) { - fn( 'setVolume', volume ); - return this; - }; - - this.increaseVolume = function( value ) { - fn( 'increaseVolume', value ); - return this; - }; - - this.decreaseVolume = function( value ) { - fn( 'decreaseVolume', value ); - return this; - }; - - this.loop = function() { - fn( 'loop' ); - return this; - }; - - this.unloop = function() { - fn( 'unloop' ); - return this; - }; - - this.setTime = function( time ) { - fn( 'setTime', time ); - return this; - }; - - this.setduration = function( duration ) { - fn( 'setduration', duration ); - return this; - }; - - this.set = function( key, value ) { - fn( 'set', key, value ); - return this; - }; - - this.bind = function( type, func ) { - fn( 'bind', type, func ); - return this; - }; - - this.unbind = function( type ) { - fn( 'unbind', type ); - return this; - }; - - this.bindOnce = function( type, func ) { - fn( 'bindOnce', type, func ); - return this; - }; - - this.trigger = function( type ) { - fn( 'trigger', type ); - return this; - }; - - this.fade = function( from, to, duration, callback ) { - fn( 'fade', from, to, duration, callback ); - return this; - }; - - this.fadeIn = function( duration, callback ) { - fn( 'fadeIn', duration, callback ); - return this; - }; - - this.fadeOut = function( duration, callback ) { - fn( 'fadeOut', duration, callback ); - return this; - }; - - // privates - function fn() { - var args = argsToArray( null, arguments ), - func = args.shift(); - - for( var i = 0; i < sounds.length; i++ ) { - sounds[ i ][ func ].apply( sounds[ i ], args ); - } - } - - function argsToArray( array, args ) { - return ( array instanceof Array ) ? array : Array.prototype.slice.call( args ); - } - }, - - all: function() { - return new buzz.group( buzz.sounds ); - }, - - isSupported: function() { - return !!buzz.el.canPlayType; - }, - - isOGGSupported: function() { - return !!buzz.el.canPlayType && buzz.el.canPlayType( 'audio/ogg; codecs="vorbis"' ); - }, - - isWAVSupported: function() { - return !!buzz.el.canPlayType && buzz.el.canPlayType( 'audio/wav; codecs="1"' ); - }, - - isMP3Supported: function() { - return !!buzz.el.canPlayType && buzz.el.canPlayType( 'audio/mpeg;' ); - }, - - isAACSupported: function() { - return !!buzz.el.canPlayType && ( buzz.el.canPlayType( 'audio/x-m4a;' ) || buzz.el.canPlayType( 'audio/aac;' ) ); - }, - - toTimer: function( time, withHours ) { - var h, m, s; - h = Math.floor( time / 3600 ); - h = isNaN( h ) ? '--' : ( h >= 10 ) ? h : '0' + h; - m = withHours ? Math.floor( time / 60 % 60 ) : Math.floor( time / 60 ); - m = isNaN( m ) ? '--' : ( m >= 10 ) ? m : '0' + m; - s = Math.floor( time % 60 ); - s = isNaN( s ) ? '--' : ( s >= 10 ) ? s : '0' + s; - return withHours ? h + ':' + m + ':' + s : m + ':' + s; - }, - - fromTimer: function( time ) { - var splits = time.toString().split( ':' ); - if ( splits && splits.length == 3 ) { - time = ( parseInt( splits[ 0 ], 10 ) * 3600 ) + ( parseInt(splits[ 1 ], 10 ) * 60 ) + parseInt( splits[ 2 ], 10 ); - } - if ( splits && splits.length == 2 ) { - time = ( parseInt( splits[ 0 ], 10 ) * 60 ) + parseInt( splits[ 1 ], 10 ); - } - return time; - }, - - toPercent: function( value, total, decimal ) { - var r = Math.pow( 10, decimal || 0 ); - - return Math.round( ( ( value * 100 ) / total ) * r ) / r; - }, - - fromPercent: function( percent, total, decimal ) { - var r = Math.pow( 10, decimal || 0 ); - - return Math.round( ( ( total / 100 ) * percent ) * r ) / r; - } -}; diff --git a/js/jquery.tweet.min.js b/js/jquery.tweet.min.js deleted file mode 100644 index 0d50ef4..0000000 --- a/js/jquery.tweet.min.js +++ /dev/null @@ -1,3 +0,0 @@ -// jquery.tweet.js - See http://tweet.seaofclouds.com/ or https://github.com/seaofclouds/tweet for more info -// Copyright (c) 2008-2011 Todd Matthews & Steve Purcell -(function(a){a.fn.tweet=function(c){var n=a.extend({username:null,list:null,favorites:false,query:null,avatar_size:null,count:3,fetch:null,page:1,retweets:true,intro_text:null,outro_text:null,join_text:null,auto_join_text_default:"i said,",auto_join_text_ed:"i",auto_join_text_ing:"i am",auto_join_text_reply:"i replied to",auto_join_text_url:"i was looking at",loading_text:null,refresh_interval:null,twitter_url:"twitter.com",twitter_api_url:"api.twitter.com",twitter_search_url:"search.twitter.com",template:"{avatar}{time}{join}{text}",comparator:function(p,o){return o.tweet_time-p.tweet_time},filter:function(o){return true}},c);var b=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi;function l(q,r){if(typeof q==="string"){var o=q;for(var p in r){var s=r[p];o=o.replace(new RegExp("{"+p+"}","g"),s===null?"":s)}return o}else{return q(r)}}a.extend({tweet:{t:l}});function f(p,o){return function(){var q=[];this.each(function(){q.push(this.replace(p,o))});return a(q)}}function k(o){return o.replace(//g,"^>")}a.fn.extend({linkUser:f(/(^|[\W])@(\w+)/gi,'$1@$2'),linkHash:f(/(?:^| )[\#]+([\w\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0600-\u06ff]+)/gi,' #$1'),capAwesome:f(/\b(awesome)\b/gi,'$1'),capEpic:f(/\b(epic)\b/gi,'$1'),makeHeart:f(/(<)+[3]/gi,"")});function e(p,o){return p.replace(b,function(s){var r=(/^[a-z]+:/i).test(s)?s:"http://"+s;var u=s;for(var t=0;t'+k(u)+""})}function j(o){return Date.parse(o.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i,"$1,$2$4$3"))}function h(o){var q=(arguments.length>1)?arguments[1]:new Date();var s=parseInt((q.getTime()-o)/1000,10);var p="";if(s<1){p="just now"}else{if(s<60){p=s+" seconds ago"}else{if(s<120){p="a minute ago"}else{if(s<(45*60)){p=(parseInt(s/60,10)).toString()+" minutes ago"}else{if(s<(2*60*60)){p="an hour ago"}else{if(s<(24*60*60)){p=""+(parseInt(s/3600,10)).toString()+" hours ago"}else{if(s<(48*60*60)){p="a day ago"}else{p=(parseInt(s/86400,10)).toString()+" days ago"}}}}}}}return"about "+p}function g(o){if(o.match(/^(@([A-Za-z0-9-_]+)) .*/i)){return n.auto_join_text_reply}else{if(o.match(b)){return n.auto_join_text_url}else{if(o.match(/^((\w+ed)|just) .*/im)){return n.auto_join_text_ed}else{if(o.match(/^(\w*ing) .*/i)){return n.auto_join_text_ing}else{return n.auto_join_text_default}}}}}function d(){var p=("https:"==document.location.protocol?"https:":"http:");var o=(n.fetch===null)?n.count:n.fetch;var r="&include_entities=1&callback=?";if(n.list){return p+"//"+n.twitter_api_url+"/1/"+n.username[0]+"/lists/"+n.list+"/statuses.json?page="+n.page+"&per_page="+o+r}else{if(n.favorites){return p+"//"+n.twitter_api_url+"/favorites/"+n.username[0]+".json?page="+n.page+"&count="+o+r}else{if(n.query===null&&n.username.length==1){return p+"//"+n.twitter_api_url+"/1/statuses/user_timeline.json?screen_name="+n.username[0]+"&count="+o+(n.retweets?"&include_rts=1":"")+"&page="+n.page+r}else{var q=(n.query||"from:"+n.username.join(" OR from:"));return p+"//"+n.twitter_search_url+"/search.json?&q="+encodeURIComponent(q)+"&rpp="+o+"&page="+n.page+r}}}}function m(o,p){if(p){return("user" in o)?o.user.profile_image_url_https:m(o,false).replace(/^http:\/\/[a-z0-9]{1,3}\.twimg\.com\//,"https://s3.amazonaws.com/twitter_production/")}else{return o.profile_image_url||o.user.profile_image_url}}function i(p){var q={};q.item=p;q.source=p.source;q.screen_name=p.from_user||p.user.screen_name;q.avatar_size=n.avatar_size;q.avatar_url=m(p,(document.location.protocol==="https:"));q.retweet=typeof(p.retweeted_status)!="undefined";q.tweet_time=j(p.created_at);q.join_text=n.join_text=="auto"?g(p.text):n.join_text;q.tweet_id=p.id_str;q.twitter_base="http://"+n.twitter_url+"/";q.user_url=q.twitter_base+q.screen_name;q.tweet_url=q.user_url+"/status/"+q.tweet_id;q.reply_url=q.twitter_base+"intent/tweet?in_reply_to="+q.tweet_id;q.retweet_url=q.twitter_base+"intent/retweet?tweet_id="+q.tweet_id;q.favorite_url=q.twitter_base+"intent/favorite?tweet_id="+q.tweet_id;q.retweeted_screen_name=q.retweet&&p.retweeted_status.user.screen_name;q.tweet_relative_time=h(q.tweet_time);q.entities=p.entities?(p.entities.urls||[]).concat(p.entities.media||[]):[];q.tweet_raw_text=q.retweet?("RT @"+q.retweeted_screen_name+" "+p.retweeted_status.text):p.text;q.tweet_text=a([e(q.tweet_raw_text,q.entities)]).linkUser().linkHash()[0];q.tweet_text_fancy=a([q.tweet_text]).makeHeart().capAwesome().capEpic()[0];q.user=l('{screen_name}',q);q.join=n.join_text?l(' {join_text} ',q):" ";q.avatar=q.avatar_size?l('{screen_name}\'s avatar',q):"";q.time=l('{tweet_relative_time}',q);q.text=l('{tweet_text_fancy}',q);q.reply_action=l('reply',q);q.retweet_action=l('retweet',q);q.favorite_action=l('favorite',q);return q}return this.each(function(p,s){var r=a('
                                        ');var q='

                                        '+n.intro_text+"

                                        ";var o='

                                        '+n.outro_text+"

                                        ";var t=a('

                                        '+n.loading_text+"

                                        ");if(n.username&&typeof(n.username)=="string"){n.username=[n.username]}a(s).bind("tweet:load",function(){if(n.loading_text){a(s).empty().append(t)}a.getJSON(d(),function(u){a(s).empty().append(r);if(n.intro_text){r.before(q)}r.empty();var v=a.map(u.results||u,i);v=a.grep(v,n.filter).sort(n.comparator).slice(0,n.count);r.append(a.map(v,function(w){return"
                                      • "+l(n.template,w)+"
                                      • "}).join("")).children("li:first").addClass("tweet_first").end().children("li:odd").addClass("tweet_even").end().children("li:even").addClass("tweet_odd");if(n.outro_text){r.after(o)}a(s).trigger("loaded").trigger((v.length===0?"empty":"full"));if(n.refresh_interval){window.setTimeout(function(){a(s).trigger("tweet:load")},1000*n.refresh_interval)}})}).trigger("tweet:load")})}})(jQuery); diff --git a/js/processing.min.js b/js/processing.min.js deleted file mode 100644 index dc52305..0000000 --- a/js/processing.min.js +++ /dev/null @@ -1,431 +0,0 @@ -(function e$$0(x,Q,k){function h(a,b){if(!Q[a]){if(!x[a]){var d="function"==typeof require&&require;if(!b&&d)return d(a,!0);if(m)return m(a,!0);throw Error("Cannot find module '"+a+"'");}d=Q[a]={exports:{}};x[a][0].call(d.exports,function(f){var b=x[a][1][f];return h(b?b:f)},d,d.exports,e$$0,x,Q,k)}return Q[a].exports}for(var m="function"==typeof require&&require,n=0;nr.$methodArgsIndex?r.$overloads[r.$methodArgsIndex]:null)||r.$defaultOverload).apply(this,arguments)};r.$overloads=p;"$methodArgsIndex"in f&&(r.$methodArgsIndex= -f.$methodArgsIndex);r.$defaultOverload=l;r.name=d;a[d]=r}}else a[d]=f}function n(b,d){function f(f){a.defineProperty(b,f,{get:function(){return d[f]},set:function(c){d[f]=c},enumerable:!0})}var l=[],p;for(p in d)"function"===typeof d[p]?m(b,p,d[p]):"$"===p.charAt(0)||p in b||l.push(p);for(;0 -c.$methodArgsIndex?c.$overloads[c.$methodArgsIndex]:null)||c.$defaultOverload).apply(this,arguments)},h=[];p&&(h[p.length]=p);h[r]=f;c.$overloads=h;c.$defaultOverload=p||f;l&&(c.$methodArgsIndex=r);c.name=d;a[d]=c}}else a[d]=f};a.createJavaArray=function(b,d){var f=null,l=null;if("string"===typeof b)if("boolean"===b)l=!1;else{var p;p="string"!==typeof b?!1:-1!=="byte int char color float long double".split(" ").indexOf(b);p&&(l=0)}if("number"===typeof d[0])if(p=0|d[0],1>=d.length){f=[];f.length=p; -for(var r=0;r "+b);if(v===h)if(0===p.length)try{return new k(f,l.join("\n"))}catch(md){throw console.log("Processing.js: Unable to execute pjs sketch."),md;}else throw"Processing.js: Unable to load pjs sketch files: "+p.join("\n");}if("#"===a.charAt(0)){var ca=n.getElementById(a.substring(1));ca?m(ca.text||ca.textContent):m("","Unable to load pjs sketch: element with id '"+ -a.substring(1)+"' was not found")}else d(a,m)}for(var l=[],p=[],h=c.length,v=0,ga=0;gaa||a>b.length)throw"Index out of bounds for addAll: "+a+" greater or equal than "+b.length;for(l=new ObjectIterator(f);l.hasNext();)b.splice(a++,0,l.next())}else for(l=new ObjectIterator(a);l.hasNext();)b.push(l.next())};this.set=function(){if(2===arguments.length){var a= -arguments[0];if("number"===typeof a)if(0<=a&&af?c.length+f:f}function b(){if(!(k<=r*c.length)){for(var f=[],b=0;b=c.length)p= -!0;else if(void 0===c[d]||l>=c[d].length)l=-1,++d;else break}var d=0,l=-1,p=!1,r;this.hasNext=function(){return!p};this.next=function(){r=f(c[d][l]);b();return r};this.remove=function(){void 0!==r&&(a(r),--l,b())};b()}function f(c,f,a){this.clear=function(){ca.clear()};this.contains=function(c){return f(c)};this.containsAll=function(c){for(c=c.iterator();c.hasNext();)if(!this.contains(c.next()))return!1;return!0};this.isEmpty=function(){return ca.isEmpty()};this.iterator=function(){return new d(c, -a)};this.remove=function(c){return this.contains(c)?(a(c),!0):!1};this.removeAll=function(c){for(c=c.iterator();c.hasNext();){var f=c.next();this.contains(f)&&a(f)}return!0};this.retainAll=function(c){for(var f=this.iterator(),b=[];f.hasNext();){var d=f.next();c.contains(d)||b.push(d)}for(c=0;cdbflkhyjqpg";n.body.appendChild(p);var c=l.width,k=l.height,l=k/2;r.fillStyle="white";r.fillRect(0,0,c,k);r.fillStyle="black";r.fillText("dbflkhyjqpg",0,l);for(var k=r.getImageData(0,0,c,k).data,m=0,G=4*c,A=k.length;++m=2*this.size&&(this.leading=Math.round(l/2)));n.body.removeChild(p);f=this.caching?r:void 0;this.context2d=f;this.css=this.getCSSDefinition();this.context2d&&(this.context2d.font=this.css)}var n=k.Browser.document,a=k.noop;m.prototype.caching=!0;m.prototype.getCSSDefinition=function(a,d){a===h&&(a=this.size+"px");d===h&&(d=this.leading+"px");return[this.style,"normal", -this.weight,a+"/"+d,this.family].join(" ")};m.prototype.measureTextWidth=function(a){return this.context2d.measureText(a).width};m.prototype.measureTextWidthFallback=function(a){var d=n.createElement("canvas").getContext("2d");d.font=this.css;return d.measureText(a).width};m.PFontCache={length:0};m.get=function(a,d){d=(10*d+0.5|0)/10;var f=m.PFontCache,l=a+"/"+d;if(!f[l]){f[l]=new m(a,d);f.length++;if(50===f.length){m.prototype.measureTextWidth=m.prototype.measureTextWidthFallback;m.prototype.caching= -!1;for(var p in f)"length"!==p&&(f[p].context2d=null);return new m(a,d)}if(400===f.length)return m.PFontCache={},m.get=m.getFallback,new m(a,d)}return f[l]};m.getFallback=function(a,d){return new m(a,d)};m.list=function(){return["sans-serif","serif","monospace","fantasy","cursive"]};m.preloading={template:{},initialized:!1,initialize:function(){var a=n.createElement("style");a.setAttribute("type","text/css");a.innerHTML='@font-face {\n font-family: "PjsEmptyFont";\n src: url(\'data:application/x-font-ttf;base64,'+ -function(){return"#E3KAI2wAgT1MvMg7Eo3VmNtYX7ABi3CxnbHlm7Abw3kaGVhZ7ACs3OGhoZWE7A53CRobXR47AY3AGbG9jYQ7G03Bm1heH7ABC3CBuYW1l7Ae3AgcG9zd7AI3AE#B3AQ2kgTY18PPPUACwAg3ALSRoo3#yld0xg32QAB77#E777773B#E3C#I#Q77773E#Q7777777772CMAIw7AB77732B#M#Q3wAB#g3B#E#E2BB//82BB////w#B7#gAEg3E77x2B32B#E#Q#MTcBAQ32gAe#M#QQJ#E32M#QQJ#I#g32Q77#".replace(/[#237]/g,function(a){return"AAAAAAAA".substr(~~a?7-a:6)})}()+"')\n format('truetype');\n}";n.head.appendChild(a);a=n.createElement("span");a.style.cssText='position: absolute; top: 0; left: 0; opacity: 0; font-family: "PjsEmptyFont", fantasy;'; -a.innerHTML="AAAAAAAA";n.body.appendChild(a);this.template=a;this.initialized=!0},getElementWidth:function(a){return n.defaultView.getComputedStyle(a,"").getPropertyValue("width")},timeAttempted:0,pending:function(a){this.initialized||this.initialize();for(var d,f,l=this.getElementWidth(this.template),p=0;pthis.timeAttempted&&f===l)return this.timeAttempted+=a,!0;n.body.removeChild(d);this.fontList.splice(p--,1);this.timeAttempted= -0}return 0===this.fontList.length?!1:!0},fontList:[],addedList:{},add:function(a){this.initialized||this.initialize();var d="object"===typeof a?a.fontFace:a;a="object"===typeof a?a.url:a;if(!this.addedList[d]){var f=n.createElement("style");f.setAttribute("type","text/css");f.innerHTML="@font-face{\n font-family: '"+d+"';\n src: url('"+a+"');\n}\n";n.head.appendChild(f);this.addedList[d]=!0;a=n.createElement("span");a.style.cssText="position: absolute; top: 0; left: 0; opacity: 0;";a.style.fontFamily= -'"'+d+'", "PjsEmptyFont", fantasy';a.innerHTML="AAAAAAAA";n.body.appendChild(a);this.fontList.push(a)}}};return m}},{}],13:[function(D,x,Q){x.exports=function(k,h){var m=k.p,n=function(){0===arguments.length?this.reset():1===arguments.length&&arguments[0]instanceof n?this.set(arguments[0].array()):6===arguments.length&&this.set(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])};n.prototype={set:function(){if(6===arguments.length){var a=arguments;this.set([a[0],a[1],a[2], -a[3],a[4],a[5]])}else 1===arguments.length&&arguments[0]instanceof n?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())},get:function(){var a=new n;a.set(this.elements);return a},reset:function(){this.set([1,0,0,0,1,0])},array:function(){return this.elements.slice()},translate:function(a,b){this.elements[2]=a*this.elements[0]+b*this.elements[1]+this.elements[2];this.elements[5]=a*this.elements[3]+b*this.elements[4]+this.elements[5]}, -invTranslate:function(a,b){this.translate(-a,-b)},transpose:function(){},mult:function(a,b){var d,f;a instanceof PVector?(d=a.x,f=a.y,b||(b=new PVector)):a instanceof Array&&(d=a[0],f=a[1],b||(b=[]));b instanceof Array?(b[0]=this.elements[0]*d+this.elements[1]*f+this.elements[2],b[1]=this.elements[3]*d+this.elements[4]*f+this.elements[5]):b instanceof PVector&&(b.x=this.elements[0]*d+this.elements[1]*f+this.elements[2],b.y=this.elements[3]*d+this.elements[4]*f+this.elements[5],b.z=0);return b},multX:function(a, -b){return a*this.elements[0]+b*this.elements[1]+this.elements[2]},multY:function(a,b){return a*this.elements[3]+b*this.elements[4]+this.elements[5]},skewX:function(a){this.apply(1,0,1,a,0,0)},skewY:function(a){this.apply(1,0,1,0,a,0)},shearX:function(a){this.apply(1,0,1,Math.tan(a),0,0)},shearY:function(a){this.apply(1,0,1,0,Math.tan(a),0)},determinant:function(){return this.elements[0]*this.elements[4]-this.elements[1]*this.elements[3]},invert:function(){var a=this.determinant();if(Math.abs(a)>PConstants.MIN_INT){var b= -this.elements[0],d=this.elements[1],f=this.elements[2],l=this.elements[3],p=this.elements[4],r=this.elements[5];this.elements[0]=p/a;this.elements[3]=-l/a;this.elements[1]=-d/a;this.elements[4]=b/a;this.elements[2]=(d*r-p*f)/a;this.elements[5]=(l*f-b*r)/a;return!0}return!1},scale:function(a,b){a&&!b&&(b=a);a&&b&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[3]*=a,this.elements[4]*=b)},invScale:function(a,b){a&&!b&&(b=a);this.scale(1/a,1/b)},apply:function(){var a;1===arguments.length&&arguments[0]instanceof -n?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,this.elements[2],0,0,this.elements[5]],d=0,f=0;2>f;f++)for(var l=0;3>l;l++,d++)b[d]+=this.elements[3*f+0]*a[l+0]+this.elements[3*f+1]*a[l+3];this.elements=b.slice()},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof n?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&& -arguments[0]instanceof Array&&(a=arguments[0]);var b=[0,0,a[2],0,0,a[5]];b[2]=a[2]+this.elements[2]*a[0]+this.elements[5]*a[1];b[5]=a[5]+this.elements[2]*a[3]+this.elements[5]*a[4];b[0]=this.elements[0]*a[0]+this.elements[3]*a[1];b[3]=this.elements[0]*a[3]+this.elements[3]*a[4];b[1]=this.elements[1]*a[0]+this.elements[4]*a[1];b[4]=this.elements[1]*a[3]+this.elements[4]*a[4];this.elements=b.slice()},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);var d=this.elements[0],f=this.elements[1];this.elements[0]= -b*d+a*f;this.elements[1]=-a*d+b*f;d=this.elements[3];f=this.elements[4];this.elements[3]=b*d+a*f;this.elements[4]=-a*d+b*f},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a-Math.PI)},print:function(){var a=printMatrixHelper(this.elements),a=""+m.nfs(this.elements[0],a,4)+" "+m.nfs(this.elements[1],a,4)+" "+m.nfs(this.elements[2],a,4)+"\n"+m.nfs(this.elements[3],a,4)+" "+m.nfs(this.elements[4],a,4)+" "+m.nfs(this.elements[5],a,4)+"\n\n";m.println(a)}};return n}},{}],14:[function(D, -x,Q){x.exports=function(k,h){var m=k.p,n=function(){this.reset()};n.prototype={set:function(){16===arguments.length?this.elements=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof n?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())},get:function(){var a=new n;a.set(this.elements);return a},reset:function(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},array:function(){return this.elements.slice()}, -translate:function(a,b,d){d===h&&(d=0);this.elements[3]+=a*this.elements[0]+b*this.elements[1]+d*this.elements[2];this.elements[7]+=a*this.elements[4]+b*this.elements[5]+d*this.elements[6];this.elements[11]+=a*this.elements[8]+b*this.elements[9]+d*this.elements[10];this.elements[15]+=a*this.elements[12]+b*this.elements[13]+d*this.elements[14]},transpose:function(){var a=this.elements[4];this.elements[4]=this.elements[1];this.elements[1]=a;a=this.elements[8];this.elements[8]=this.elements[2];this.elements[2]= -a;a=this.elements[6];this.elements[6]=this.elements[9];this.elements[9]=a;a=this.elements[3];this.elements[3]=this.elements[12];this.elements[12]=a;a=this.elements[7];this.elements[7]=this.elements[13];this.elements[13]=a;a=this.elements[11];this.elements[11]=this.elements[14];this.elements[14]=a},mult:function(a,b){var d,f,l,p;a instanceof PVector?(d=a.x,f=a.y,l=a.z,p=1,b||(b=new PVector)):a instanceof Array&&(d=a[0],f=a[1],l=a[2],p=a[3]||1,!b||3!==b.length&&4!==b.length)&&(b=[0,0,0]);b instanceof -Array&&(3===b.length?(b[0]=this.elements[0]*d+this.elements[1]*f+this.elements[2]*l+this.elements[3],b[1]=this.elements[4]*d+this.elements[5]*f+this.elements[6]*l+this.elements[7],b[2]=this.elements[8]*d+this.elements[9]*f+this.elements[10]*l+this.elements[11]):4===b.length&&(b[0]=this.elements[0]*d+this.elements[1]*f+this.elements[2]*l+this.elements[3]*p,b[1]=this.elements[4]*d+this.elements[5]*f+this.elements[6]*l+this.elements[7]*p,b[2]=this.elements[8]*d+this.elements[9]*f+this.elements[10]*l+ -this.elements[11]*p,b[3]=this.elements[12]*d+this.elements[13]*f+this.elements[14]*l+this.elements[15]*p));b instanceof PVector&&(b.x=this.elements[0]*d+this.elements[1]*f+this.elements[2]*l+this.elements[3],b.y=this.elements[4]*d+this.elements[5]*f+this.elements[6]*l+this.elements[7],b.z=this.elements[8]*d+this.elements[9]*f+this.elements[10]*l+this.elements[11]);return b},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof n?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments): -1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],d=0,f=0;4>f;f++)for(var l=0;4>l;l++,d++)b[d]+=this.elements[l+0]*a[4*f+0]+this.elements[l+4]*a[4*f+1]+this.elements[l+8]*a[4*f+2]+this.elements[l+12]*a[4*f+3];this.elements=b.slice()},apply:function(){var a;1===arguments.length&&arguments[0]instanceof n?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&& -(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],d=0,f=0;4>f;f++)for(var l=0;4>l;l++,d++)b[d]+=this.elements[4*f+0]*a[l+0]+this.elements[4*f+1]*a[l+4]+this.elements[4*f+2]*a[l+8]+this.elements[4*f+3]*a[l+12];this.elements=b.slice()},rotate:function(a,b,d,f){if(d){var l=Math.cos(a);a=Math.sin(a);var p=1-l;this.apply(p*b*b+l,p*b*d-a*f,p*b*f+a*d,0,p*b*d+a*f,p*d*d+l,p*d*f-a*b,0,p*b*f-a*d,p*d*f+a*b,p*f*f+l,0,0,0,0,1)}else this.rotateZ(a)},invApply:function(){inverseCopy===h&&(inverseCopy=new n); -var a=arguments;inverseCopy.set(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);if(!inverseCopy.invert())return!1;this.preApply(inverseCopy);return!0},rotateX:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},rotateY:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},rotateZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},scale:function(a, -b,d){!a||b||d?a&&(b&&!d)&&(d=1):b=d=a;a&&(b&&d)&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[2]*=d,this.elements[4]*=a,this.elements[5]*=b,this.elements[6]*=d,this.elements[8]*=a,this.elements[9]*=b,this.elements[10]*=d,this.elements[12]*=a,this.elements[13]*=b,this.elements[14]*=d)},skewX:function(a){a=Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},skewY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},shearX:function(a){a=Math.tan(a);this.apply(1,a,0,0, -0,1,0,0,0,0,1,0,0,0,0,1)},shearY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},multX:function(a,b,d,f){return d?f?this.elements[0]*a+this.elements[1]*b+this.elements[2]*d+this.elements[3]*f:this.elements[0]*a+this.elements[1]*b+this.elements[2]*d+this.elements[3]:this.elements[0]*a+this.elements[1]*b+this.elements[3]},multY:function(a,b,d,f){return d?f?this.elements[4]*a+this.elements[5]*b+this.elements[6]*d+this.elements[7]*f:this.elements[4]*a+this.elements[5]*b+this.elements[6]* -d+this.elements[7]:this.elements[4]*a+this.elements[5]*b+this.elements[7]},multZ:function(a,b,d,f){return f?this.elements[8]*a+this.elements[9]*b+this.elements[10]*d+this.elements[11]*f:this.elements[8]*a+this.elements[9]*b+this.elements[10]*d+this.elements[11]},multW:function(a,b,d,f){return f?this.elements[12]*a+this.elements[13]*b+this.elements[14]*d+this.elements[15]*f:this.elements[12]*a+this.elements[13]*b+this.elements[14]*d+this.elements[15]},invert:function(){var a=this.elements[0]*this.elements[5]- -this.elements[1]*this.elements[4],b=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4],d=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4],f=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5],l=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5],p=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6],r=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12],c=this.elements[8]*this.elements[14]-this.elements[10]* -this.elements[12],h=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],k=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],m=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13],n=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14],x=a*n-b*m+d*k+f*h-l*c+p*r;if(1E-9>=Math.abs(x))return!1;var v=[];v[0]=+this.elements[5]*n-this.elements[6]*m+this.elements[7]*k;v[4]=-this.elements[4]*n+this.elements[6]*h-this.elements[7]*c; -v[8]=+this.elements[4]*m-this.elements[5]*h+this.elements[7]*r;v[12]=-this.elements[4]*k+this.elements[5]*c-this.elements[6]*r;v[1]=-this.elements[1]*n+this.elements[2]*m-this.elements[3]*k;v[5]=+this.elements[0]*n-this.elements[2]*h+this.elements[3]*c;v[9]=-this.elements[0]*m+this.elements[1]*h-this.elements[3]*r;v[13]=+this.elements[0]*k-this.elements[1]*c+this.elements[2]*r;v[2]=+this.elements[13]*p-this.elements[14]*l+this.elements[15]*f;v[6]=-this.elements[12]*p+this.elements[14]*d-this.elements[15]* -b;v[10]=+this.elements[12]*l-this.elements[13]*d+this.elements[15]*a;v[14]=-this.elements[12]*f+this.elements[13]*b-this.elements[14]*a;v[3]=-this.elements[9]*p+this.elements[10]*l-this.elements[11]*f;v[7]=+this.elements[8]*p-this.elements[10]*d+this.elements[11]*b;v[11]=-this.elements[8]*l+this.elements[9]*d-this.elements[11]*a;v[15]=+this.elements[8]*f-this.elements[9]*b+this.elements[10]*a;a=1/x;v[0]*=a;v[1]*=a;v[2]*=a;v[3]*=a;v[4]*=a;v[5]*=a;v[6]*=a;v[7]*=a;v[8]*=a;v[9]*=a;v[10]*=a;v[11]*=a;v[12]*= -a;v[13]*=a;v[14]*=a;v[15]*=a;this.elements=v.slice();return!0},toString:function(){for(var a="",b=0;15>b;b++)a+=this.elements[b]+", ";return a+=this.elements[15]},print:function(){var a=printMatrixHelper(this.elements),a=""+m.nfs(this.elements[0],a,4)+" "+m.nfs(this.elements[1],a,4)+" "+m.nfs(this.elements[2],a,4)+" "+m.nfs(this.elements[3],a,4)+"\n"+m.nfs(this.elements[4],a,4)+" "+m.nfs(this.elements[5],a,4)+" "+m.nfs(this.elements[6],a,4)+" "+m.nfs(this.elements[7],a,4)+"\n"+m.nfs(this.elements[8], -a,4)+" "+m.nfs(this.elements[9],a,4)+" "+m.nfs(this.elements[10],a,4)+" "+m.nfs(this.elements[11],a,4)+"\n"+m.nfs(this.elements[12],a,4)+" "+m.nfs(this.elements[13],a,4)+" "+m.nfs(this.elements[14],a,4)+" "+m.nfs(this.elements[15],a,4)+"\n\n";m.println(a)},invTranslate:function(a,b,d){this.preApply(1,0,0,-a,0,1,0,-b,0,0,1,-d,0,0,0,1)},invRotateX:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},invRotateY:function(a){var b=Math.cos(-a);a=Math.sin(-a); -this.preApply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},invRotateZ:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},invScale:function(a,b,d){this.preApply([1/a,0,0,0,0,1/b,0,0,0,0,1/d,0,0,0,0,1])}};return n}},{}],15:[function(D,x,Q){x.exports=function(k){var h=k.PConstants,m=k.PMatrix2D,n=k.PMatrix3D;k=function(a){this.family=a||h.GROUP;this.style=this.visible=!0;this.children=[];this.nameTable=[];this.params=[];this.name="";this.parent=this.height=this.width= -this.close=this.kind=this.matrix=this.image=null};k.prototype={isVisible:function(){return this.visible},setVisible:function(a){this.visible=a},disableStyle:function(){this.style=!1;for(var a=0,b=this.children.length;a, it's <"+this.element.getName()+">";}else 2===arguments.length&&("string"===typeof arguments[1]?-1 tag of this file.";this.parseColors(this.element);this.parseChildren(this.element)};d.prototype=new n;d.prototype.parseMatrix=function(){function f(f){var a=[];f.replace(/\((.*?)\)/,function(){return function(f,c){a=c.replace(/,+/g," ").split(/\s+/)}}()); -return a}return function(a){this.checkMatrix(2);var b=[];a.replace(/\s*(\w+)\((.*?)\)/g,function(c){b.push(h.trim(c))});if(0===b.length)return null;a=0;for(var d=b.length;a=v||97<=v&&122>=v){u=x;x++;if(x=v||97<=v&&100>=v||102<=v&&122>=v)&&!1===D;)32===v?""!==ga&&(q.push(parseFloat(ga)),ga=""):45===v?101===f[x-1].charCodeAt(0)?ga+=f[x].toString():(""!== -ga&&q.push(parseFloat(ga)),ga=f[x].toString()):ga+=f[x].toString(),x++,x===f.length?D=!0:v=f[x].charCodeAt(0);""!==ga&&(q.push(parseFloat(ga)),ga="");nc=f[u];v=nc.charCodeAt(0);if(77===v){if(2<=q.length&&0===q.length%2&&(a=q[0],b=q[1],this.parsePathMoveto(a,b),2this.params[2]||0>this.params[3])throw"svg error: negative width or height found while parsing ";};d.prototype.parseEllipse=function(a){this.kind=m.ELLIPSE;this.family=m.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("cx")|0;this.params[1]=this.element.getFloatAttribute("cy")|0;var b;if(a){if(a=b=this.element.getFloatAttribute("r"), -0>a)throw"svg error: negative radius found while parsing ";}else if(a=this.element.getFloatAttribute("rx"),b=this.element.getFloatAttribute("ry"),0>a||0>b)throw"svg error: negative x-axis radius or y-axis radius found while parsing ";this.params[0]-=a;this.params[1]-=b;this.params[2]=2*a;this.params[3]=2*b};d.prototype.parseLine=function(){this.kind=m.LINE;this.family=m.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("x1");this.params[1]=this.element.getFloatAttribute("y1"); -this.params[2]=this.element.getFloatAttribute("x2");this.params[3]=this.element.getFloatAttribute("y2")};d.prototype.parseColors=function(a){a.hasAttribute("opacity")&&this.setOpacity(a.getAttribute("opacity"));a.hasAttribute("stroke")&&this.setStroke(a.getAttribute("stroke"));a.hasAttribute("stroke-width")&&this.setStrokeWeight(a.getAttribute("stroke-width"));a.hasAttribute("stroke-linejoin")&&this.setStrokeJoin(a.getAttribute("stroke-linejoin"));a.hasAttribute("stroke-linecap")&&this.setStrokeCap(a.getStringAttribute("stroke-linecap")); -a.hasAttribute("fill")&&this.setFill(a.getStringAttribute("fill"));if(a.hasAttribute("style")){a=a.getStringAttribute("style").toString().split(";");for(var b=0,d=a.length;bb?a:a.indexOf("pt")===b?1.25*parseFloat(a.substring(0,b)):a.indexOf("pc")=== -b?15*parseFloat(a.substring(0,b)):a.indexOf("mm")===b?3.543307*parseFloat(a.substring(0,b)):a.indexOf("cm")===b?35.43307*parseFloat(a.substring(0,b)):a.indexOf("in")===b?90*parseFloat(a.substring(0,b)):a.indexOf("px")===b?parseFloat(a.substring(0,b)):parseFloat(a)};return d}},{}],17:[function(D,x,Q){x.exports=function(k,h){function m(a,b,l){this.x=a||0;this.y=b||0;this.z=l||0}function n(a){return function(b,l){var p=b.get();p[a](l);return p}}var a=k.PConstants;m.fromAngle=function(a,b){if(b===h|| -null===b)b=new m;b.x=Math.cos(a);b.y=Math.sin(a);return b};m.random2D=function(b){return m.fromAngle(Math.random()*a.TWO_PI,b)};m.random3D=function(b){var f=Math.random()*a.TWO_PI,l=2*Math.random()-1,p=Math.sqrt(1-l*l),r=p*Math.cos(f),f=p*Math.sin(f);b===h||null===b?b=new m(r,f,l):b.set(r,f,l);return b};m.dist=function(a,b){return a.dist(b)};m.dot=function(a,b){return a.dot(b)};m.cross=function(a,b){return a.cross(b)};m.sub=function(a,b){return new m(a.x-b.x,a.y-b.y,a.z-b.z)};m.angleBetween=function(a, -b){return Math.acos(a.dot(b)/(a.mag()*b.mag()))};m.lerp=function(a,b,l){a=new m(a.x,a.y,a.z);a.lerp(b,l);return a};m.prototype={set:function(a,b,l){1===arguments.length?this.set(a.x||a[0]||0,a.y||a[1]||0,a.z||a[2]||0):(this.x=a,this.y=b,this.z=l)},get:function(){return new m(this.x,this.y,this.z)},mag:function(){var a=this.x,b=this.y,l=this.z;return Math.sqrt(a*a+b*b+l*l)},magSq:function(){var a=this.x,b=this.y,l=this.z;return a*a+b*b+l*l},setMag:function(a,b){if(b===h)b=a,this.normalize(),this.mult(b); -else return a.normalize(),a.mult(b),a},add:function(a,b,l){1===arguments.length?(this.x+=a.x,this.y+=a.y,this.z+=a.z):(this.x+=a,this.y+=b,this.z+=l)},sub:function(a,b,l){1===arguments.length?(this.x-=a.x,this.y-=a.y,this.z-=a.z):(this.x-=a,this.y-=b,this.z-=l)},mult:function(a){"number"===typeof a?(this.x*=a,this.y*=a,this.z*=a):(this.x*=a.x,this.y*=a.y,this.z*=a.z)},div:function(a){"number"===typeof a?(this.x/=a,this.y/=a,this.z/=a):(this.x/=a.x,this.y/=a.y,this.z/=a.z)},rotate:function(a){var b= -this.x,l=Math.cos(a);a=Math.sin(a);this.x=l*this.x-a*this.y;this.y=a*b+l*this.y},dist:function(a){var b=this.x-a.x,l=this.y-a.y;a=this.z-a.z;return Math.sqrt(b*b+l*l+a*a)},dot:function(a,b,l){return 1===arguments.length?this.x*a.x+this.y*a.y+this.z*a.z:this.x*a+this.y*b+this.z*l},cross:function(a){var b=this.x,l=this.y,p=this.z;return new m(l*a.z-a.y*p,p*a.x-a.z*b,b*a.y-a.x*l)},lerp:function(a,b,l,p){var r,c;2===arguments.length?(p=b,r=a.x,c=a.y,l=a.z):(r=a,c=b);this.x+=(r-this.x)*p;this.y+=(c-this.y)* -p;this.z+=(l-this.z)*p},normalize:function(){var a=this.mag();0a&&(this.normalize(),this.mult(a))},heading:function(){return-Math.atan2(-this.y,this.x)},heading2D:function(){return this.heading()},toString:function(){return"["+this.x+", "+this.y+", "+this.z+"]"},array:function(){return[this.x,this.y,this.z]}};for(var b in m.prototype)m.prototype.hasOwnProperty(b)&&!m.hasOwnProperty(b)&&(m[b]=n(b));return m}},{}],18:[function(D,x,Q){x.exports=function(){var k= -function(h,k,n,a,b){this.fullName=h||"";this.name=k||"";this.namespace=n||"";this.value=a;this.type=b};k.prototype={getName:function(){return this.name},getFullName:function(){return this.fullName},getNamespace:function(){return this.namespace},getValue:function(){return this.value},getType:function(){return this.type},setValue:function(h){this.value=h}};return k}},{}],19:[function(D,x,Q){x.exports=function(k,h){var m=k.Browser,n=m.ajax,a=m.window.DOMParser,b=k.XMLAttribute,d=function(a,b,d,r){this.attributes= -[];this.children=[];this.name=this.fullName=null;this.namespace="";this.parent=this.content=null;this.systemID=this.lineNr="";this.type="ELEMENT";a&&("string"===typeof a?b===h&&-1":">","'":"'",'"':"""},r;for(r in d)Object.hasOwnProperty(d, -r)||(a=a.replace(RegExp(r,"g"),d[r]));b.cdata=a;return b},hasAttribute:function(){if(1===arguments.length)return null!==this.getAttribute(arguments[0]);if(2===arguments.length)return null!==this.getAttribute(arguments[0],arguments[1])},equals:function(a){if(!(a instanceof d))return!1;var b,p;if(this.fullName!==a.fullName||this.attributes.length!==a.getAttributeCount()||this.attributes.length!==a.attributes.length)return!1;var r,c;b=0;for(p=this.attributes.length;ba&&this.children.splice(a,1)},findAttribute:function(a,b){this.namespace=b||"";for(var d=0,r=this.attributes.length;da?arguments[0]:arguments[0].substring(a+1);this.fullName=arguments[0];this.namespace=arguments[1]}},getName:function(){return this.fullName},getLocalName:function(){return this.name},getAttributeCount:function(){return this.attributes.length},toString:function(){if("TEXT"===this.type)return this.content; -if("CDATA"===this.type)return this.cdata;var a=this.fullName,b="<"+a,d;for(d=0;d":b+(">"+this.content+"");else{b+=">";for(d=0;d"}return b}};d.parse=function(a){var b=new d;b.parse(a);return b};return d}},{}],20:[function(D,x,Q){x.exports={aliceblue:"#f0f8ff",antiquewhite:"#faebd7", -aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f", -darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0", -hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32", -linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6", -palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4", -tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},{}],21:[function(D,x,Q){x.exports=function(k,h,m){return function(n,a){n.__contains=function(b,d){return"string"!==typeof b?b.contains.apply(b,a(arguments)):null!==b&&null!==d&&"string"===typeof d&&-1h)return b;var k=0,r="";do r+=b.substring(k,h)+f,k=h+d.length;while(0<=(h=b.indexOf(d,k)));return r+b.substring(k)};n.__equals=function(b, -d){return b.equals instanceof Function?b.equals.apply(b,a(arguments)):h(b,d)};n.__equalsIgnoreCase=function(b,d){return"string"!==typeof b?b.equalsIgnoreCase.apply(b,a(arguments)):b.toLowerCase()===d.toLowerCase()};n.__toCharArray=function(b){if("string"!==typeof b)return b.toCharArray.apply(b,a(arguments));for(var d=[],f=0,h=b.length;ff)return b.split(h); -for(var k=[],r=b,c;-1!==(c=r.search(h))&&k.length=f?(h=a.charCodeAt(d+1),1024*(f-55296)+(h-56320)+65536):f};n.__matches=function(a,d){return RegExp(d).test(a)};n.__startsWith=function(b,d,f){if("string"!==typeof b)return b.startsWith.apply(b,a(arguments));f=f||0;return 0>f||f>b.length?!1:""===d||d===b? -!0:b.indexOf(d)===f};n.__endsWith=function(b,d){if("string"!==typeof b)return b.endsWith.apply(b,a(arguments));var f=d?d.length:0;return""===d||d===b?!0:b.indexOf(d)===b.length-f};n.__hashCode=function(b){return b.hashCode instanceof Function?b.hashCode.apply(b,a(arguments)):k(b)};n.__printStackTrace=function(a){n.println("Exception: "+a.toString())}}}},{}],22:[function(D,x,Q){x.exports=function(k,h){function m(a,b){var c=a||362436069,d=b||521288629,f=function(){c=36969*(c&65535)+(c>>>16)&4294967295; -d=18E3*(d&65535)+(d>>>16)&4294967295;return((c&65535)<<16|d&65535)&4294967295};this.doubleGenerator=function(){var a=f()/4294967296;return 0>a?1+a:a};this.intGenerator=f}function n(a){function b(a,c,d,f){a&=15;var r=8>a?c:d;c=4>a?d:12===a||14===a?c:f;return(0===(a&1)?r:-r)+(0===(a&2)?c:-c)}function c(a,b,c){b=0===(a&1)?b:c;return 0===(a&2)?-b:b}function d(a,b,c){return b+a*(c-b)}a=a!==h?new m(a):m.createRandomized();var f,k,l=new Uint8Array(512);for(f=0;256>f;++f)l[f]=f;for(f=0;256>f;++f){var n=l[k= -a.intGenerator()&255];l[k]=l[f];l[f]=n}for(f=0;256>f;++f)l[f+256]=l[f];this.noise3d=function(a,c,f){var h=Math.floor(a)&255,k=Math.floor(c)&255,p=Math.floor(f)&255;a-=Math.floor(a);c-=Math.floor(c);f-=Math.floor(f);var m=(3-2*a)*a*a,n=(3-2*c)*c*c,G=l[h]+k,ca=l[G]+p,G=l[G+1]+p,k=l[h+1]+k,h=l[k]+p,p=l[k+1]+p;return d((3-2*f)*f*f,d(n,d(m,b(l[ca],a,c,f),b(l[h],a-1,c,f)),d(m,b(l[G],a,c-1,f),b(l[p],a-1,c-1,f))),d(n,d(m,b(l[ca+1],a,c,f-1),b(l[h+1],a-1,c,f-1)),d(m,b(l[G+1],a,c-1,f-1),b(l[p+1],a-1,c-1,f-1))))}; -this.noise2d=function(a,b){var f=Math.floor(a)&255,r=Math.floor(b)&255;a-=Math.floor(a);b-=Math.floor(b);var h=(3-2*a)*a*a,k=l[f]+r,f=l[f+1]+r;return d((3-2*b)*b*b,d(h,c(l[k],a,b),c(l[f],a-1,b)),d(h,c(l[k+1],a,b-1),c(l[f+1],a-1,b-1)))};this.noise1d=function(a){var b=Math.floor(a)&255;a-=Math.floor(a);return d((3-2*a)*a*a,0===(l[b]&1)?-a:a,0===(l[b+1]&1)?-(a-1):a-1)}}var a=function(){return Math.random()};k.abs=Math.abs;k.ceil=Math.ceil;k.exp=Math.exp;k.floor=Math.floor;k.log=Math.log;k.pow=Math.pow; -k.round=Math.round;k.sqrt=Math.sqrt;k.acos=Math.acos;k.asin=Math.asin;k.atan=Math.atan;k.atan2=Math.atan2;k.cos=Math.cos;k.sin=Math.sin;k.tan=Math.tan;k.constrain=function(a,b,c){return a>c?c:aa[d]&&(b=a[d]);return b};k.norm=function(a,b,c){return(a-b)/(c-b)};k.sq=function(a){return a*a};k.degrees=function(a){return 180*a/Math.PI};k.random=function(){if(0===arguments.length)return a();if(1===arguments.length)return a()*arguments[0];var b=arguments[0],d=arguments[1];return a()*(d-b)+b};m.createRandomized=function(){var a= -new Date;return new m(a/6E4&4294967295,a&4294967295)};k.randomSeed=function(b){a=(new m(b)).doubleGenerator;this.haveNextNextGaussian=!1};k.randomGaussian=function(){if(this.haveNextNextGaussian)return this.haveNextNextGaussian=!1,this.nextNextGaussian;var b,d,c;do b=2*a()-1,d=2*a()-1,c=b*b+d*d;while(1<=c||0===c);c=Math.sqrt(-2*Math.log(c)/c);this.nextNextGaussian=d*c;this.haveNextNextGaussian=!0;return b*c};var b=h,d=4,f=0.5,l=h;k.noise=function(a,k,c){b===h&&(b=new n(l));for(var m=b,ca=1,G=1,A= -0,x=0;xh?a:n;a=0===d;d=d===k||0>d?0:d;h=Math.abs(h);if(a)for(d=1,h*=10;1E-6d;)++d,h*=10;else 0!==d&&(h*=Math.pow(10,d));a=2*h;Math.floor(h)===h?a=h:Math.floor(a)===a?(h=Math.floor(h),a=h+h%2):a=Math.round(h);h="";for(b+=d;0\=]+)/g,function(a,b){var e=c(b);return e.untrim("__int_cast("+e.middle+")")});a=a.replace(/\bsuper(\s*"B\d+")/g,"$$superCstr$1").replace(/\bsuper(\s*\.)/g,"$$super$1");a=a.replace(/\b0+((\d*)(?:\.[\d*])?(?:[eE][\-\+]?\d+)?[fF]?)\b/,function(a,b,c){return b===c?a:""===c?"0"+b:b});a=a.replace(/\b(\.?\d+\.?)[fF]\b/g,"$1");a= -a.replace(/([^\s])%([^=\s])/g,"$1 % $2");a=a.replace(/\b(frameRate|keyPressed|mousePressed)\b(?!\s*"B)/g,"__$1");a=a.replace(/\b(boolean|byte|char|float|int)\s*"B/g,function(a,b){return"parse"+b.substring(0,1).toUpperCase()+b.substring(1)+'"B'});a=a.replace(/\bpixels\b\s*(("C(\d+)")|\.length)?(\s*=(?!=)([^,\]\)\}]+))?/g,function(a,b,c,e,d,f){return c?(a=N[e],d?"pixels.setPixel"+n("("+a.substring(1,a.length-1)+","+f+")","B"):"pixels.getPixel"+n("("+a.substring(1,a.length-1)+")","B")):b?"pixels.getLength"+ -n("()","B"):d?"pixels.set"+n("("+f+")","B"):"pixels.toArray"+n("()","B")});var d;do d=!1,a=a.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*\.\s*(?:[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*\.\s*)*)(replace|replaceAll|replaceFirst|contains|equals|equalsIgnoreCase|hashCode|toCharArray|printStackTrace|split|startsWith|endsWith|codePointAt|matches)\s*"B(\d+)"/g,b);while(d);do d=!1,a=a.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*(?:\.\s*[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*)*)instanceof\s+([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)/g, -e);while(d);return a=a.replace(/\bthis(\s*"B\d+")/g,"$$constr$1")}function u(a,b){this.baseInterfaceName=a;this.body=b;b.owner=this}function nd(a){var b=RegExp(/\bnew\s*([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)\s*"B\d+"\s*"A(\d+)"/).exec(a);a=ja;var c="class"+ ++ab;ja=c;var e=b[1]+"$"+c,b=new u(e,ea(N[b[2]],e,"","implements "+b[1]));b.classId=c;b.scopeId=a;X[c]=b;ja=a;return b}function Ia(a,b,c){this.name=a;this.params=b;this.body=c}function T(a){a=RegExp(/\b([A-Za-z_$][\w$]*)\s*"B(\d+)"\s*"A(\d+)"/).exec(a); -return new Ia("function"!==a[1]?a[1]:null,M(N[a[2]]),ra(N[a[3]]))}function Y(a){this.members=a}function U(a){a=a.split(",");for(var b=0;bc?{value:ma(a[b])}:{label:f(a[b].substring(0,c)),value:ma(f(a[b].substring(c+1)))}}return new Y(a)}function Z(a){if("("===a.charAt(0)||"["===a.charAt(0))return a.charAt(0)+Z(a.substring(1,a.length-1))+a.charAt(a.length-1);if("{"===a.charAt(0))return/^\{\s*(?:[A-Za-z_$][\w$]*|'\d+')\s*:/.test(a)?"{"+n(a.substring(1,a.length- -1),"I")+"}":"["+Z(a.substring(1,a.length-1))+"]";a=c(a);var b=Q(a.middle),b=b.replace(/"[ABC](\d+)"/g,function(a,b){return Z(N[b])});return a.untrim(b)}function sa(a){return a.replace(/(\.\s*)?((?:\b[A-Za-z_]|\$)[\w$]*)(\s*\.\s*([A-Za-z_$][\w$]*)(\s*\()?)?/g,function(a,b,c,e,d,f){return b?a:C({name:c,member:d,callSign:!!f})+(e===p?"":e)})}function ta(a,b){this.expr=a;this.transforms=b}function $b(a,b,c){this.name=a;this.value=b;this.isDefault=c}function bb(a,b){var c=a.indexOf("="),e,d;0>c?(e=a,c= -b,d=!0):(e=a.substring(0,c),c=ma(a.substring(c+1)),d=!1);return new $b(f(e.replace(/(\s*"C\d+")+/g,"")),c,d)}function Sa(a){return"int"===a||"float"===a?"0":"boolean"===a?"false":"color"===a?"0x00000000":"null"}function cb(a,b){this.definitions=a;this.varType=b}function Fb(a){this.expression=a}function db(a){if(Gb.test(a)){var b=ub.exec(a);a=a.substring(b[0].length).split(",");for(var c=Sa(b[2]),e=0;ea.indexOf(";"))return a=a.substring(1,a.length-1).split(":"),new wa(db(f(a[0])),ma(a[1]));a=a.substring(1,a.length-1).split(";");return new Hb(db(f(a[0])),ma(a[1]),ma(a[2]))}function Ta(a){a.sort(function(a,b){return b.weight- -a.weight})}function Ja(a,b,c){this.name=a;this.body=b;this.isStatic=c;b.owner=this}function Jb(a,b,c){this.name=a;this.body=b;this.isStatic=c;b.owner=this}function Kb(a){var b=qa.exec(a);qa.lastIndex=0;var c=0<=b[1].indexOf("static"),e=N[l(b[6])];a=ja;var d="class"+ ++ab;ja=d;b="interface"===b[2]?new Ja(b[3],eb(e,b[3],b[4]),c):new Jb(b[3],ea(e,b[3],b[4],b[5]),c);b.classId=d;b.scopeId=a;X[d]=b;ja=a;return b}function Lb(a,b,c,e){this.name=a;this.params=b;this.body=c;this.isStatic=e}function fb(a){a= -la.exec(a);la.lastIndex=0;var b=0<=a[1].indexOf("static"),c=";"!==a[6]?N[l(a[6])]:"{}";return new Lb(a[3],M(N[l(a[4])]),ra(c),b)}function Mb(a,b,c){this.definitions=a;this.fieldType=b;this.isStatic=c}function Ua(a){var b=ub.exec(a),c=0<=b[1].indexOf("static");a=a.substring(b[0].length).split(/,\s*/g);for(var e=Sa(b[2]),d=0;d([=]?)/g,La);while(ka);var N=function(a){var b=[];a=a.split(/([\{\[\(\)\]\}])/);for(var c=a[0],e=[],d=1;d=":"===")+" "+m+") { $constr_"+m+".apply("+a+", arguments); }");0f)return!1;d.splice(f,1);if(0");b.javaconsole.innerHTML=b.BufferArray.join("");"hidden"===b.wrapper.style.visibility&&(b.wrapper.style.visibility="visible");b.BufferArray.length>b.BufferMax?b.BufferArray.splice(0, -1):b.javaconsole.scrollTop=b.javaconsole.scrollHeight;"hidden"===b.wrapper.style.visibility&&(b.wrapper.style.visibility="visible")};b.showconsole=function(){b.wrapper.style.visibility="visible"};b.hideconsole=function(){b.wrapper.style.visibility="hidden"};b.closer.onclick=function(){b.hideconsole()};b.hideconsole();return b}(l);return k}},{}],26:[function(D,x,Q){x.exports=function(k,h){function m(a,b){return a in l?l[a]:"function"===typeof l[b]?l[b]:function(a){if(a instanceof Array)return a;if("number"=== -typeof a){var b=[];b.length=a;return b}}}var n=k.defaultScope,a=k.extend,b=k.Browser,d=b.ajax,f=b.navigator,l=b.window,p=b.document,r=k.noop,c=n.PConstants;PFont=n.PFont;PShapeSVG=n.PShapeSVG;PVector=n.PVector;Char=Character=n.Char;ObjectIterator=n.ObjectIterator;XMLElement=n.XMLElement;XML=n.XML;var x=l.HTMLCanvasElement,D=l.HTMLImageElement,G=l.localStorage;p.head||(p.head=p.getElementsByTagName("head")[0]);var A=m("Float32Array","WebGLFloatArray"),Q=m("Int32Array","WebGLIntArray"),v=m("Uint16Array", -"WebGLUnsignedShortArray"),ga=m("Uint8Array","WebGLUnsignedByteArray");if(9<=p.documentMode&&!p.doctype)throw"The doctype directive is missing. The recommended doctype in Internet Explorer is the HTML5 doctype: ";var q=[],Zb={},M=this.Processing=function(b,k,m){function Ia(a,b,z){a.addEventListener?a.addEventListener(b,z,!1):a.attachEvent("on"+b,z);wb.push({elem:a,type:b,fn:z})}function T(a,b,z,c){var e=Fa.locations[a];e===h&&(e=g.getUniformLocation(b,z),Fa.locations[a]=e);null!==e&& -(4===c.length?g.uniform4fv(e,c):3===c.length?g.uniform3fv(e,c):2===c.length?g.uniform2fv(e,c):g.uniform1f(e,c))}function Y(a,b,z,c){var e=Fa.locations[a];e===h&&(e=g.getUniformLocation(b,z),Fa.locations[a]=e);null!==e&&(4===c.length?g.uniform4iv(e,c):3===c.length?g.uniform3iv(e,c):2===c.length?g.uniform2iv(e,c):g.uniform1i(e,c))}function U(a,b,z,c,e){var d=Fa.locations[a];d===h&&(d=g.getUniformLocation(b,z),Fa.locations[a]=d);-1!==d&&(16===e.length?g.uniformMatrix4fv(d,c,e):9===e.length?g.uniformMatrix3fv(d, -c,e):g.uniformMatrix2fv(d,c,e))}function Z(a,b,z,c,e){var d=Fa.attributes[a];d===h&&(d=g.getAttribLocation(b,z),Fa.attributes[a]=d);-1!==d&&(g.bindBuffer(g.ARRAY_BUFFER,e),g.vertexAttribPointer(d,c,g.FLOAT,!1,0,0),g.enableVertexAttribArray(d))}function sa(a,b,z){var c=Fa.attributes[a];c===h&&(c=g.getAttribLocation(b,z),Fa.attributes[a]=c);-1!==c&&g.disableVertexAttribArray(c)}function ta(a,b,z,$){Va===c.HSB?(z=e.color.toRGB(a,b,z),a=z[0],b=z[1],z=z[2]):(a=Math.round(255*(a/xa)),b=Math.round(255*(b/ -Ea)),z=Math.round(255*(z/ya)));$=Math.round(255*($/ia));a=0>a?0:a;b=0>b?0:b;z=0>z?0:z;$=0>$?0:$;return(255<$?255:$)<<24&c.ALPHA_MASK|(255>>16)/255;z=((a&c.GREEN_MASK)>>>8)/255;$=(a&c.BLUE_MASK)/255;a=e.max(e.max(b,z),$);var d=e.min(e.min(b, -z),$);if(d===a)return[0,0,a*ya];b=(b===a?(z-$)/(a-d):z===a?2+($-b)/(a-d):4+(b-z)/(a-d))/6;0>b?b+=1:1>>16;d[e+1]=(b&c.GREEN_MASK)>>>8;d[e+2]=b&c.BLUE_MASK; -d[e+3]=(b&c.ALPHA_MASK)>>>24;a.__isDirty=!0}}(a),toArray:function(a){return function(){var L=[],b=a.imageData.data,e=a.width*a.height;if(a.isRemote)throw"Image is loaded remotely. Cannot get pixels.";for(var d=0,f=0;d>>16,e[b+1]=(d&c.GREEN_MASK)>>>8,e[b+2]=d&c.BLUE_MASK,e[b+3]=(d&c.ALPHA_MASK)>>>24;a.__isDirty=!0}}(a)}}function Kb(a,b,z,$){var d=new Ga(z,$,c.ARGB);d.fromImageData(e.toImageData(a,b,z,$));return d}function Lb(a,b,z,e,d){if(d.isRemote)throw"Image is loaded remotely. Cannot get x,y,w,h.";var f=new Ga(z,e,c.ARGB),g=f.imageData.data,h=d.width,s=d.height;d=d.imageData.data;var k=Math.max(0,-b),l=Math.max(0,-a);e=Math.min(e,s-b);for(s=Math.min(z,h-a);ka.indexOf("\n")?(a=[a],d=1):(a=a.split(/\r?\n/g),d=a.length);var f=0;Wa===c.TOP?f=Xa+Ma:Wa===c.CENTER?f=Xa/2-(d-1)*Aa/2:Wa===c.BOTTOM&&(f=-(Ma+(d-1)*Aa));for(var g=0;gd)){for(var g=-1,h=0,s=0,k=[],l=0,n=a.length;ld-Ma)break;s=k[h];ha.text$line(s.text,b+a,z+g+l,f,nb)}}}function Ka(a){ha="3D"===a?new B:"2D"===a?new E:new F;for(var b in F.prototype)F.prototype.hasOwnProperty(b)&& -0>b.indexOf("$")&&(e[b]=ha[b]);ha.$init()}function H(a){return function(){Ka("2D");return ha[a].apply(this,arguments)}}function lb(a){a=a.which||a.keyCode;switch(a){case 13:return 10;case 91:case 93:case 224:return 157;case 57392:return 17;case 46:return 127;case 45:return 155}return a}function mb(a){"function"===typeof a.preventDefault?a.preventDefault():"function"===typeof a.stopPropagation&&a.stopPropagation();return!1}function Ob(){for(var a in hb)if(hb.hasOwnProperty(a)){e.__keyPressed=!0;return}e.__keyPressed= -!1}function vb(a,b){hb[a]=b;ob=null;e.key=b;e.keyCode=a;e.keyPressed();e.keyCode=0;e.keyTyped();Ob()}function rc(a){var b=lb(a);if(b===c.DELETE)vb(b,new Char(127));else if(0>qd.indexOf(b))ob=b;else{var z=new Char(c.CODED);e.key=z;e.keyCode=b;hb[b]=z;e.keyPressed();ob=null;Ob();return mb(a)}}function Pb(a){if(null!==ob){var b=ob,z;z=a.which||a.keyCode;var c=a.shiftKey||a.ctrlKey||a.altKey||a.metaKey;switch(z){case 13:z=c?13:10;break;case 8:z=c?127:8}z=new Char(z);vb(b,z);return mb(a)}}function bc(a){a= -lb(a);var b=hb[a];b!==h&&(e.key=b,e.keyCode=a,e.keyReleased(),delete hb[a],Ob())}if(!(this instanceof M))throw"called Processing constructor as if it were a function: missing 'new'.";var S={},Qb=b===h&&k===h,S=Qb?p.createElement("canvas"):"string"===typeof b?p.getElementById(b):b;if(!("getContext"in S))throw"called Processing constructor without passing canvas element reference or id.";var wb=[],e=this;e.Char=e.Character=Char;a.withCommonFunctions(e);a.withMath(e);a.withProxyFunctions(e,function(a){return Array.prototype.slice.call(a, -1)});a.withTouch(e,S,Ia,p,c);m&&Object.keys(m).forEach(function(a){e[a]=m[a]});e.externals={canvas:S,context:h,sketch:h,window:l};e.name="Processing.js Instance";e.use3DContext=!1;e.focused=!1;e.breakShape=!1;e.glyphTable={};e.pmouseX=0;e.pmouseY=0;e.mouseX=0;e.mouseY=0;e.mouseButton=0;e.mouseScroll=0;e.mouseClicked=h;e.mouseDragged=h;e.mouseMoved=h;e.mousePressed=h;e.mouseReleased=h;e.mouseScrolled=h;e.mouseOver=h;e.mouseOut=h;e.touchStart=h;e.touchEnd=h;e.touchMove=h;e.touchCancel=h;e.key=h;e.keyCode= -h;e.keyPressed=r;e.keyReleased=r;e.keyTyped=r;e.draw=h;e.setup=h;e.__mousePressed=!1;e.__keyPressed=!1;e.__frameRate=60;e.frameCount=0;e.width=100;e.height=100;var g,da,ha,R=!0,ka=[1,1,1,1],La=4294967295,N=!0,C=!0,X=[0,0,0,1],ja=4278190080,ab=!0,ea=1,eb=!1,ra=!1,Da=!0,ma=0,qa=c.CORNER,la=c.CENTER,Gb=0,Eb=0,ub=0,jb=c.NORMAL_MODE_AUTO,tb=60,Kc=1E3/tb,od=S.style.cursor,aa=c.POLYGON,oc=0,pc=20,Lc=!1,kb=-3355444,qc=20,ia=255,xa=255,Ea=255,ya=255,cc=0,dc=0,Va=c.RGB,gb=null,sc=null,Oc=Date.now(),tc=Oc,ec= -0,Ba,Sb,fc,xb,yb,uc,vc,Fa={attributes:{},locations:{}},y,J,na,wc,xc,yc,gc,zc,Tb,Ac,Pc,Bc,Qc,hc,Rc,Sc,Tc,Uc=0,Vc=0,Wc=c.IMAGE,ua=!1,Cc,Dc,Ec,nb=c.LEFT,Wa=c.BASELINE,ic=c.MODEL,zb="Arial",Na=12,Xa=9,Ma=2,Aa=14,ba=PFont.get(zb,Na),Nc,Fc=null,Rb=!1,Xc,Yc=1E3,hb=[],ob=null,qd=[c.SHIFT,c.CONTROL,c.ALT,c.CAPSLK,c.PGUP,c.PGDN,c.END,c.HOME,c.LEFT,c.UP,c.RIGHT,c.DOWN,c.NUMLK,c.INSERT,c.F1,c.F2,c.F3,c.F4,c.F5,c.F6,c.F7,c.F8,c.F9,c.F10,c.F11,c.F12,c.META],O=0,jc=0,pb=0,Oa=[],Pa=[],Qa=[],Ub=new A(c.SINCOS_LENGTH), -Vb=new A(c.SINCOS_LENGTH),P,qb,Ra,K,fa,Ab,Bb,Wb,Ha,kc=!1,lc=60*(Math.PI/180),Gc=e.width/2,rb=e.height/2,sb=rb/Math.tan(lc/2),Zc=sb/10,$c=10*sb,ad=e.width/e.height,t=[],va=[],oa=0,Cb=!1,Db=!1,ib=!0,Xb=c.CORNER,bd=[],cd=new A([0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,0.5,-0.5,-0.5, -0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5]),dd=new A([0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5, --0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5]),rd=new A([0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0]),Hc=new A([0,0,0,0,1,0,1,1,0,1,0,0]),sd=new A([0,0,1,0,0,1,0,0,1,0,0,1]),td="varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec3 aNormal;attribute vec4 aColor;attribute vec2 aTexture;varying vec2 vTexture;uniform vec4 uColor;uniform bool uUsingMat;uniform vec3 uSpecular;uniform vec3 uMaterialEmissive;uniform vec3 uMaterialAmbient;uniform vec3 uMaterialSpecular;uniform float uShininess;uniform mat4 uModel;uniform mat4 uView;uniform mat4 uProjection;uniform mat4 uNormalTransform;uniform int uLightCount;uniform vec3 uFalloff;struct Light { int type; vec3 color; vec3 position; vec3 direction; float angle; vec3 halfVector; float concentration;};uniform Light uLights0;uniform Light uLights1;uniform Light uLights2;uniform Light uLights3;uniform Light uLights4;uniform Light uLights5;uniform Light uLights6;uniform Light uLights7;Light getLight(int index){ if(index == 0) return uLights0; if(index == 1) return uLights1; if(index == 2) return uLights2; if(index == 3) return uLights3; if(index == 4) return uLights4; if(index == 5) return uLights5; if(index == 6) return uLights6; return uLights7;}void AmbientLight( inout vec3 totalAmbient, in vec3 ecPos, in Light light ) { float d = length( light.position - ecPos ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d )); totalAmbient += light.color * attenuation;}void DirectionalLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float powerFactor = 0.0; float nDotVP = max(0.0, dot( vertNormal, normalize(-light.position) )); float nDotVH = max(0.0, dot( vertNormal, normalize(-light.position-normalize(ecPos) ))); if( nDotVP != 0.0 ){ powerFactor = pow( nDotVH, uShininess ); } col += light.color * nDotVP; spec += uSpecular * powerFactor;}void PointLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float powerFactor; vec3 VP = light.position - ecPos; float d = length( VP ); VP = normalize( VP ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d )); float nDotVP = max( 0.0, dot( vertNormal, VP )); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector )); if( nDotVP == 0.0 ) { powerFactor = 0.0; } else { powerFactor = pow( nDotHV, uShininess ); } spec += uSpecular * powerFactor * attenuation; col += light.color * nDotVP * attenuation;}void SpotLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float spotAttenuation; float powerFactor = 0.0; vec3 VP = light.position - ecPos; vec3 ldir = normalize( -light.direction ); float d = length( VP ); VP = normalize( VP ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d ) ); float spotDot = dot( VP, ldir );"+ -(/Windows/.test(f.userAgent)?" spotAttenuation = 1.0; ":" if( spotDot > cos( light.angle ) ) { spotAttenuation = pow( spotDot, light.concentration ); } else{ spotAttenuation = 0.0; } attenuation *= spotAttenuation;")+" float nDotVP = max( 0.0, dot( vertNormal, VP ) ); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector ) ); if( nDotVP != 0.0 ) { powerFactor = pow( nDotHV, uShininess ); } spec += uSpecular * powerFactor * attenuation; col += light.color * nDotVP * attenuation;}void main(void) { vec3 finalAmbient = vec3( 0.0 ); vec3 finalDiffuse = vec3( 0.0 ); vec3 finalSpecular = vec3( 0.0 ); vec4 col = uColor; if ( uColor[0] == -1.0 ){ col = aColor; } vec3 norm = normalize(vec3( uNormalTransform * vec4( aNormal, 0.0 ) )); vec4 ecPos4 = uView * uModel * vec4(aVertex, 1.0); vec3 ecPos = (vec3(ecPos4))/ecPos4.w; if( uLightCount == 0 ) { vFrontColor = col + vec4(uMaterialSpecular, 1.0); } else { for( int i = 0; i < 8; i++ ) { Light l = getLight(i); if( i >= uLightCount ){ break; } if( l.type == 0 ) { AmbientLight( finalAmbient, ecPos, l ); } else if( l.type == 1 ) { DirectionalLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else if( l.type == 2 ) { PointLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else { SpotLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } } if( uUsingMat == false ) { vFrontColor = vec4( vec3( col ) * finalAmbient + vec3( col ) * finalDiffuse + vec3( col ) * finalSpecular, col[3] ); } else{ vFrontColor = vec4( uMaterialEmissive + (vec3(col) * uMaterialAmbient * finalAmbient ) + (vec3(col) * finalDiffuse) + (uMaterialSpecular * finalSpecular), col[3] ); } } vTexture.xy = aTexture.xy; gl_Position = uProjection * uView * uModel * vec4( aVertex, 1.0 );}", -Ic=function(a,b,z){var c=a.createShader(a.VERTEX_SHADER);a.shaderSource(c,b);a.compileShader(c);if(!a.getShaderParameter(c,a.COMPILE_STATUS))throw a.getShaderInfoLog(c);b=a.createShader(a.FRAGMENT_SHADER);a.shaderSource(b,z);a.compileShader(b);if(!a.getShaderParameter(b,a.COMPILE_STATUS))throw a.getShaderInfoLog(b);z=a.createProgram();a.attachShader(z,c);a.attachShader(z,b);a.linkProgram(z);if(!a.getProgramParameter(z,a.LINK_STATUS))throw"Error linking shaders.";return z},ed=function(a,b,z,c,e){return{x:a, -y:b,w:z,h:c}},mc=ed,ud=function(a,b,z,c,e){return{x:a,y:b,w:e?z:z-a,h:e?c:c-b}},vd=function(a,b,z,c,e){return{x:a-z/2,y:b-c/2,w:z,h:c}},W=function(){},E=function(){},B=function(){},F=function(){};E.prototype=new W;E.prototype.constructor=E;B.prototype=new W;B.prototype.constructor=B;F.prototype=new W;F.prototype.constructor=F;W.prototype.a3DOnlyFunction=r;e.shape=function(a,b,z,$,d){1<=arguments.length&&null!==arguments[0]&&a.isVisible()&&(e.pushMatrix(),Xb===c.CENTER?5===arguments.length?(e.translate(b- -$/2,z-d/2),e.scale($/a.getWidth(),d/a.getHeight())):3===arguments.length?e.translate(b-a.getWidth()/2,-a.getHeight()/2):e.translate(-a.getWidth()/2,-a.getHeight()/2):Xb===c.CORNER?5===arguments.length?(e.translate(b,z),e.scale($/a.getWidth(),d/a.getHeight())):3===arguments.length&&e.translate(b,z):Xb===c.CORNERS&&(5===arguments.length?($-=b,d-=z,e.translate(b,z),e.scale($/a.getWidth(),d/a.getHeight())):3===arguments.length&&e.translate(b,z)),a.draw(e),(1===arguments.length&&Xb===c.CENTER||1c.MIN_INT){var b=this.elements[0],z=this.elements[1],e=this.elements[2],d=this.elements[3],f=this.elements[4],g=this.elements[5];this.elements[0]=f/a;this.elements[3]=-d/a;this.elements[1]=-z/a;this.elements[4]=b/a;this.elements[2]=(z*g-f*e)/a;this.elements[5]=(d*e-b*g)/a;return!0}return!1},scale:function(a,b){a&&!b&&(b=a);a&& -b&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[3]*=a,this.elements[4]*=b)},invScale:function(a,b){a&&!b&&(b=a);this.scale(1/a,1/b)},apply:function(){var a;1===arguments.length&&arguments[0]instanceof Ya?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,this.elements[2],0,0,this.elements[5]],z=0,c=0;2>c;c++)for(var e=0;3>e;e++,z++)b[z]+=this.elements[3*c+0]*a[e+0]+this.elements[3* -c+1]*a[e+3];this.elements=b.slice()},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof Ya?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);var b=[0,0,a[2],0,0,a[5]];b[2]=a[2]+this.elements[2]*a[0]+this.elements[5]*a[1];b[5]=a[5]+this.elements[2]*a[3]+this.elements[5]*a[4];b[0]=this.elements[0]*a[0]+this.elements[3]*a[1];b[3]=this.elements[0]*a[3]+this.elements[3]*a[4];b[1]= -this.elements[1]*a[0]+this.elements[4]*a[1];b[4]=this.elements[1]*a[3]+this.elements[4]*a[4];this.elements=b.slice()},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);var c=this.elements[0],e=this.elements[1];this.elements[0]=b*c+a*e;this.elements[1]=-a*c+b*e;c=this.elements[3];e=this.elements[4];this.elements[3]=b*c+a*e;this.elements[4]=-a*c+b*e},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a-Math.PI)},print:function(){var a=fd(this.elements),a=""+e.nfs(this.elements[0], -a,4)+" "+e.nfs(this.elements[1],a,4)+" "+e.nfs(this.elements[2],a,4)+"\n"+e.nfs(this.elements[3],a,4)+" "+e.nfs(this.elements[4],a,4)+" "+e.nfs(this.elements[5],a,4)+"\n\n";e.println(a)}};var I=e.PMatrix3D=function(){this.reset()};I.prototype={set:function(){16===arguments.length?this.elements=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof I?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())}, -get:function(){var a=new I;a.set(this.elements);return a},reset:function(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},array:function(){return this.elements.slice()},translate:function(a,b,c){c===h&&(c=0);this.elements[3]+=a*this.elements[0]+b*this.elements[1]+c*this.elements[2];this.elements[7]+=a*this.elements[4]+b*this.elements[5]+c*this.elements[6];this.elements[11]+=a*this.elements[8]+b*this.elements[9]+c*this.elements[10];this.elements[15]+=a*this.elements[12]+b*this.elements[13]+c*this.elements[14]}, -transpose:function(){var a=this.elements[4];this.elements[4]=this.elements[1];this.elements[1]=a;a=this.elements[8];this.elements[8]=this.elements[2];this.elements[2]=a;a=this.elements[6];this.elements[6]=this.elements[9];this.elements[9]=a;a=this.elements[3];this.elements[3]=this.elements[12];this.elements[12]=a;a=this.elements[7];this.elements[7]=this.elements[13];this.elements[13]=a;a=this.elements[11];this.elements[11]=this.elements[14];this.elements[14]=a},mult:function(a,b){var c,e,d,f;a instanceof -PVector?(c=a.x,e=a.y,d=a.z,f=1,b||(b=new PVector)):a instanceof Array&&(c=a[0],e=a[1],d=a[2],f=a[3]||1,!b||3!==b.length&&4!==b.length)&&(b=[0,0,0]);b instanceof Array&&(3===b.length?(b[0]=this.elements[0]*c+this.elements[1]*e+this.elements[2]*d+this.elements[3],b[1]=this.elements[4]*c+this.elements[5]*e+this.elements[6]*d+this.elements[7],b[2]=this.elements[8]*c+this.elements[9]*e+this.elements[10]*d+this.elements[11]):4===b.length&&(b[0]=this.elements[0]*c+this.elements[1]*e+this.elements[2]*d+this.elements[3]* -f,b[1]=this.elements[4]*c+this.elements[5]*e+this.elements[6]*d+this.elements[7]*f,b[2]=this.elements[8]*c+this.elements[9]*e+this.elements[10]*d+this.elements[11]*f,b[3]=this.elements[12]*c+this.elements[13]*e+this.elements[14]*d+this.elements[15]*f));b instanceof PVector&&(b.x=this.elements[0]*c+this.elements[1]*e+this.elements[2]*d+this.elements[3],b.y=this.elements[4]*c+this.elements[5]*e+this.elements[6]*d+this.elements[7],b.z=this.elements[8]*c+this.elements[9]*e+this.elements[10]*d+this.elements[11]); -return b},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof I?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,e=0;4>e;e++)for(var d=0;4>d;d++,c++)b[c]+=this.elements[d+0]*a[4*e+0]+this.elements[d+4]*a[4*e+1]+this.elements[d+8]*a[4*e+2]+this.elements[d+12]*a[4*e+3];this.elements=b.slice()},apply:function(){var a;1===arguments.length&& -arguments[0]instanceof I?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,e=0;4>e;e++)for(var d=0;4>d;d++,c++)b[c]+=this.elements[4*e+0]*a[d+0]+this.elements[4*e+1]*a[d+4]+this.elements[4*e+2]*a[d+8]+this.elements[4*e+3]*a[d+12];this.elements=b.slice()},rotate:function(a,b,c,d){if(4>arguments.length)this.rotateZ(a);else{var f=new PVector(b,c,d),g= -f.mag();if(0!==g){1!=g&&(f.normalize(),b=f.x,c=f.y,d=f.z);var f=e.cos(a),g=e.sin(a),h=1-f;this.apply(h*b*b+f,h*b*c-g*d,h*b*d+g*c,0,h*b*c+g*d,h*c*c+f,h*c*d-g*b,0,h*b*d-g*c,h*c*d+g*b,h*d*d+f,0,0,0,0,1)}}},invApply:function(){Wb===h&&(Wb=new I);var a=arguments;Wb.set(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);if(!Wb.invert())return!1;this.preApply(Wb);return!0},rotateX:function(a){var b=e.cos(a);a=e.sin(a);this.apply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},rotateY:function(a){var b= -e.cos(a);a=e.sin(a);this.apply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},rotateZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},scale:function(a,b,c){!a||b||c?a&&(b&&!c)&&(c=1):b=c=a;a&&(b&&c)&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[2]*=c,this.elements[4]*=a,this.elements[5]*=b,this.elements[6]*=c,this.elements[8]*=a,this.elements[9]*=b,this.elements[10]*=c,this.elements[12]*=a,this.elements[13]*=b,this.elements[14]*=c)},skewX:function(a){a= -Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},skewY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},shearX:function(a){a=Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},shearY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},multX:function(a,b,c,e){return c?e?this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]*e:this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]:this.elements[0]*a+this.elements[1]* -b+this.elements[3]},multY:function(a,b,c,e){return c?e?this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]*e:this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]:this.elements[4]*a+this.elements[5]*b+this.elements[7]},multZ:function(a,b,c,e){return e?this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]*e:this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]},multW:function(a,b,c,e){return e?this.elements[12]*a+ -this.elements[13]*b+this.elements[14]*c+this.elements[15]*e:this.elements[12]*a+this.elements[13]*b+this.elements[14]*c+this.elements[15]},invert:function(){var a=this.elements[0]*this.elements[5]-this.elements[1]*this.elements[4],b=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4],c=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4],e=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5],d=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5], -f=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6],g=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12],h=this.elements[8]*this.elements[14]-this.elements[10]*this.elements[12],s=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],k=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],l=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13],n=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14], -p=a*n-b*l+c*k+e*s-d*h+f*g;if(1E-9>=Math.abs(p))return!1;var m=[];m[0]=+this.elements[5]*n-this.elements[6]*l+this.elements[7]*k;m[4]=-this.elements[4]*n+this.elements[6]*s-this.elements[7]*h;m[8]=+this.elements[4]*l-this.elements[5]*s+this.elements[7]*g;m[12]=-this.elements[4]*k+this.elements[5]*h-this.elements[6]*g;m[1]=-this.elements[1]*n+this.elements[2]*l-this.elements[3]*k;m[5]=+this.elements[0]*n-this.elements[2]*s+this.elements[3]*h;m[9]=-this.elements[0]*l+this.elements[1]*s-this.elements[3]* -g;m[13]=+this.elements[0]*k-this.elements[1]*h+this.elements[2]*g;m[2]=+this.elements[13]*f-this.elements[14]*d+this.elements[15]*e;m[6]=-this.elements[12]*f+this.elements[14]*c-this.elements[15]*b;m[10]=+this.elements[12]*d-this.elements[13]*c+this.elements[15]*a;m[14]=-this.elements[12]*e+this.elements[13]*b-this.elements[14]*a;m[3]=-this.elements[9]*f+this.elements[10]*d-this.elements[11]*e;m[7]=+this.elements[8]*f-this.elements[10]*c+this.elements[11]*b;m[11]=-this.elements[8]*d+this.elements[9]* -c-this.elements[11]*a;m[15]=+this.elements[8]*e-this.elements[9]*b+this.elements[10]*a;a=1/p;m[0]*=a;m[1]*=a;m[2]*=a;m[3]*=a;m[4]*=a;m[5]*=a;m[6]*=a;m[7]*=a;m[8]*=a;m[9]*=a;m[10]*=a;m[11]*=a;m[12]*=a;m[13]*=a;m[14]*=a;m[15]*=a;this.elements=m.slice();return!0},toString:function(){for(var a="",b=0;15>b;b++)a+=this.elements[b]+", ";return a+=this.elements[15]},print:function(){var a=fd(this.elements),a=""+e.nfs(this.elements[0],a,4)+" "+e.nfs(this.elements[1],a,4)+" "+e.nfs(this.elements[2],a,4)+" "+ -e.nfs(this.elements[3],a,4)+"\n"+e.nfs(this.elements[4],a,4)+" "+e.nfs(this.elements[5],a,4)+" "+e.nfs(this.elements[6],a,4)+" "+e.nfs(this.elements[7],a,4)+"\n"+e.nfs(this.elements[8],a,4)+" "+e.nfs(this.elements[9],a,4)+" "+e.nfs(this.elements[10],a,4)+" "+e.nfs(this.elements[11],a,4)+"\n"+e.nfs(this.elements[12],a,4)+" "+e.nfs(this.elements[13],a,4)+" "+e.nfs(this.elements[14],a,4)+" "+e.nfs(this.elements[15],a,4)+"\n\n";e.println(a)},invTranslate:function(a,b,c){this.preApply(1,0,0,-a,0,1,0,-b, -0,0,1,-c,0,0,0,1)},invRotateX:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},invRotateY:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},invRotateZ:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},invScale:function(a,b,c){this.preApply([1/a,0,0,0,0,1/b,0,0,0,0,1/c,0,0,0,0,1])}};var Za=e.PMatrixStack=function(){this.matrixStack=[]};Za.prototype.load=function(){var a= -ha.$newPMatrix();1===arguments.length?a.set(arguments[0]):a.set(arguments);this.matrixStack.push(a)};E.prototype.$newPMatrix=function(){return new Ya};B.prototype.$newPMatrix=function(){return new I};Za.prototype.push=function(){this.matrixStack.push(this.peek())};Za.prototype.pop=function(){return this.matrixStack.pop()};Za.prototype.peek=function(){var a=ha.$newPMatrix();a.set(this.matrixStack[this.matrixStack.length-1]);return a};Za.prototype.mult=function(a){this.matrixStack[this.matrixStack.length- -1].apply(a)};e.split=function(a,b){return a.split(b)};e.splitTokens=function(a,b){if(b===h)return a.split(/\s+/g);var c=b.split(/()/g),e="",d=a.length,f,g,k=[];for(f=0;f>8)};e.peg=function(a){return 0>a?0:255>>24)+L,255)<<24;c+=($-c)*L>>8;e+=(h-e)*L>>8;L=d+((pd-d)*L>>8);return b|(0>c?0:255e?0:255L?0:255>>24,h=a&e,k=a&d,w=a&f,l=L&e,m=L&d,n=L&f;return g(((a&b)>>>24)+c,255)<<24|h+((l-h)*c>>8)&e|k+((m-k)*c>>8)&d|w+((n-w)*c>>8)&f},add:function(a,L){var c=(L&b)>>>24;return g(((a& -b)>>>24)+c,255)<<24|g((a&e)+((L&e)>>8)*c,e)&e|g((a&d)+((L&d)>>8)*c,d)&d|g((a&f)+((L&f)*c>>8),f)},subtract:function(a,L){var c=(L&b)>>>24;return g(((a&b)>>>24)+c,255)<<24|h((a&e)-((L&e)>>8)*c,d)&e|h((a&d)-((L&d)>>8)*c,f)&d|h((a&f)-((L&f)*c>>8),0)},lightest:function(a,L){var c=(L&b)>>>24;return g(((a&b)>>>24)+c,255)<<24|h(a&e,((L&e)>>8)*c)&e|h(a&d,((L&d)>>8)*c)&d|h(a&f,(L&f)*c>>8)},darkest:function(a,L){var c=(L&b)>>>24,h=a&e,k=a&d,w=a&f,l=g(a&e,((L&e)>>8)*c),m=g(a&d,((L&d)>>8)*c),n=g(a&f,(L&f)*c>> -8);return g(((a&b)>>>24)+c,255)<<24|h+((l-h)*c>>8)&e|k+((m-k)*c>>8)&d|w+((n-w)*c>>8)&f},difference:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,h>V?h-V:V-h,k>l?k-l:l-k,w>m?w-m:m-w)},exclusion:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,h+V-(h*V>>7),k+l-(k*l>>7),w+m-(w*m>>7))},multiply:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c, -(g&b)>>>24,h,k,w,V,l,m,h*V>>8,k*l>>8,w*m>>8)},screen:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,255-((255-h)*(255-V)>>8),255-((255-k)*(255-l)>>8),255-((255-w)*(255-m)>>8))},hard_light:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,128>V?h*V>>7:255-((255-h)*(255-V)>>7),128>l?k*l>>7:255-((255-k)*(255-l)>>7),128>m?w*m>>7:255-((255-w)*(255-m)>>7))},soft_light:function(c,g){var h= -(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,(h*V>>7)+(h*h>>8)-(h*h*V>>15),(k*l>>7)+(k*k>>8)-(k*k*l>>15),(w*m>>7)+(w*w>>8)-(w*w*m>>15))},overlay:function(c,g){var h=(c&e)>>16,k=(c&d)>>8,w=c&f,V=(g&e)>>16,l=(g&d)>>8,m=g&f;return a(c,(g&b)>>>24,h,k,w,V,l,m,128>h?h*V>>7:255-((255-h)*(255-V)>>7),128>k?k*l>>7:255-((255-k)*(255-l)>>7),128>w?w*m>>7:255-((255-w)*(255-m)>>7))},dodge:function(c,g){var h=(g&b)>>>24,k=(c&e)>>16,w=(c&d)>>8,V=c&f,l=(g&e)>>16,m=(g&d)>> -8,n=g&f,p=255;255!==l&&(p=(k<<8)/(255-l),p=0>p?0:255r?0:255t?0:255>>24,k=(c&e)>>16,w=(c&d)>>8,V=c&f,l=(g&e)>>16,m=(g&d)>>8,n=g&f,p=0;0!==l&&(p=(255-k<<8)/l,p=255-(0>p?0:255r?0:255t?0:255b?0:b)<<24&c.ALPHA_MASK)):a=Va===c.RGB?ta(a,a,a,b):Va===c.HSB?ta(0,0,a/xa*ya,b):void 0,a):"number"===typeof a?$b(a):ta(xa,Ea,ya,ia)};e.color.toString=function(a){return"rgba("+((a&c.RED_MASK)>>>16)+","+((a&c.GREEN_MASK)>>>8)+","+(a&c.BLUE_MASK)+","+((a&c.ALPHA_MASK)>>>24)/255+")"};e.color.toInt= -function(a,b,e,d){return d<<24&c.ALPHA_MASK|a<<16&c.RED_MASK|b<<8&c.GREEN_MASK|e&c.BLUE_MASK};e.color.toArray=function(a){return[(a&c.RED_MASK)>>>16,(a&c.GREEN_MASK)>>>8,a&c.BLUE_MASK,(a&c.ALPHA_MASK)>>>24]};e.color.toGLArray=function(a){return[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255,((a&c.ALPHA_MASK)>>>24)/255]};e.color.toRGB=function(a,b,c){a=a>xa?xa:a;b=b>Ea?Ea:b;c=c>ya?ya:c;a=360*(a/xa);b=100*(b/Ea);c=100*(c/ya);var e=Math.round(255*(c/100));if(0===b)return[e, -e,e];a%=360;var d=a%60,f=Math.round(255*(c*(100-b)/1E4)),g=Math.round(255*(c*(6E3-b*d)/6E5));b=Math.round(255*(c*(6E3-b*(60-d))/6E5));switch(Math.floor(a/60)){case 0:return[e,b,f];case 1:return[g,e,f];case 2:return[f,e,b];case 3:return[f,g,e];case 4:return[b,f,e];case 5:return[e,f,g]}};e.brightness=function(a){return bb(a)[2]};e.saturation=function(a){return bb(a)[1]};e.hue=function(a){return bb(a)[0]};e.red=function(a){return((a&c.RED_MASK)>>>16)/255*xa};e.green=function(a){return((a&c.GREEN_MASK)>>> -8)/255*Ea};e.blue=function(a){return(a&c.BLUE_MASK)/255*ya};e.alpha=function(a){return((a&c.ALPHA_MASK)>>>24)/255*ia};e.lerpColor=function(a,b,d){var f,g,h,k,l,s;a=e.color(a);b=e.color(b);if(Va===c.HSB)return h=bb(a),a=((a&c.ALPHA_MASK)>>>24)/ia,g=bb(b),b=((b&c.ALPHA_MASK)>>>24)/ia,s=e.lerp(h[0],g[0],d),f=e.lerp(h[1],g[1],d),h=e.lerp(h[2],g[2],d),h=e.color.toRGB(s,f,h),d=e.lerp(a,b,d)*ia,d<<24&c.ALPHA_MASK|h[0]<<16&c.RED_MASK|h[1]<<8&c.GREEN_MASK|h[2]&c.BLUE_MASK;f=(a&c.RED_MASK)>>>16;g=(a&c.GREEN_MASK)>>> -8;h=a&c.BLUE_MASK;a=((a&c.ALPHA_MASK)>>>24)/ia;k=(b&c.RED_MASK)>>>16;l=(b&c.GREEN_MASK)>>>8;s=b&c.BLUE_MASK;b=((b&c.ALPHA_MASK)>>>24)/ia;f=e.lerp(f,k,d)|0;g=e.lerp(g,l,d)|0;h=e.lerp(h,s,d)|0;d=e.lerp(a,b,d)*ia;return d<<24&c.ALPHA_MASK|f<<16&c.RED_MASK|g<<8&c.GREEN_MASK|h&c.BLUE_MASK};e.colorMode=function(){Va=arguments[0];1b;b++)a[b]=0;a[10]=a[15]=1;W.prototype.applyMatrix.apply(this,a)};e.rotateX=function(a){K.rotateX(a);fa.invRotateX(a)}; -E.prototype.rotateZ=function(){throw"rotateZ() is not supported in 2D mode. Use rotate(float) instead.";};B.prototype.rotateZ=function(a){K.rotateZ(a);fa.invRotateZ(a)};e.rotateY=function(a){K.rotateY(a);fa.invRotateY(a)};E.prototype.rotate=function(a){K.rotateZ(a);fa.invRotateZ(a);g.rotate(a)};B.prototype.rotate=function(a){4>arguments.length?e.rotateZ(a):(K.rotate(a,arguments[1],arguments[2],arguments[3]),fa.rotate(-a,arguments[1],arguments[2],arguments[3]))};E.prototype.shearX=function(a){K.shearX(a); -g.transform(1,0,a,1,0,0)};B.prototype.shearX=function(a){K.shearX(a)};E.prototype.shearY=function(a){K.shearY(a);g.transform(1,a,0,1,0,0)};B.prototype.shearY=function(a){K.shearY(a)};e.pushStyle=function(){g.save();e.pushMatrix();bd.push({doFill:R,currentFillColor:La,doStroke:C,currentStrokeColor:ja,curTint:gb,curRectMode:qa,curColorMode:Va,colorModeX:xa,colorModeZ:ya,colorModeY:Ea,colorModeA:ia,curTextFont:ba,horizontalTextAlignment:nb,verticalTextAlignment:Wa,textMode:ic,curFontName:zb,curTextSize:Na, -curTextAscent:Xa,curTextDescent:Ma,curTextLeading:Aa})};e.popStyle=function(){var a=bd.pop();if(a)Sa(),e.popMatrix(),R=a.doFill,La=a.currentFillColor,C=a.doStroke,ja=a.currentStrokeColor,gb=a.curTint,qa=a.curRectMode,Va=a.curColorMode,xa=a.colorModeX,ya=a.colorModeZ,Ea=a.colorModeY,ia=a.colorModeA,ba=a.curTextFont,zb=a.curFontName,Na=a.curTextSize,nb=a.horizontalTextAlignment,Wa=a.verticalTextAlignment,ic=a.textMode,Xa=a.curTextAscent,Ma=a.curTextDescent,Aa=a.curTextLeading;else throw"Too many popStyle() without enough pushStyle()"; -};e.year=function(){return(new Date).getFullYear()};e.month=function(){return(new Date).getMonth()+1};e.day=function(){return(new Date).getDate()};e.hour=function(){return(new Date).getHours()};e.minute=function(){return(new Date).getMinutes()};e.second=function(){return(new Date).getSeconds()};e.millis=function(){return Date.now()-Oc};E.prototype.redraw=function(){cb();g.lineWidth=ea;var a=e.pmouseX,b=e.pmouseY;e.pmouseX=cc;e.pmouseY=dc;g.save();e.draw();Sa();cc=e.mouseX;dc=e.mouseY;e.pmouseX=a; -e.pmouseY=b};B.prototype.redraw=function(){cb();var a=e.pmouseX,b=e.pmouseY;e.pmouseX=cc;e.pmouseY=dc;g.clear(g.DEPTH_BUFFER_BIT);Fa={attributes:{},locations:{}};e.noLights();e.lightFalloff(1,0,0);e.shininess(1);e.ambient(255,255,255);e.specular(0,0,0);e.emissive(0,0,0);e.camera();e.draw();cc=e.mouseX;dc=e.mouseY;e.pmouseX=a;e.pmouseY=b};e.noLoop=function(){eb=Da=!1;clearInterval(ma);da.onPause()};e.loop=function(){eb||(tc=Date.now(),ec=0,ma=l.setInterval(function(){try{da.onFrameStart(),e.redraw(), -da.onFrameEnd()}catch(a){throw l.clearInterval(ma),a;}},Kc),eb=Da=!0,da.onLoop())};e.frameRate=function(a){tb=a;Kc=1E3/tb;Da&&(e.noLoop(),e.loop())};e.exit=function(){l.clearInterval(ma);var a=e.externals.canvas.id;q.splice(Zb[a],1);delete Zb[a];delete S.onmousedown;for(var b in M.lib)M.lib.hasOwnProperty(b)&&M.lib[b].hasOwnProperty("detach")&&M.lib[b].detach(e);for(a=wb.length;a--;){var c=wb[a];b=c.elem;var d=c.type,c=c.fn;b.removeEventListener?b.removeEventListener(d,c,!1):b.detachEvent&&b.detachEvent("on"+ -d,c)}da.onExit()};e.cursor=function(){if(1b||0>c||c>=a.height||b>=a.width)throw"x and y must be non-negative and less than the dimensions of the image";}else b=a.width>>>1,c=a.height>>>1;a='url("'+a.toDataURL()+'") '+b+" "+c+", default";S.style.cursor=a}else S.style.cursor=1===arguments.length?arguments[0]:od};e.noCursor=function(){S.style.cursor= -c.NOCURSOR};e.link=function(a,b){b!==h?l.open(a,b):l.location=a};e.beginDraw=r;e.endDraw=r;E.prototype.toImageData=function(a,b,c,d){a=a!==h?a:0;b=b!==h?b:0;c=c!==h?c:e.width;d=d!==h?d:e.height;return g.getImageData(a,b,c,d)};B.prototype.toImageData=function(a,b,c,d){a=a!==h?a:0;b=b!==h?b:0;c=c!==h?c:e.width;d=d!==h?d:e.height;var f=p.createElement("canvas").getContext("2d").createImageData(c,d),k=new ga(4*c*d);g.readPixels(a,b,c,d,g.RGBA,g.UNSIGNED_BYTE,k);a=0;b=k.length;for(var w=f.data;a>>c-1&1);)c--;for(var e="";0>>--c&1?"1":"0";return e};e.unbinary=function(a){for(var b=a.length-1,c=1,e=0;0<=b;){var d=a[b--];if("0"!==d&&"1"!==d)throw"the value passed into unbinary was not an 8 bit binary number";"1"===d&&(e+=c);c<<=1}return e};e.hex=function(a,b){1===arguments.length&&(b=a instanceof Char?4: -8);var c=a,e=b,e=e===h||null===e?e=8:e;0>c&&(c=4294967295+c+1);for(c=Number(c).toString(16).toUpperCase();c.length=e&&(c=c.substring(c.length-e,c.length));return c};e.unhex=function(a){if(a instanceof Array){for(var b=[],c=0;c 0.5){ discard; } } if(uIsDrawingText == 1){ float alpha = texture2D(uSampler, vTextureCoord).a; gl_FragColor = vec4(vFrontColor.rgb * alpha, alpha); } else{ gl_FragColor = vFrontColor; }}"); -na=Ic(g,"varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec4 aColor;uniform mat4 uView;uniform mat4 uProjection;uniform float uPointSize;void main(void) { vFrontColor = aColor; gl_PointSize = uPointSize; gl_Position = uProjection * uView * vec4(aVertex, 1.0);}","#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;uniform bool uSmooth;void main(void){ if(uSmooth == true){ float dist = distance(gl_PointCoord, vec2(0.5)); if(dist > 0.5){ discard; } } gl_FragColor = vFrontColor;}"); -e.strokeWeight(1);y=Ic(g,td,"#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;uniform sampler2D uSampler;uniform bool uUsingTexture;varying vec2 vTexture;void main(void){ if( uUsingTexture ){ gl_FragColor = vec4(texture2D(uSampler, vTexture.xy)) * vFrontColor; } else{ gl_FragColor = vFrontColor; }}");g.useProgram(y);Y("usingTexture3d",y,"usingTexture",ua);e.lightFalloff(1,0,0);e.shininess(1);e.ambient(255,255,255);e.specular(0,0,0);e.emissive(0,0,0);wc=g.createBuffer(); -g.bindBuffer(g.ARRAY_BUFFER,wc);g.bufferData(g.ARRAY_BUFFER,cd,g.STATIC_DRAW);xc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,xc);g.bufferData(g.ARRAY_BUFFER,rd,g.STATIC_DRAW);yc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,yc);g.bufferData(g.ARRAY_BUFFER,dd,g.STATIC_DRAW);gc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,gc);g.bufferData(g.ARRAY_BUFFER,Hc,g.STATIC_DRAW);zc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,zc);g.bufferData(g.ARRAY_BUFFER,sd,g.STATIC_DRAW);Tb=g.createBuffer();Ac=g.createBuffer(); -Pc=g.createBuffer();Bc=g.createBuffer();Qc=g.createBuffer();Rc=g.createBuffer();hc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,hc);g.bufferData(g.ARRAY_BUFFER,new A([0,0,0]),g.STATIC_DRAW);Cc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,Cc);g.bufferData(g.ARRAY_BUFFER,new A([1,1,0,-1,1,0,-1,-1,0,1,-1,0]),g.STATIC_DRAW);Dc=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,Dc);g.bufferData(g.ARRAY_BUFFER,new A([0,0,1,0,1,1,0,1]),g.STATIC_DRAW);Ec=g.createBuffer();g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,Ec); -g.bufferData(g.ELEMENT_ARRAY_BUFFER,new v([0,1,2,2,3,0]),g.STATIC_DRAW);qb=new I;Ra=new I;K=new I;fa=new I;Ha=new I;e.camera();e.perspective();Ab=new Za;Bb=new Za;Sb=new I;fc=new I;xb=new I;yb=new I;uc=new I;vc=new I;vc.set(-1,3,-3,1,3,-6,3,0,-3,3,0,0,1,0,0,0);W.prototype.size.apply(this,arguments)}}();E.prototype.ambientLight=W.prototype.a3DOnlyFunction;B.prototype.ambientLight=function(a,b,e,d,f,h){if(O===c.MAX_LIGHTS)throw"can only create "+c.MAX_LIGHTS+" lights";d=new PVector(d,f,h);f=new I;f.scale(1, --1,1);f.apply(K.array());f.mult(d,d);a=ta(a,b,e,0);a=[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255];g.useProgram(y);T("uLights.color.3d."+O,y,"uLights"+O+".color",a);T("uLights.position.3d."+O,y,"uLights"+O+".position",d.array());Y("uLights.type.3d."+O,y,"uLights"+O+".type",0);Y("uLightCount3d",y,"uLightCount",++O)};E.prototype.directionalLight=W.prototype.a3DOnlyFunction;B.prototype.directionalLight=function(a,b,e,d,f,h){if(O===c.MAX_LIGHTS)throw"can only create "+c.MAX_LIGHTS+ -" lights";g.useProgram(y);var k=new I;k.scale(1,-1,1);k.apply(K.array());k=k.array();d=[k[0]*d+k[4]*f+k[8]*h,k[1]*d+k[5]*f+k[9]*h,k[2]*d+k[6]*f+k[10]*h];a=ta(a,b,e,0);T("uLights.color.3d."+O,y,"uLights"+O+".color",[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255]);T("uLights.position.3d."+O,y,"uLights"+O+".position",d);Y("uLights.type.3d."+O,y,"uLights"+O+".type",1);Y("uLightCount3d",y,"uLightCount",++O)};E.prototype.lightFalloff=W.prototype.a3DOnlyFunction;B.prototype.lightFalloff= -function(a,b,c){g.useProgram(y);T("uFalloff3d",y,"uFalloff",[a,b,c])};E.prototype.lightSpecular=W.prototype.a3DOnlyFunction;B.prototype.lightSpecular=function(a,b,e){a=ta(a,b,e,0);a=[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255];g.useProgram(y);T("uSpecular3d",y,"uSpecular",a)};e.lights=function(){e.ambientLight(128,128,128);e.directionalLight(128,128,128,0,0,-1);e.lightFalloff(1,0,0);e.lightSpecular(0,0,0)};E.prototype.pointLight=W.prototype.a3DOnlyFunction;B.prototype.pointLight= -function(a,b,e,d,f,h){if(O===c.MAX_LIGHTS)throw"can only create "+c.MAX_LIGHTS+" lights";d=new PVector(d,f,h);f=new I;f.scale(1,-1,1);f.apply(K.array());f.mult(d,d);a=ta(a,b,e,0);a=[((a&c.RED_MASK)>>>16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255];g.useProgram(y);T("uLights.color.3d."+O,y,"uLights"+O+".color",a);T("uLights.position.3d."+O,y,"uLights"+O+".position",d.array());Y("uLights.type.3d."+O,y,"uLights"+O+".type",2);Y("uLightCount3d",y,"uLightCount",++O)};E.prototype.noLights=W.prototype.a3DOnlyFunction; -B.prototype.noLights=function(){O=0;g.useProgram(y);Y("uLightCount3d",y,"uLightCount",O)};E.prototype.spotLight=W.prototype.a3DOnlyFunction;B.prototype.spotLight=function(a,b,e,d,f,h,k,l,s,m,n){if(O===c.MAX_LIGHTS)throw"can only create "+c.MAX_LIGHTS+" lights";g.useProgram(y);d=new PVector(d,f,h);f=new I;f.scale(1,-1,1);f.apply(K.array());f.mult(d,d);f=f.array();k=[f[0]*k+f[4]*l+f[8]*s,f[1]*k+f[5]*l+f[9]*s,f[2]*k+f[6]*l+f[10]*s];a=ta(a,b,e,0);T("uLights.color.3d."+O,y,"uLights"+O+".color",[((a&c.RED_MASK)>>> -16)/255,((a&c.GREEN_MASK)>>>8)/255,(a&c.BLUE_MASK)/255]);T("uLights.position.3d."+O,y,"uLights"+O+".position",d.array());T("uLights.direction.3d."+O,y,"uLights"+O+".direction",k);T("uLights.concentration.3d."+O,y,"uLights"+O+".concentration",n);T("uLights.angle.3d."+O,y,"uLights"+O+".angle",m);Y("uLights.type.3d."+O,y,"uLights"+O+".type",3);Y("uLightCount3d",y,"uLightCount",++O)};E.prototype.beginCamera=function(){throw"beginCamera() is not available in 2D mode";};B.prototype.beginCamera=function(){if(kc)throw"You cannot call beginCamera() again before calling endCamera()"; -kc=!0;K=Ra;fa=qb};E.prototype.endCamera=function(){throw"endCamera() is not available in 2D mode";};B.prototype.endCamera=function(){if(!kc)throw"You cannot call endCamera() before calling beginCamera()";K.set(qb);fa.set(Ra);kc=!1};e.camera=function(a,b,c,d,f,g,k,l,s){a===h&&(Gc=e.width/2,rb=e.height/2,sb=rb/Math.tan(lc/2),a=Gc,b=rb,c=sb,d=Gc,f=rb,k=g=0,l=1,s=0);d=new PVector(a-d,b-f,c-g);var m=new PVector(k,l,s);d.normalize();s=PVector.cross(m,d);m=PVector.cross(d,s);s.normalize();m.normalize(); -k=s.x;l=s.y;s=s.z;f=m.x;g=m.y;var m=m.z,n=d.x,p=d.y;d=d.z;qb.set(k,l,s,0,f,g,m,0,n,p,d,0,0,0,0,1);qb.translate(-a,-b,-c);Ra.reset();Ra.invApply(k,l,s,0,f,g,m,0,n,p,d,0,0,0,0,1);Ra.translate(a,b,c);K.set(qb);fa.set(Ra)};e.perspective=function(a,b,c,d){0===arguments.length&&(rb=S.height/2,sb=rb/Math.tan(lc/2),Zc=sb/10,$c=10*sb,ad=e.width/e.height,a=lc,b=ad,c=Zc,d=$c);var f,g;f=c*Math.tan(a/2);g=-f;e.frustum(g*b,f*b,g,f,c,d)};E.prototype.frustum=function(){throw"Processing.js: frustum() is not supported in 2D mode"; -};B.prototype.frustum=function(a,b,c,e,d,f){Ha=new I;Ha.set(2*d/(b-a),0,(b+a)/(b-a),0,0,2*d/(e-c),(e+c)/(e-c),0,0,0,-(f+d)/(f-d),-(2*f*d)/(f-d),0,0,-1,0);a=new I;a.set(Ha);a.transpose();g.useProgram(J);U("projection2d",J,"uProjection",!1,a.array());g.useProgram(y);U("projection3d",y,"uProjection",!1,a.array());g.useProgram(na);U("uProjectionUS",na,"uProjection",!1,a.array())};e.ortho=function(a,b,c,d,f,h){0===arguments.length&&(a=0,b=e.width,c=0,d=e.height,f=-10,h=10);var k=2/(b-a),l=2/(d-c),s=-2/ -(h-f),m=-(b+a)/(b-a),n=-(d+c)/(d-c),p=-(h+f)/(h-f);Ha=new I;Ha.set(k,0,0,m,0,l,0,n,0,0,s,p,0,0,0,1);k=new I;k.set(Ha);k.transpose();g.useProgram(J);U("projection2d",J,"uProjection",!1,k.array());g.useProgram(y);U("projection3d",y,"uProjection",!1,k.array());g.useProgram(na);U("uProjectionUS",na,"uProjection",!1,k.array())};e.printProjection=function(){Ha.print()};e.printCamera=function(){qb.print()};E.prototype.box=W.prototype.a3DOnlyFunction;B.prototype.box=function(a,b,c){b&&c||(b=c=a);var e=new I; -e.scale(a,b,c);a=new I;a.scale(1,-1,1);a.apply(K.array());a.transpose();R&&(g.useProgram(y),U("model3d",y,"uModel",!1,e.array()),U("view3d",y,"uView",!1,a.array()),g.enable(g.POLYGON_OFFSET_FILL),g.polygonOffset(1,1),T("color3d",y,"uColor",ka),0a&&(a=3);2>b&&(b=2);if(a!==pb|| -b!==jc){var d=c.SINCOS_LENGTH/a,f=new A(a),h=new A(a);for(e=0;epb||2>jc)&&e.sphereDetail(30);var b=new I;b.scale(a,a,a);a=new I;a.scale(1,-1,1);a.apply(K.array());a.transpose();if(R){if(0d?0:d,f=1f?0:f);g[0]=a;g[1]=b;g[2]=e||0;g[3]=d||0;g[4]=f||0;g[5]=ka[0];g[6]=ka[1];g[7]=ka[2];g[8]=ka[3];g[9]=X[0];g[10]=X[1];g[11]=X[2];g[12]=X[3];g[13]=Gb;g[14]=Eb;g[15]=ub;t.push(g)};var gd=function(a, -b){var c=new I;c.scale(1,-1,1);c.apply(K.array());c.transpose();g.useProgram(na);U("uViewUS",na,"uView",!1,c.array());Y("uSmoothUS",na,"uSmooth",ra);Z("aVertexUS",na,"aVertex",3,hc);g.bufferData(g.ARRAY_BUFFER,new A(a),g.STREAM_DRAW);Z("aColorUS",na,"aColor",4,Bc);g.bufferData(g.ARRAY_BUFFER,new A(b),g.STREAM_DRAW);g.drawArrays(g.POINTS,0,a.length/3)},Ca=function(a,b,c){b="LINES"===b?g.LINES:"LINE_LOOP"===b?g.LINE_LOOP:g.LINE_STRIP;var e=new I;e.scale(1,-1,1);e.apply(K.array());e.transpose();g.useProgram(na); -U("uViewUS",na,"uView",!1,e.array());Z("aVertexUS",na,"aVertex",3,Ac);g.bufferData(g.ARRAY_BUFFER,new A(a),g.STREAM_DRAW);Z("aColorUS",na,"aColor",4,Qc);g.bufferData(g.ARRAY_BUFFER,new A(c),g.STREAM_DRAW);g.drawArrays(b,0,a.length/3)},$a=function(a,b,c,e){b="TRIANGLES"===b?g.TRIANGLES:"TRIANGLE_FAN"===b?g.TRIANGLE_FAN:g.TRIANGLE_STRIP;var d=new I;d.scale(1,-1,1);d.apply(K.array());d.transpose();g.useProgram(y);U("model3d",y,"uModel",!1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);U("view3d",y,"uView",!1,d.array()); -g.enable(g.POLYGON_OFFSET_FILL);g.polygonOffset(1,1);T("color3d",y,"uColor",[-1,0,0,0]);Z("vertex3d",y,"aVertex",3,Pc);g.bufferData(g.ARRAY_BUFFER,new A(a),g.STREAM_DRAW);ua&&null!==gb&&sc(c);Z("aColor3d",y,"aColor",4,Bc);g.bufferData(g.ARRAY_BUFFER,new A(c),g.STREAM_DRAW);sa("aNormal3d",y,"aNormal");ua&&(Y("uUsingTexture3d",y,"uUsingTexture",ua),Z("aTexture3d",y,"aTexture",2,Rc),g.bufferData(g.ARRAY_BUFFER,new A(e),g.STREAM_DRAW));g.drawArrays(b,0,a.length/3);g.disable(g.POLYGON_OFFSET_FILL)};E.prototype.endShape= -function(a){if(0!==t.length){(a=a===c.CLOSE)&&t.push(t[0]);var b=[],d=[],f=[],k=[],l;ib=!0;var w,m,s=t.length;for(w=0;wm;m++)b.push(l[m]);for(w=0;wm;m++)d.push(l[m]);for(w=0;wm;m++)f.push(l[m]);for(w=0;wm;m++)g.lineTo(t[w+m][0],t[w+m][1]);g.lineTo(l[0],l[1]);R&&(e.fill(t[w+3][5]),wa());C&&(e.stroke(t[w+3][6]),za());g.closePath()}else if(aa===c.QUAD_STRIP){if(3s;s++)e.push(l[s]);for(m=0;ms;s++)d.push(l[s]);for(m=0;ms;s++)f.push(l[s]);for(m=0;mm;m++)d.push(t[0][m]);for(m=9;13>m;m++)f.push(t[0][m]);k.push(t[0][3]);k.push(t[0][4])}if(!Cb||aa!==c.POLYGON&&aa!==h)if(!Db||aa!==c.POLYGON&&aa!==h){if(aa===c.POINTS){for(m=0;ms;s++)a.push(l[s]);gd(a,f)}else if(aa===c.LINES){for(m=0;ms;s++)a.push(l[s]);for(m=0;ms;s++)d.push(l[s]);Ca(a,"LINES",f)}else if(aa===c.TRIANGLES){if(2s;s++)for(b=0;3>b;b++)a.push(t[m+ -s][b]),e.push(t[m+s][b]);for(s=0;3>s;s++)for(b=3;5>b;b++)k.push(t[m+s][b]);for(s=0;3>s;s++)for(b=5;9>b;b++)d.push(t[m+s][b]),f.push(t[m+s][b+4]);C&&Ca(a,"LINE_LOOP",f);(R||ua)&&$a(e,"TRIANGLES",d,k)}}else if(aa===c.TRIANGLE_STRIP){if(2s;s++)for(b=0;3>b;b++)a.push(t[m+s][b]),e.push(t[m+s][b]);for(s=0;3>s;s++)for(b=3;5>b;b++)k.push(t[m+s][b]);for(s=0;3>s;s++)for(b=5;9>b;b++)f.push(t[m+s][b+4]),d.push(t[m+s][b]);(R||ua)&&$a(e,"TRIANGLE_STRIP", -d,k);C&&Ca(a,"LINE_LOOP",f)}}else if(aa===c.TRIANGLE_FAN){if(2m;m++)for(l=t[m],s=0;3>s;s++)a.push(l[s]);for(m=0;3>m;m++)for(l=t[m],s=9;13>s;s++)f.push(l[s]);C&&Ca(a,"LINE_LOOP",f);for(m=2;m+1s;s++)for(b=0;3>b;b++)a.push(t[m+s][b]);for(s=0;2>s;s++)for(b=9;13>b;b++)f.push(t[m+s][b]);C&&Ca(a,"LINE_STRIP",f)}(R||ua)&&$a(e,"TRIANGLE_FAN",d,k)}}else if(aa=== -c.QUADS)for(m=0;m+3s;s++)for(l=t[m+s],b=0;3>b;b++)a.push(l[b]);C&&Ca(a,"LINE_LOOP",f);if(R){e=[];d=[];k=[];for(s=0;3>s;s++)e.push(t[m][s]);for(s=5;9>s;s++)d.push(t[m][s]);for(s=0;3>s;s++)e.push(t[m+1][s]);for(s=5;9>s;s++)d.push(t[m+1][s]);for(s=0;3>s;s++)e.push(t[m+3][s]);for(s=5;9>s;s++)d.push(t[m+3][s]);for(s=0;3>s;s++)e.push(t[m+2][s]);for(s=5;9>s;s++)d.push(t[m+2][s]);ua&&(k.push(t[m+0][3]),k.push(t[m+0][4]),k.push(t[m+1][3]),k.push(t[m+1][4]),k.push(t[m+3][3]),k.push(t[m+ -3][4]),k.push(t[m+2][3]),k.push(t[m+2][4]));$a(e,"TRIANGLE_STRIP",d,k)}}else if(aa===c.QUAD_STRIP){if(3m;m++)for(l=t[m],s=0;3>s;s++)a.push(l[s]);for(m=0;2>m;m++)for(l=t[m],s=9;13>s;s++)f.push(l[s]);Ca(a,"LINE_STRIP",f);4s;s++)a.push(t[m+1][s]);for(s=0;3>s;s++)a.push(t[m+3][s]);for(s=0;3>s;s++)a.push(t[m+2][s]);for(s=0;3>s;s++)a.push(t[m+0][s]);for(s=9;13>s;s++)f.push(t[m+1][s]);for(s=9;13>s;s++)f.push(t[m+ -3][s]);for(s=9;13>s;s++)f.push(t[m+2][s]);for(s=9;13>s;s++)f.push(t[m+0][s]);C&&Ca(a,"LINE_STRIP",f)}(R||ua)&&$a(e,"TRIANGLE_LIST",d,k)}}else if(1===n){for(s=0;3>s;s++)a.push(t[0][s]);for(s=9;13>s;s++)f.push(t[0][s]);gd(a,f)}else{for(m=0;ms;s++)a.push(l[s]);for(s=5;9>s;s++)f.push(l[s])}C&&b?Ca(a,"LINE_LOOP",f):C&&!b&&Ca(a,"LINE_STRIP",f);(R||ua)&&$a(e,"TRIANGLE_FAN",d,k)}ua=!1;g.useProgram(y);Y("usingTexture3d",y,"uUsingTexture",ua)}else a=e,a.splice(a.length-3),f.splice(f.length- -4),C&&Ca(a,null,f),R&&$a(e,"TRIANGLES",d);else C&&Ca(e,null,f),R&&$a(e,null,d);Db=Cb=!1;va=[];oa=0}};var hd=function(a,b){var c=1/a,e=c*c,d=e*c;b.set(0,0,0,1,d,e,c,0,6*d,2*e,0,0,6*d,0,0,0)},id=function(){xb||(Sb=new I,xb=new I,Lc=!0);var a=oc;Sb.set((a-1)/2,(a+3)/2,(-3-a)/2,(1-a)/2,1-a,(-5-a)/2,a+2,(a-1)/2,(a-1)/2,0,(1-a)/2,0,0,1,0,0);hd(pc,xb);uc||(fc=new I);fc.set(Sb);fc.preApply(uc);xb.apply(Sb)};E.prototype.bezierVertex=function(){Db=!0;var a=[];if(ib)throw"vertex() must be used at least once before calling bezierVertex()"; -for(var b=0;b=d||hg;)g+=c.TWO_PI,h+=c.TWO_PI;h-g>c.TWO_PI&&(g=0,h=c.TWO_PI);d/=2;f/=2;a+=d;b+=f;g=0|0.5+2*g*e.RAD_TO_DEG;h=0|0.5+2*h*e.RAD_TO_DEG;var k,l;if(R){var m=C;C=!1;e.beginShape();e.vertex(a,b);for(k= -g;k<=h;k++)l=k%c.SINCOS_LENGTH,e.vertex(a+Vb[l]*d,b+Ub[l]*f);e.endShape(c.CLOSE);C=m}if(C){m=R;R=!1;e.beginShape();for(k=g;k<=h;k++)l=k%c.SINCOS_LENGTH,e.vertex(a+Vb[l]*d,b+Ub[l]*f);e.endShape();R=m}}};E.prototype.line=function(a,b,c,d){if(C)if(a=Math.round(a),c=Math.round(c),b=Math.round(b),d=Math.round(d),a===c&&b===d)e.point(a,b);else{for(var f=h,k=h,l=!0,f=K.array(),m=[1,0,0,0,1,0],s=0;6>s&&l;s++)l=f[s]===m[s];l&&(a===c?(b>d&&(f=b,b=d,d=f),d++,1===ea%2&&g.translate(0.5,0)):b===d&&(a>c&&(f=a,a= -c,c=f),c++,1===ea%2&&g.translate(0,0.5)),1===ea&&(k=g.lineCap,g.lineCap="butt"));g.beginPath();g.moveTo(a||0,b||0);g.lineTo(c||0,d||0);za();l&&(a===c&&1===ea%2?g.translate(-0.5,0):b===d&&1===ea%2&&g.translate(0,-0.5),1===ea&&(g.lineCap=k))}};B.prototype.line=function(a,b,c,d,f,k){if(f===h||k===h)k=0,f=d,d=c,c=0;a===d&&b===f&&c===k?e.point(a,b,c):(a=[a,b,c,d,f,k],b=new I,b.scale(1,-1,1),b.apply(K.array()),b.transpose(),0s||f>n)f=Math.min(s,n);if(k>s||k>n)k=Math.min(s,n);if(l>s||l>n)l=Math.min(s,n);if(m>s||m>n)m=Math.min(s,n);R&&!C||g.translate(0.5,0.5);g.beginPath();g.moveTo(a+f,b);g.lineTo(a+e-k,b);g.quadraticCurveTo(a+e,b,a+e,b+k);g.lineTo(a+ -e,b+d-l);g.quadraticCurveTo(a+e,b+d,a+e-l,b+d);g.lineTo(a+m,b+d);g.quadraticCurveTo(a,b+d,a,b+d-m);g.lineTo(a,b+f);g.quadraticCurveTo(a,b,a+f,b);R&&!C||g.translate(-0.5,-0.5);wa();za()}else C&&1===ea%2&&g.translate(0.5,0.5),g.beginPath(),g.rect(a,b,e,d),wa(),za(),C&&1===ea%2&&g.translate(-0.5,-0.5)};B.prototype.rect=function(a,b,e,d,f,k,l,m){if(f!==h)throw"rect() with rounded corners is not supported in 3D mode";qa===c.CORNERS?(e-=a,d-=b):qa===c.RADIUS?(e*=2,d*=2,a-=e/2,b-=d/2):qa===c.CENTER&&(a-= -e/2,b-=d/2);f=new I;f.translate(a,b,0);f.scale(e,d,1);f.transpose();b=new I;b.scale(1,-1,1);b.apply(K.array());b.transpose();0=d&&0>=f))if(la===c.RADIUS?(d*=2,f*=2):la=== -c.CORNERS?(d-=a,f-=b,a+=d/2,b+=f/2):la===c.CORNER&&(a+=d/2,b+=f/2),d===f)g.beginPath(),g.arc(a,b,d/2,0,c.TWO_PI,!1),wa(),za();else{d/=2;f/=2;var h=0.5522847498307933*d,k=0.5522847498307933*f;e.beginShape();e.vertex(a+d,b);e.bezierVertex(a+d,b-k,a+h,b-f,a,b-f);e.bezierVertex(a-h,b-f,a-d,b-k,a-d,b);e.bezierVertex(a-d,b+k,a-h,b+f,a,b+f);e.bezierVertex(a+h,b+f,a+d,b+k,a+d,b);e.endShape()}};B.prototype.ellipse=function(a,b,d,f){a=a||0;b=b||0;if(!(0>=d&&0>=f)){la===c.RADIUS?(d*=2,f*=2):la===c.CORNERS?(d-= -a,f-=b,a+=d/2,b+=f/2):la===c.CORNER&&(a+=d/2,b+=f/2);d/=2;f/=2;var g=0.5522847498307933*d,h=0.5522847498307933*f;e.beginShape();e.vertex(a+d,b);e.bezierVertex(a+d,b-h,0,a+g,b-f,0,a,b-f,0);e.bezierVertex(a-g,b-f,0,a-d,b-h,0,a-d,b,0);e.bezierVertex(a-d,b+h,0,a-g,b+f,0,a,b+f,0);e.bezierVertex(a+g,b+f,0,a+d,b+h,0,a+d,b,0);e.endShape();if(R){for(g=f=d=0;gd;d++)a.push(t[g][d]);for(d=5;9>d;d++)b.push(t[g][d])}$a(a,"TRIANGLE_FAN",b)}}};e.normal=function(a,b,d){if(3!==arguments.length||"number"!==typeof a||"number"!==typeof b||"number"!==typeof d)throw"normal() requires three numeric arguments.";Gb=a;Eb=b;ub=d;0!==aa&&(jb===c.NORMAL_MODE_AUTO?jb=c.NORMAL_MODE_SHAPE:jb===c.NORMAL_MODE_SHAPE&&(jb=c.NORMAL_MODE_VERTEX))};e.save=function(a, -b){return b!==h?l.open(b.toDataURL(),"_blank"):l.open(e.externals.canvas.toDataURL(),"_blank")};var wd=0;e.saveFrame=function(a){a===h&&(a="screen-####.png");a=a.replace(/#+/,function(a){for(var b=""+wd++;b.length=e.width||0>a||0>b||b>=e.height?d=0:Rb?(a=4*((0|a)+e.width*(0|b)),d=e.imageData.data,d=d[a+3]<<24&c.ALPHA_MASK| -d[a]<<16&c.RED_MASK|d[a+1]<<8&c.GREEN_MASK|d[a+2]&c.BLUE_MASK):(d=e.toImageData(0|a,0|b,1,1).data,d=d[3]<<24&c.ALPHA_MASK|d[0]<<16&c.RED_MASK|d[1]<<8&c.GREEN_MASK|d[2]&c.BLUE_MASK),d):void 0!==a?Lb(0,0,a.width,a.height,a):Kb(0,0,e.width,e.height)};e.createGraphics=function(a,b,c){var d=new M;d.size(a,b,c);d.background(0,0);return d};e.set=function(a,b,c,d){if(3===arguments.length)"number"===typeof c?aYc&&fb()):(c instanceof Ga||c.__isPImage)&&e.image(c,a,b);else if(4===arguments.length){if(d.isRemote)throw"Image is loaded remotely. Cannot set x,y.";var f=e.color.toArray(c),h=4*b*d.width+4*a,k=d.imageData.data;k[h]=f[0];k[h+1]=f[1];k[h+2]=f[2];k[h+3]=f[3]}};e.imageData={};e.pixels={getLength:function(){return e.imageData.data.length?e.imageData.data.length/4:0},getPixel:function(a){a*=4;var b=e.imageData.data;return b[a+3]<<24&4278190080|b[a+0]<< -16&16711680|b[a+1]<<8&65280|b[a+2]&255},setPixel:function(a,b){var c=4*a,d=e.imageData.data;d[c+0]=(b&16711680)>>>16;d[c+1]=(b&65280)>>>8;d[c+2]=b&255;d[c+3]=(b&4278190080)>>>24},toArray:function(){for(var a=[],b=e.imageData.width*e.imageData.height,c=e.imageData.data,d=0,f=0;darguments.length);if(a.sourceImg&&null===gb){var h=a.sourceImg;a.__isDirty&&a.updatePixels();g.drawImage(h,0,0,h.width,h.height,f.x,f.y,f.w,f.h)}else h=a.toImageData(),null!==gb&&(gb(h),a.__isDirty=!0),g.drawImage(Ja(h).canvas,0,0,a.width,a.height,f.x, -f.y,f.w,f.h)}};B.prototype.image=function(a,b,c,d,f){0=g&&(l=c),0>n&&(n=0),p>=d&&(p=c),n=b.pixels.getPixel(n),m=b.pixels.getPixel(m),p=b.pixels.getPixel(p),l=b.pixels.getPixel(l),h=77*(h>>16&255)+ -151*(h>>8&255)+28*(h&255),t=77*(m>>16&255)+151*(m>>8&255)+28*(m&255),r=77*(l>>16&255)+151*(l>>8&255)+28*(l&255),q=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),v=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),t=g&&(l=c),0>n&&(n=0),p>=d&&(p=c),n=b.pixels.getPixel(n),m=b.pixels.getPixel(m),p=b.pixels.getPixel(p),l=b.pixels.getPixel(l), -h=77*(h>>16&255)+151*(h>>8&255)+28*(h&255),t=77*(m>>16&255)+151*(m>>8&255)+28*(m&255),r=77*(l>>16&255)+151*(l>>8&255)+28*(l&255),q=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),v=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),t>h&&(k=m,h=t),r>h&&(k=l,h=r),q>h&&(k=n,h=q),v>h&&(k=p),e[c++]=k;b.pixels.set(e)};e.filter=function(a,b,d){var f,g,k,l;3===arguments.length?(d.loadPixels(),f=d):(e.loadPixels(),f=e);b===h&&(b=null);if(f.isRemote)throw"Image is loaded remotely. Cannot filter image.";var m=f.pixels.getLength(); -switch(a){case c.BLUR:var n=b||1,p=f,r,t,q,v,u,x,y,C,D;k=p.pixels.getLength();l=new A(k);m=new A(k);g=new A(k);k=new A(k);var F=0,G,E,H,n=e.floor(3.5*n),B,n=1>n?1:248>n?n:248;if(e.shared.blurRadius!==n){e.shared.blurRadius=n;e.shared.blurKernelSize=1+(e.shared.blurRadius<<1);e.shared.blurKernel=new A(e.shared.blurKernelSize);var I=e.shared.blurKernel,J=e.shared.blurKernelSize;for(B=0;Bx)u=-x,x=0;else{if(x>=B)break;u=0}for(H=u;H=B);H++)y=4*(x+F),u=J[H],v+=u*K[y+3],r+=u*K[y],t+=u*K[y+1],q+=u*K[y+2],p+=u,x++;y=F+G;k[y]=v/p;l[y]=r/p;m[y]=t/p;g[y]=q/p}F+=B}F=0;C=-C;D=C*B;for(E=0;EC)u=y=-C,x=G;else{if(C>=n)break;u=0;y=C;x=G+D}for(H=u;H=n);H++)u=J[H],v+=u*k[x],r+=u*l[x],t+=u*m[x],q+=u*g[x],p+=u,y++,x+=B;y= -4*(G+F);K[y]=r/p;K[y+1]=t/p;K[y+2]=q/p;K[y+3]=v/p}F+=B;D+=B;C++}break;case c.GRAY:if(f.format===c.ALPHA){for(l=0;l>16&255)+151*(g>>8&255)+28*(g&255)>>8,f.pixels.setPixel(l,g&c.ALPHA_MASK|k<<16|k<<8|k);break;case c.INVERT:for(l=0;lg||255>16&255,n=f.pixels.getPixel(l)>>8&255,B=f.pixels.getPixel(l)&255,F=255*(F*g>>8)/k,n=255*(n*g>>8)/k,B=255*(B*g>>8)/k,f.pixels.setPixel(l,4278190080&f.pixels.getPixel(l)|F<<16|n<<8|B);break;case c.OPAQUE:for(l=0;lb||1>16,e.max((f.pixels.getPixel(l)&c.GREEN_MASK)>>8,f.pixels.getPixel(l)&c.BLUE_MASK)),f.pixels.setPixel(l,f.pixels.getPixel(l)&c.ALPHA_MASK|(kc&&(g=c)):(a=c+a-e,g>a&&(g=a));fd&&(h=d)):(b=d+b-f,h>b&&(h=b));return!(0>=g||0>=h)};var pa={};pa[c.BLEND]=e.modes.blend;pa[c.ADD]=e.modes.add;pa[c.SUBTRACT]=e.modes.subtract;pa[c.LIGHTEST]=e.modes.lightest;pa[c.DARKEST]=e.modes.darkest;pa[c.REPLACE]=e.modes.replace;pa[c.DIFFERENCE]=e.modes.difference;pa[c.EXCLUSION]=e.modes.exclusion;pa[c.MULTIPLY]=e.modes.multiply;pa[c.SCREEN]= -e.modes.screen;pa[c.OVERLAY]=e.modes.overlay;pa[c.HARD_LIGHT]=e.modes.hard_light;pa[c.SOFT_LIGHT]=e.modes.soft_light;pa[c.DODGE]=e.modes.dodge;pa[c.BURN]=e.modes.burn;e.blit_resize=function(a,b,d,f,g,h,k,l,m,n,p,r,t){0>b&&(b=0);0>d&&(d=0);f>=a.width&&(f=a.width-1);g>=a.height&&(g=a.height-1);f-=b;g-=d;p-=m;r-=n;if(!(0>=p||0>=r||0>=f||0>=g||m>=k||n>=l||b>=a.width||d>=a.height)){f=Math.floor(f/p*c.PRECISIONF);g=Math.floor(g/r*c.PRECISIONF);var q=e.shared;q.srcXOffset=Math.floor(0>m?-m*f:b*c.PRECISIONF); -q.srcYOffset=Math.floor(0>n?-n*g:d*c.PRECISIONF);0>m&&(p+=m,m=0);0>n&&(r+=n,n=0);p=Math.min(p,k-m);r=Math.min(r,l-n);b=n*k+m;var v;q.srcBuffer=a.imageData.data;q.iw=a.width;q.iw1=a.width-1;q.ih1=a.height-1;d=pa[t];var u,x,y,C;m=c.ALPHA_MASK;n=c.RED_MASK;var A=c.GREEN_MASK,B=c.BLUE_MASK,F=c.PREC_MAXVAL,D=c.PRECISIONB,G=c.PREC_RED_SHIFT,H=c.PREC_ALPHA_SHIFT,E=q.srcBuffer,I=Math.min;for(t=0;t>D)*q.iw;q.v2=I((q.srcYOffset>> -D)+1,q.ih1)*q.iw;for(a=0;a>D,q.ll=q.ifU*q.fracV>>D,q.ur=q.fracU*q.ifV>>D,q.lr=q.fracU*q.fracV>>D,q.u1=q.sX>>D,q.u2=I(q.u1+1,q.iw1),u=4*(q.v1+q.u1),x=4*(q.v1+q.u2),y=4*(q.v2+q.u1),C=4*(q.v2+q.u2),q.cUL=E[u+3]<<24&m|E[u]<<16&n|E[u+1]<<8&A|E[u+2]&B,q.cUR=E[x+3]<<24&m|E[x]<<16&n|E[x+1]<<8&A|E[x+2]&B,q.cLL=E[y+3]<<24&m|E[y]<<16&n|E[y+1]<<8&A|E[y+2]&B,q.cLR=E[C+3]<<24&m|E[C]<<16&n|E[C+1]<<8&A| -E[C+2]&B,q.r=q.ul*((q.cUL&n)>>16)+q.ll*((q.cLL&n)>>16)+q.ur*((q.cUR&n)>>16)+q.lr*((q.cLR&n)>>16)<>>D&A,q.b=q.ul*(q.cUL&B)+q.ll*(q.cLL&B)+q.ur*(q.cUR&B)+q.lr*(q.cLR&B)>>>D,q.a=q.ul*((q.cUL&m)>>>24)+q.ll*((q.cLL&m)>>>24)+q.ur*((q.cUR&m)>>>24)+q.lr*((q.cLR&m)>>>24)<>>16,h[l+1]=(v&A)>>>8,h[l+2]=v&B,h[l+3]=(v&m)>>>24,q.sX+=f;b+=k;q.srcYOffset+=g}}};e.loadFont=function(a,b){if(a===h)throw"font name required in loadFont."; -if(-1===a.indexOf(".svg"))return b===h&&(b=ba.size),PFont.get(a,b);var c=e.loadGlyphs(a);return{name:a,css:"12px sans-serif",glyph:!0,units_per_em:c.units_per_em,horiz_adv_x:1/c.units_per_em*c.horiz_adv_x,ascent:c.ascent,descent:c.descent,width:function(b){for(var c=0,d=b.length,f=0;f":return a.greater;case "?":return a.question;case "@":return a.at;case "[":return a.bracketleft;case "\\":return a.backslash;case "]":return a.bracketright;case "^":return a.asciicircum;case "`":return a.grave;case "{":return a.braceleft;case "|":return a.bar;case "}":return a.braceright;case "~":return a.asciitilde;default:return a[b]}}catch(c){M.debug(c)}};E.prototype.text$line=function(a,b,d,f,h){f=f=0;if(ba.glyph){f= -e.glyphTable[zb];g.save();g.translate(b,d+Na);h!==c.RIGHT&&h!==c.CENTER||f.width(a);b=1/f.units_per_em*Na;g.scale(b,b);b=0;for(d=a.length;bAdditiveWave

              - - - -

              by Daniel Shiffman. - - - -Create a more complex wave by adding two waves together.

              - - - -

              Original Processing.org Example: AdditiveWave
              - -

              - -
              - - - -
              // All Examples Written by Casey Reas and Ben Fry
              -
              -// unless otherwise stated.
              -
              -int xspacing = 8;   // How far apart should each horizontal location be spaced
              -
              -int w;              // Width of entire wave
              -
              -int maxwaves = 4;   // total # of waves to add together
              -
              -
              -
              -float theta = 0.0f;
              -
              -float[] amplitude = new float[maxwaves];   // Height of wave
              -
              -float[] dx = new float[maxwaves];          // Value for incrementing X, to be calculated as a function of period and xspacing
              -
              -float[] yvalues;                           // Using an array to store height values for the wave (not entirely necessary)
              -
              -
              -
              -void setup() {
              -
              -  size(200,200);
              -
              -  frameRate(30);
              -
              -  colorMode(RGB,255,255,255,100);
              -
              -  smooth();
              -
              -  w = width+16;
              -
              -
              -
              -  for (int i = 0; i < maxwaves; i++) {
              -
              -    amplitude[i] = random(10,30);
              -
              -    float period = random(100,300); // How many pixels before the wave repeats
              -
              -    dx[i] = (TWO_PI / period) * xspacing;
              -
              -  }
              -
              -
              -
              -  yvalues = new float[w/xspacing];
              -
              -}
              -
              -
              -
              -void draw() {
              -
              -  background(0);
              -
              -  calcWave();
              -
              -  renderWave();
              -
              -}
              -
              -
              -
              -void calcWave() {
              -
              -  // Increment theta (try different values for 'angular velocity' here
              -
              -  theta += 0.02;
              -
              -
              -
              -  // Set all height values to zero
              -
              -  for (int i = 0; i < yvalues.length; i++) {
              -
              -    yvalues[i] = 0.0f;
              -
              -  }
              -
              - 
              -
              -  // Accumulate wave height values
              -
              -  for (int j = 0; j < maxwaves; j++) {
              -
              -    float x = theta;
              -
              -    for (int i = 0; i < yvalues.length; i++) {
              -
              -      // Every other wave is cosine instead of sine
              -
              -      if (j % 2 == 0)  yvalues[i] += sin(x)*amplitude[j];
              -
              -      else yvalues[i] += cos(x)*amplitude[j];
              -
              -      x+=dx[j];
              -
              -    }
              -
              -  }
              -
              -}
              -
              -
              -
              -void renderWave() {
              -
              -  // A simple way to draw the wave with an ellipse at each location
              -
              -  noStroke();
              -
              -  fill(255,50);
              -
              -  ellipseMode(CENTER);
              -
              -  for (int x = 0; x < yvalues.length; x++) {
              -
              -    ellipse(x*xspacing,width/2+yvalues[x],16,16);
              -
              -  }
              -
              -}
              - - - - - diff --git a/learning/basic/alphamask/data/mask.jpg b/learning/basic/alphamask/data/mask.jpg deleted file mode 100644 index bbd1382544032ce6b99d0f2e8001fffe6593fb5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2825 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 ZtNNJAWQ5P*>q*ITsqO}CngKf#{{@9F#LoZ# diff --git a/learning/basic/alphamask/index.html b/learning/basic/alphamask/index.html deleted file mode 100644 index ef77eab..0000000 --- a/learning/basic/alphamask/index.html +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: default ---- -

              Alphamask

              - - - -

              Loads a "mask" for an image to specify the transparency - -in different parts of the image. The two images are blended - -together using the mask() method of PImage. - - - -Created 29 April 2003.

              - - - -

              Original Processing.org Example: Alphamask
              - -

              - -
              - - - -
              // All Examples Written by Casey Reas and Ben Fry
              -
              -// unless otherwise stated.
              -
              -// @pjs preload must be used to preload the image so that it will be available when used in the sketch  
              -
              -/* @pjs preload="data/test.jpg,data/mask.jpg"; */
              -
              -
              -
              -PImage img;
              -
              -PImage maskImg;
              -
              -
              -
              -void setup() 
              -
              -{
              -
              -  size(200,200);
              -
              -  img = loadImage("data/test.jpg");
              -
              -  maskImg = loadImage("data/mask.jpg");
              -
              -  img.mask(maskImg);
              -
              -}
              -
              -
              -
              -void draw() 
              -
              -{
              -
              -  background((mouseX+mouseY)/1.5);
              -
              -  image(img, 50, 50);
              -
              -  image(img, mouseX-50, mouseY-50);
              -
              -}
              - - - - - diff --git a/learning/basic/arctangent/index.html b/learning/basic/arctangent/index.html deleted file mode 100644 index 267b452..0000000 --- a/learning/basic/arctangent/index.html +++ /dev/null @@ -1,269 +0,0 @@ ---- -layout: default ---- -

              Arctangent

              - - - -

              Move the mouse to change the direction of the eyes. - -The atan2() function computes the angle from each eye - -to the cursor. - - - -Created 1 September 2002

              - - - -

              Original Processing.org Example: Arctangent
              - -

              - -
              - - - -
              // All Examples Written by Casey Reas and Ben Fry
              -
              -// unless otherwise stated.
              -
              -Eye e1, e2, e3, e4, e5;
              -
              -
              -
              -void setup() 
              -
              -{
              -
              -  size(200, 200);
              -
              -  smooth();
              -
              -  noStroke();
              -
              -  e1 = new Eye( 50,  16,  80);
              -
              -  e2 = new Eye( 64,  85,  40);  
              -
              -  e3 = new Eye( 90, 200, 120);
              -
              -  e4 = new Eye(150,  44,  40); 
              -
              -  e5 = new Eye(175, 120,  80);
              -
              -}
              -
              -
              -
              -void draw() 
              -
              -{
              -
              -  background(102);
              -
              -  
              -
              -  e1.update(mouseX, mouseY);
              -
              -  e2.update(mouseX, mouseY);
              -
              -  e3.update(mouseX, mouseY);
              -
              -  e4.update(mouseX, mouseY);
              -
              -  e5.update(mouseX, mouseY);
              -
              -
              -
              -  e1.display();
              -
              -  e2.display();
              -
              -  e3.display();
              -
              -  e4.display();
              -
              -  e5.display();
              -
              -}
              -
              -
              -
              -class Eye 
              -
              -{
              -
              -  int ex, ey;
              -
              -  int size;
              -
              -  float angle = 0.0;
              -
              -  
              -
              -  Eye(int x, int y, int s) {
              -
              -    ex = x;
              -
              -    ey = y;
              -
              -    size = s;
              -
              - }
              -
              -
              -
              -  void update(int mx, int my) {
              -
              -    angle = atan2(my-ey, mx-ex);
              -
              -  }
              -
              -  
              -
              -  void display() {
              -
              -    pushMatrix();
              -
              -    translate(ex, ey);
              -
              -    fill(255);
              -
              -    ellipse(0, 0, size, size);
              -
              -    rotate(angle);
              -
              -    fill(153);
              -
              -    ellipse(size/4, 0, size/2, size/2);
              -
              -    popMatrix();
              -
              -  }
              -
              -}
              - - - - - diff --git a/learning/basic/arm/index.html b/learning/basic/arm/index.html deleted file mode 100644 index dc4ab20..0000000 --- a/learning/basic/arm/index.html +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: default ---- -

              Arm

              - - - -

              The angle of each segment is controlled with the mouseX and - -mouseY position. The transformations applied to the first segment - -are also applied to the second segment because they are inside - -the same pushMatrix() and popMatrix() group.

              - - - -

              Original Processing.org Example: Arm
              - -

              - -
              - - - -
              // All Examples Written by Casey Reas and Ben Fry
              -
              -// unless otherwise stated.
              -
              -float x = 50;
              -
              -float y = 100;
              -
              -float angle1 = 0.0;
              -
              -float angle2 = 0.0;
              -
              -float segLength = 50;
              -
              -
              -
              -void setup() {
              -
              -  size(200, 200);
              -
              -  smooth(); 
              -
              -  strokeWeight(20.0);
              -
              -  stroke(0, 100);
              -
              -}
              -
              -
              -
              -void draw() {
              -
              -  background(226);
              -
              -  
              -
              -  angle1 = (mouseX/float(width) - 0.5) * -PI;
              -
              -  angle2 = (mouseY/float(height) - 0.5) * PI;
              -
              -  
              -
              -  pushMatrix();
              -
              -  segment(x, y, angle1); 
              -
              -  segment(segLength, 0, angle2);
              -
              -  popMatrix();
              -
              -}
              -
              -
              -
              -void segment(float x, float y, float a) {
              -
              -  translate(x, y);
              -
              -  rotate(a);
              -
              -  line(0, 0, segLength, 0);
              -
              -}
              - - - - - diff --git a/learning/basic/array/index.html b/learning/basic/array/index.html deleted file mode 100644 index 673fe50..0000000 --- a/learning/basic/array/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -layout: default ---- -

              Array

              - - - -

              An array is a list of data. Each piece of data in an array - -is identified by an index number representing its position in - -the array. Arrays are zero based, which means that the first - -element in the array is [0], the second element is [1], and so on. - -In this example, an array named "coswav" is created and - -filled with the cosine values. This data is displayed three - -separate ways on the screen.

              - - - -

              Original Processing.org Example: Array
              - -

              - -
              - - - -
              // All Examples Written by Casey Reas and Ben Fry
              -
              -// unless otherwise stated.
              -
              -size(200, 200);
              -
              -
              -
              -float[] coswave = new float[width];
              -
              -
              -
              -for(int i=0; i<width; i++) {
              -
              -  float ratio = (float)i/(float)width;
              -
              -  coswave[i] = abs( cos(ratio*PI) );
              -
              -}
              -
              -
              -
              -for(int i=0; i<width; i++) {
              -
              -  stroke(coswave[i]*255);
              -
              -  line(i, 0, i, width/3);
              -
              -}
              -
              -
              -
              -for(int i=0; i<width; i++) {
              -
              -  stroke(coswave[i]*255/4);
              -
              -  line(i, width/3, i, width/3*2);
              -
              -}
              -
              -
              -
              -for(int i=0; i<width; i++) {
              -
              -  stroke(255-coswave[i]*255);
              -
              -  line(i, width/3*2, i, height);
              -
              -}
              - - - - - diff --git a/learning/basic/array2d/index.html b/learning/basic/array2d/index.html deleted file mode 100644 index b8c24b6..0000000 --- a/learning/basic/array2d/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: default ---- -

              Array2D

              - - - -

              Demonstrates the syntax for creating a two-dimensional (2D) array. - -Values in a 2D array are accessed through two index values. - -2D arrays are useful for storing images. In this example, each dot - -is colored in relation to its distance from the center of the image.

              - - - -

              Original Processing.org Example: Array2D
              - -

              - -
              - - - -
              // All Examples Written by Casey Reas and Ben Fry
              -
              -// unless otherwise stated.
              -
              -float[][] distances;
              -
              -float maxDistance;
              -
              -
              -
              -size(200, 200);
              -
              -background(0);
              -
              -maxDistance = dist(width/2, height/2, width, height);
              -
              -distances = new float[width][height];
              -
              -for(int i=0; i<height; i++) {
              -
              -  for(int j=0; j<width; j++) {
              -
              -    float d = dist(width/2, height/2, j, i);
              -
              -    distances[j][i] = d/maxDistance * 255; 
              -
              -  }
              -
              -}
              -
              -
              -
              -for(int i=0; i<height; i+=2) {
              -
              -  for(int j=0; j<width; j+=2) {
              -
              -    stroke(distances[j][i]);
              -
              -    point(j, i);
              -
              -  }
              -
              -}
              - - - - - diff --git a/learning/basic/arrayobjects/index.html b/learning/basic/arrayobjects/index.html deleted file mode 100644 index 1b69576..0000000 --- a/learning/basic/arrayobjects/index.html +++ /dev/null @@ -1,293 +0,0 @@ ---- -layout: default ---- -

              ArrayObjects

              - - - -

              Demonstrates the syntax for creating an array of custom objects.

              - - - -

              Original Processing.org Example: ArrayObjects
              - -

              - -
              - - - -
              // All Examples Written by Casey Reas and Ben Fry
              -
              -// unless otherwise stated.
              -
              -int unit = 40;
              -
              -int num;
              -
              -Module[] mods;
              -
              -
              -
              -void setup() 
              -
              -{
              -
              -  size(200, 200);
              -
              -  background(176);
              -
              -  noStroke();
              -
              -  
              -
              -  num = width/unit * width/unit;
              -
              -  mods = new Module[num];
              -
              -  
              -
              -  for (int i=0; i<height/unit; i++) {
              -
              -    for(int j=0; j<height/unit; j++) {
              -
              -      int index = i*height/unit + j;
              -
              -      mods[index] = new Module(j*unit, i*unit, unit/2, unit/2, random(0.05, 0.8));  
              -
              -    }
              -
              -  }
              -
              -}
              -
              -
              -
              -void draw() 
              -
              -{
              -
              -  for(int i=0; i<num; i++) {
              -
              -    mods[i].update();
              -
              -    mods[i].draw();
              -
              -  }
              -
              -}
              -
              -
              -
              -class Module {
              -
              -  float mx, my;
              -
              -  int size = unit;
              -
              -  float x, y = 0;
              -
              -  int xdir = 1;
              -
              -  int ydir = 1;
              -
              -  float speed; 
              -
              -  
              -
              -  // Contructor (required)
              -
              -  Module(float imx, float imy, float ix, float iy, float ispeed) {
              -
              -    mx = imy;
              -
              -    my = imx;
              -
              -    x = int(ix);
              -
              -    y = int(iy);
              -
              -    speed = ispeed;
              -
              -  }
              -
              -  
              -
              -  // Custom method for updating the variables
              -
              -  void update() {
              -
              -    x = x + (speed * xdir);
              -
              -    if (x >= size || x <= 0) {
              -
              -      xdir *= -1;
              -
              -      x = x + (1 * xdir);
              -
              -      y = y + (1 * ydir);
              -
              -    }
              -
              -    if (y >= size || y <= 0) {
              -
              -      ydir *= -1;
              -
              -      y = y + (1 * ydir);
              -
              -    }
              -
              -  }
              -
              -  
              -
              -  // Custom method for drawing the object
              -
              -  void draw() {
              -
              -    stroke(second()*4);
              -
              -    point(mx+x-1, my+y-1);
              -
              -  }
              -
              -}
              - - - - - diff --git a/learning/basic/backgroundimage/data/milan_rubbish.jpg b/learning/basic/backgroundimage/data/milan_rubbish.jpg deleted file mode 100644 index 516d46d5d1a0b101c04717ef5d4e8fdc604fd017..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19754 zcma&Nbx<6<8#TH(lv0Wpcemojt+?C5?jl8tyK8ZGhvF^^MHZI|RwxuGy1T%O7uiKh zaryeYcjlY>=RKKZGEXwe$xJ45@+8mG%F};1Vag7Jg^!~n3d{)c}hHZJzRjE94bjf01ei;IVgi~kIt z;2-dxJ$wE?{40rwoEdVTR3``sVF5XK3CI%K3 zCN|dpmV)=M9|k5C2{sOZnN$c@k%bJ;z?$4EGEVV^vh;eyE5fj zrLCwPyBG)6tA8Z^je?2&Kj8g8(_@feVlfM0E0P+pkl|Q+MG9wDkmI(^DH)#Hu(EyG zJoC;HrJ#I*1D<33V@85S0+0ucBGw=8$Ka5C!M$79VCJkka=BPV;oiiI=kE$eGp+3q zaBJ2Bm{VJ#Vjgnmmu+=}aI(l%9!Myy!eH2|&h8%9L`3^P9!Od+S6@ARTVnQxDiH!E z9aZofC-BKnYg2U@f@S$k;H|z+!(C4RKSB5Y>>h@xg0J?rp$u$h zeSIbLFmu96DbJqp!GE_p^`VtI**B93i1?T`YEfGDBZA0OPMUpp4tF$|Q_$O;^+4JK zaXc{PAxgiDE44*zxW@sq)G)3L4vl?=`K=Z@e%|275P;moc$Kna+XnqqNH|fQw>|;V z5%{lT?B5PNl~ViV))n2=L~8v00X-AqhBAJDMNLpm1<3q-AuO@U+}@V{-Rt#pB3YnZ zQN&l>u7{2k6f|cj%6uT%?$JRc>Zg505?fb)PcO~hJ}BL=-Xz0H1aESnK+|A zS$O5>d)WIdh&E78uSUhexru=F`CnN_(Og%Uo?__~$T7ifEnr#lV%%0J&wus6L1>hW zFQ1A96j(*&v~rVxS>2MFmD~+-#H=jHR%}PLJOR*%5LZjBLB3=2RgR9`w)uC&fEM!W34>8OF{e1etYJz-TuOzwDtDEfeO~d_cmW12(l^`8y3?B zo&dssr^ENFZW1l0KKFe^+@=S)LzYKn&UNgazf=o#KneL0)WDft(9x-8{zz!T!(agM zW82i_3>|T$xGC_)xVveTXlIZ5jrXaHc~Pj}!5{F&ahRP?`rh>i#_rO|lgCN4cJ6uv zp`Q~R`d)@)4LN?mYR=ol!YfOpPUC_U=l~A(<$uwg62Bk{>6d@uAl)qC{I&4o^d}AX z_i-u^Le9jI#G@G;a;m7o}HcFy&3L?B*AdK`6FAw{Fw_i$Bo&VLqF? znCx@VOPY2Sz!N|(@d@xFEPWgtc(yb3=ExF$eVw#6pWfTs=5Q0bWGf`@Z;MmQ$#OQG z^%>D?7Z4fflaWDSduq|=w_G_I-$B!IYHvSGxA`m)`-CQe0ZqD_P$x^zNswNhob$%+$saHV0Qq2N!+BY!eksq4>z4wK98`<5eZrpi{)TI79 zEGAW`UEPclWt4-nB{IsMMGi$C27ts>7Jz^k4;>SioI&=kG>6__{Y&SqS*zO-Q+p}r zxV5?4S1u-?L8G}u9%z9*DnIC|6e5c#C=|&zT(v)8ZqxGL`knLxi?_ohkr(Vy4!rV@ zT7pveOSibnyDG|beey3sBv}0tQ5cC<*7YTeR+0nHYUa%wkyxyANS_WT-b`|wRiWhHyD128_Tq(PkmpZ^xuhY!!4}d8zVKR|t{9RqkeGm@l z&ArO7c2oOYZg(MVQ~Khd2l!BlcDcTRo=ahVptyfner?N&p2D|Y2Z5`VFmL{G##KXT ztTJ|-WRG`h^V4$C?(#IkV%l9~uFHvgBalv9?ib1X_bvzUI*JfPer}?ThC7KT;N)z{ z@6!&rZ^gNHTg5J(6+N`mJ9zuI6u}^q#PJChCE4=w!sH{XG{00S*kEl?KJjI7$yfJ{ z>6M>BIB9_z?3G$i0C6m%7!P1zfvee@1|A7|KRq40MWzml+2y-3GWQ<&lP(s@F*sW& z-*T!=x7BN-&l&i*gTAG@xV(eF%Di!8O~LTs+FV#%&(~dP5w>xXg0?iRSGJyQVcH%C z(rPc)3Q!XgxqcO6m(4^CE%iDzCV*iW{WuzkH(-6N3m1}e=|893gEZ)CgEb-rd9q;? zpk(7f7k8v4XzKT~ZkQ;9v4Z{yknnhgYVm3R#@-wtZUnX!oaM6bSO1;T$fe=Hz(`Ni zUCUL#9ss&7D_tA>ONoAc1{xhf9;@R^r=1lW zv#}rFo&jQbx|SsyLbp?Jwf7YiH0VE%~~w!a|&s$~%wLvt-&*&nerF1ygGxpH|LfPHms;Mh{-aXnmJ_OMnAvFU z&*2oJ+!OERzqV6AhZY+QX(l=|JF!kOc`#yRG1;zij}LYN16PnxeF(@xrCa6-kHF0% z2_@qS==5BfC;1j^!riU7tiIO|#j^GB)V%yEZDy|XvbsG3a@)fXXx*r3@IT^m@QW0` zPQWJV-HO36l@}&t{ALWRaepar{C$kJv;U8vEwwOketkLNPlw=cU1|`${Fueh->ehe z&e~L079M}D9}!cQkV21Wb6YeU!EFm_Og)m&Py;82IInCQyat7MnmWPtjZhJGNPjsa zETrs4X7o#yV~H-HHwG(0lxNg(JD6Fl+^Y0ewym$_0*1E^-F?xq(MKF`8ul#{_W3eT zP$V)g7_>_&k=lZT@mD76-et3nH&oP;xIX>heD$Pm;)irT5*Z%^T3_9`vrk8bOr-?` zP$NTq67B4oIz1+v)DHE=m4D`SC3rvb$-cR4$g&SlW=$FKzqQHrpbR4M*5It2Vb7Sr zP9BZ>(qNU>PsPF6|L*desG^leKpJPS+x~H@Cv&9Wrk*B2X)<<8RZ_-hLrK8zZ?<(j z``}~dj)ieSK7LwhaS=jROYp!Lp=323C{px!__R>yWNv8!m=0(^xgB}>_-qOAycqhfk`lexdZ(wnh~_j=|S%RWM^*G|Q| zU3$IUk8%JL(iK)JkhTrvQeKRA!Z9pQ8buS?t7Vyigxt70H;KZL&{R*@!x zFjDZFmAX!qQ@<}6aD~E9_gPki&g1SW$R6*NU`^-Bm<51Xon~Xb(hCrr5oYBqUGLB` zh(NzU3?^-Hsgyaa=n%3ri!hT~1l21L?&w5{Nm+>pTrO%6X}dH^X$OR_ zb+L+gCi|qd5%7;Lv~^^F43Te)*)`9O&X#O8y?rDTm0MO0D_ivm5rT+3X{44+cev$F zYltP<95p?im`u$^`rU~O_^k4Gg(H0Um%`%GqKosJa0V6$XC`rU#JjNJZV!G++^1!g{gqwClA?0Jk#a{rw(z}8miXwQ72A~Eqz~fcez#T1TQyW!VW~RZtwT` z6cpd^H@i9%1DH6HY5eeU_iy@+W~`8>S4xJ?rm=n?NBF1kxjT>5yjGbtD3$k)Enx7< zb7GmG4UpRzAEVr`n(W+^u|Cr5wXoC{*0i?D>v+s>{R&B|ujWR>9$Qp?Ft!eWVSSsr zIvfhgMb~KeZ}?96%Uo-VliRqrUnNTX+AW$P5ElRAW5pB{rpu#XN7s$O~CmpIc=z4_NtNw}%Y|WlpYax>gn)9v*@?5}A$o zqAHA;RIrQ6()w{}*K~}_TNd?zZuA{@@6g(f-~HC}+b+=@qNGzU_>ksIyz??00<)uE zKlE0ip>i7!UxB*~Nr&oJ#c-s2=R<6I_|K@vExyqmuXTt;pO*I(Q#6GRiBZO(6p{R` zGq;Nlj-_elWrqx^|HUEd?zd}5(HGBrVGX*xY56+eGm(YrG;n>)qovk=ek)$UCOwHC zgU8tm!xLBgu))N8QG@z=w zb@<{?QIsiFFe`B}ANnyycA5WCP9m^cNTLzL@w>i$lp-Vl#d8X6vEzA+ogODkwVeDQ z4D9UQrKnkxd!^EuaYa(CqVKF>Lb$XJU~j0rLEaFPfl9cPR(94ZqgycUXsStoeEG4z zS)#Bx-+!cQy8H7X4T?3vzFSo%%My<9ZN7~kv-Y~WyZ0&9Zab6I#h2t8VYK?++cD)# z77g21erF~Kv{R|CG=o*JJ@!lAS4|oOpXcdK%4zA4h?%rB)3j8Xikk)yxjj#2BY0EZ z=VuR0&Lw1G@-{f1ZLser2$oIk8FrFBVHS zL37{iq!VjG+wF`zEOQukHPii(=Dvweto(7cSkl_yk)F5!w>{yM;r|^#sx^@=Bx+f; zUGd+JmDnY!k$Q+CsSiE9-}A6P`QM+OkN!r_eyvy_AU}OX1B43;CZ1`wy=`tV$ptC2 z4Azmsn~KxUdB5FIOY%FzS=3q|7KVxrxy~NC9lc*7#HRaq(X5H{a7pdA=O&G3?-VWl z7P(QriLl}uftsceZC8`^5GYdO{@2}NNe9a(p-m_wJ4<_9h zKyG<#I{RhbkUkcjyGLKg*;SqUc;=M(b_=OCY|mK5k)G)t>6@mpnksDJK&OF$bumu} z&YJ(6sntmQcwgt>a$>>$U^g1layuMPk(Et>xHPR)uPx|f0Z+W0^HfwqlmAL+88R(e zX$SzDNNl+;T}{ATm(cA?%k#l3XY=d7n>|mHqSQfn+ywUQG`0Pijq|B4v^X#@IEL&> z-pj5T3T+V1HW zR@t2Md42b6QLj=xcdsrfh_+xPW;R0Gix{j1DXqvxp;Bs<`0~BiEY@@ma4DCB6HuhA zmNK+(WU;C4)Sdi|Ho;B13t z^8&%p7i*vLKhO2mif4Jx=shg1h>Pp4exDBVa`Vbc+M}*id#^}t9>&4@X=l;7ELJRY z`TN$SKzg!<`lVO1T+9cI(bp`M zL|A4jtSI>P87)l0_OiqHu*Y%B%1{_m`I{`n0M+exSGVRr*oF|#W&1PqUH26ju22bO zYsRQuqiT@qG66%U45TGP=h5?GKgAIqYu}_~HQwGxCl}iK=O;Y3RiA8Zkd9QY zUPO^dQ3agJe7vn1sJT* zl%7S8TqL;V&8_BF<__ZN|D+BJ&QwPqfVV^-%W&ji&Uj5hF+(AT3YGX0-wkbpg_`Qc zk=371EeSmhL;E*Te+ApEG9`LLrU=*HG@JJT_}Zw>#$^mTojh0)H4`pMK7vEUW;ZwTv%sz9=0WL9&mu4z*M~?*EHQ0jo9;(k_PTcw{QX>a zjvFb%O)}9?)X*`})ZI<`l@0E(+|R#Wy&-!c-Vxg79k_>Ve)cN*#5|axxI@EVwtwOB zEG4=%or$)cI*sWGXi5BMc*TH;=xjf;)%npK=VInAfUavk*WlhK%muuV_20rR^h4bg zO7;q7@~2UWcdYR{bC6hYT~p7eKLLhPn~$@au^2|hfq`hZeOM12YELzFyOs2F>e3L! z^-%+9a=#R+x8ZIOtrp?G;h~s^s_q!I1!WQJ9*g%F8w@%6PNRc zmcLQ=%Uxz8NoJEZ-`>g+(gwL!nYW{=D>}?G$cmy%$~1ooDiH>sMt&MWFt`LTaTI*CcxT zLw_^_%`IvgRm=Z*6&5_l6X^*IYEA+P2`eS;)>C7s@KK*5!w=sd85lufF0eL!s#((q2i&b zQ(vuQEp>kD6!ifO1Bp}_Eysm(E)50R9e;a1`8M~304gl`ysjS3jG&zk8TH>v%4Cmp zaRm=rdT!4QVR}D&O}p0D-#xUV3PMb~Dpk74L#E2>4h7KMdwC9Q3)yq3-;}yEymgxU zT*)kvis@;Rt#*#2Y9tky)ma2cMxwsMz9?m#Oe^K3IBpK6CqU&u5KUmXGuGAN3Sx`u!_}X}|&iH(@Yvyx)1|(nMk=?cpPk=6`kaL*dpKqNn zI=9h+-ffS#sqh-;J;OyPxv(IA)eWCoPCg?%@sMt!7u6Av+k5doMP^X4R8^FZxE8T+ z2!nPjx}6~XD?}u&cnQ}6`QFZ3Zm+|?UpMD-5WHk1z+=!}q_Bk%uho6h3NE?5mu#R2 zeG-_=qrhWtdf@Qv!-69J;W zrLEtY+dW}nSn0daaP^C!{U<=fg%sghe{Asp)Js4;D^zXaGo@)4-@E?631PK;0}aXn zztE{4f#LiW8kdBWK81YYe8^E35k)qEZ#j*WuQ|cqTRIr;2#soQ4X^uWf}|lFS3sk- z{^xOHV>ie14ZFW{bGUCN^lBJac;LBUBQ&qX&`1i0GO=IwFD=dw|1RLLMUddE+3MK5`HvZF z4H`ebdxd9sQK@#@HSHi^5`^Uv%7c1OKdGQnc=SrWA!T66yN1oo#DAlZqHe1luDu$uQ;(@>IZOhy+gG3XKANrgnT7~;f-YKuU!_kd_PL`0bIK`LC5el@zq-y+SdSp8I&o$L|an#(UCU!45J zBt^H&cziL9ttTQzbc@XzyOq+}2Q<8Gnqzy(Yz@-Mo&Z7=>{cJ%Wtl{fH8mTTya;If z7?Qeb`JaW2bvB&u5WZtjEm3fHqWWqV$GHJB0h1S4z1UEWzzHs2n4Hv>#M3(&vOkd#tkC2EwN z5TD9iFE=wqFo^}YV7r?5^qdc5QYek6c>-K%JCp6{0f!wEVgD4om*8dV*7BKJ`!1wE zovZ!WuYd4Ftf#j#qOQAi&rHBJ3&d>rSeaDRLyOfx(UN-=GC$xvpJ#YyuT&bJJXRK* zLl?qoYny%|@NFuX*`xJDU_0yGw5n3OS3TQ@&_UI~RIWU!;moQZJC=WkB+siELPn8V zF6bwK?Z|$PY2MXRt&s^P_dYZ3699Mn+F1l>uy-oY%U_=BhI-%Kqr@CLuWN2X6|3ku zK;ciwUB6L#tIReQ$vMr&a2SVwyk`6F#q$|aT!!)>RycfU^zyyq*6z_h9;!=r zl)fiRlHcYDpp}aJKB~EtYr=N4IAp15)TYz4IXe*;^06!1PNu9s;9(j2`VRE&Q%4U& z>S!mvySoFBappX!DE+{~K@Mnlmwg-=KU(AK(x3sdA)25kam zEy0)Vz3o1UwI*+>Fk|PrS9{IzUTZ>MBX#UDgd1X&sqr~taB6(Z>O3%F?KvtC;hR%& z5tDb|vJ0H3Xz%>D5k8Cov+fdsK7M*Z1 z@y;cvZ>BJ2$cHE7N&WRWX9oV)qP8aJb<&vkuwKyPG$xet70zsOpb}D?_{#U%`EVug zuioM0C1QlS7d`U?7+@EW9Yrgt5aPRgU0+{a2MY<&$^)rcka>3`yz+LE-F%pdyb&Rn^yM*a%Cg7B5MIYwgS^FdYtr=V>8)wwMqeo(Ro`= ztHgTbv%uCzts4>qyoQFVgYMjNm%yWJ88WnT8$C!wU-?dhLCPah43fJex-_o%O0d}= zP55`VvRT2IO}I&8*)TZiZ%CDt=xiZzfL&W-lNaIVy;3_F4AG;J#TWhaz}2jOZ%j`B zwf4Bhb$yN;%wv2PC!!bo7dO1W(6j5(9G=7*WxaAMC_39U;g5?hS*fV!neD)Wn#R6E(tSj(Xc_6i1gb7p_i`%%S)E*GMF(` zcyd=TT1&!@D$N6%4q>-d>z*AOoCH_01=6e3Ex&rvkown`radVYWMb2uMumI=*wzCx zbzVx&;zz9#Xmec$8Q(4!BX);R+cPQ6{;drp^%^Mb(f)LVFJBCY(oPIGT2~;T713I$ zJ>Qq^&67R(h_}&W9{aKMKmU<94gUW+J{4|SKi0AL*;L<4SiC;djGhcmgU#WsAdyu0 zLTY@5vap8%L)u)X&n*2Z^*aREB2+aBrxZ(WhhxA_H1o!~x!rMPSCk~@pq=sSuTZ|) zx94R%Q7#6}8=Ai=>42K;E^FIpU_}2hI>eBcyQR66)ub@NY%3MR)bOqHg#Vcv4C-z! z$b*;sp|slpBCZFMmP3(o7R1v`tXCKO5GG7c3@p3{M)`5Ya8t9h((;%v_R{Z9}u#FMhy?n8?9)Oa)zP@uB7r%`CoNgzI$>!ExREo_YbiBVafn1 zC0Bn2E)#Iu1I4vg@=|XA`EJZ|@s^-ZbyzOUexPQCzf(OBhakHi~A>K!>`3 zoy-$2YatH5M5@Aw9N7(tWBrP9;RA?j`KOWGuHXC;Z#pvVfW*@d+c(cwFB^et<-Rct!nH= z@pf(Jb+SV+J&8wF+J9qR=go6bwtO?B!R71q3%kk>QvM5$>e>8L57HkR&u{IwldO2! zu$-66Z;mqA1%Pn4wsC$f5`t_dVr9vC(*}O2rUP@|Z~HMKyNjX=59n-{ba?`RrGLB$ zX%5Zo!I!J~FR`&xY{gYh3UN7Oa<XBIJI=8UD2Pec@XD2g&;E|RmB0g zB=r4N7Ssve1+*IZr+0!jhpBNwXiVrw>4?0zdQt_F;TE5Po0y;P2txJAu1f4fN+k|V z`s#}gp|y{g*Rb!TjCYDJdw%+3j;Qd%(YAs-ZCur_c^CA%27Ps2F7vn?hDORGV??T`P7c4*@0wSB6e)h!*9Y$*Ln(dfWPh%t zbI>ze{X!e>OW|X0Ne4eLYT^mhQwozL)FrzJ?P&!0ihlg0d;A1&?aEsidrZz)>`^ez zm8O7~Mb0k5a`aqy+}jI!f!6*4{0=!ri(M>RG-E+E<#Pi-ZfQPFL%Bc^;!ob zCc4MA>;o&JBvZa50OAstn)Ky3!Ed}d1+DqMANvwJh4`%d_a@)B09mbL2V?k4D&vbT zOhPv*hm6^lKCU<>%lmAc@zpmO_r?2%L6cEE@ISPOFC86^4 zCfh-x0qPwS^K+C!S3|Ox2rIG49b@tWMVtDMk&h-eBSv)=CU;@;g$94P&HompYB->$ z4&)k7Sx0#dyO$iBm0u)P1ryU8$+H@JiJa4ptA&}ot0;p>ld*;!Y?%4)!l(8wie7CN zhku}Gxs|BOW9P)N_}%%gD+DfR$LC%_Wzpo~lKZ_I{}&be=PV$UOQ)|r_2(abm*UBV z!6A0CYP1^TzYjdlq?OwKrW7H3Z`Cu`G=y7)logIxP=6K~Ac0IJZ5>!4@t2#?UmB7B zR7QY=IF1`iaFcX$-1&uPrsA0c4a~Ll@L6v*1jWm%-_I zEseR^ZyOwEp8#$WHoALXNCSm0M@JOe%4IlGBIv~;-`w=lLzUh+qlu!%$FHzkcFN2A!@)z-KW2;prSw(?j=|lh(>TyH9wD_={ zs^AMh3IV8@v?_1F{NO4&^Q;w2l}HMIE$F$O>*KGYhgVGNaFJ1x%)Q?H!)Z%mdEh^> z-v^D91E{tJOC*1Hx7@<|#F&PX1>yy5<`FN~U9Y~W75T%eNr3YcpeO>@Bg8?yNmYJ@ z&K5118RnbIFGyVBt>HM4n%Hu*_gFQ4vSii2iXdXhT(d}(p?Crq;Ff;*P;!KGoI=ha zeyCf`#cXVx{R^_PK5-#;I*jA?f%1ay!Sx)=EC=uYmfDq6x#zdoZ1pbjNk< zp{S1NuXB7JCY%Z(T0yC@ndyCjpWE8)AoUrHh6I-O{&?}{vq`_U>y1pFw};ol>7D@V z^e1cG4?jN^>kucYLQwSTcO+We6w-_%1^V{VHt8?? z!?<>UaBj=y>Kmob%tl}t<&v%?J>-0Ngg!_>W@7ZN3ZeUmB6LY^8W7MPNdns?VX$|T zEcBbqMxN7y^SseLJrIDa=RY9lP9fZ!V z`p?3k8^62#VdpN{b@99PnM6I2B%3fITdzoxCf-?|q;(#|zYzQK z@xq}9H(3PEeekJj$|>~hjb&}h;Yhd?yJIQ*0lS3Wvbk$K{4@*-bh1N*#*j`_uy1;K zcsJunCB8C6)i$45$P?F{bM_7m7rGDk%G-5VYTdJ6U>ul+sPpPwSLBGvO@j;Dm%%GF zpX&Mu+UVDgOLdVyBfld%Go$uto!CbtaEsA(=jmlka>2t#B9Op{S1PhJsrF%ur4qM% z+%8&gH34Y??%?vrppTyzcN%UE_|m96M_mM-pD>qwU$dwp)i-CYdhOhn1^Xk^;9lZV zbC>NjvFvKnipBmDt|j3wc3^#g9HmQ(w;?8@WlY=kU7vR3<*!^`QBI0%TYbKy!S9++ z<(0Z)0g1^*;#w+T0!zybopi*KIa(ToThd^_+;b_VDb9knL~4$7{zNge-IPS7Uv-7f z3irM%oCiDC!iNZXYj4a#oK9#@5)iZQ;n#K(=N9ft5$lyj)cZRtk@)_sw;dC!QyzSC zACBw)Gp=__oNKd~pPax_l}Gl-=sAUG1;AgLYX!Zxc6585RZl9xTVMMQ=}#-(+0)fA zz1Hz=i=4GMq@AwCRFVP)`zRqndFjcfZ@r!Oj#;ICUxlqNTJ4nPO2)i%JQ?Eg@R^?W z*}mmgF%_K9MU)Y7eEO-Aa+#O&z&yGH(G9b%c6cM)ni)=ecCT1lYHfZZfeXyQaCm=>+Oz_Up9^znMVW zPQ2%1Ztv^5l`Q?T6A~AvB+2xb)kI%mZHVS#dAfAiLE^8Nq}+b8tTg!kYyDt7syK%7 za_t-aC*E7f=ejy-Mw8K}vsS(5O;;#_3X9?oV|- zKjQ{-v&6K(5u5u#ZC4=wdmKwKh>~}j+0U`|{q}a{0i7^k{gc@ra3fyB>1Uky4}3rG zD(K6e0I6eZ_7t&(TdEL<*QF>@M~+4=*}-0H%g3WH{OEm$m$~hEA>z554B4UC>h$0C zcGIe0+g7;WG{VlZu}-|(Z^hO=*X#8ZOM{FIwubV#iF${^z#Qumsl;yUO%O%IfCZ@sU zw(t{aHc2QX$Qo)YNu@=+^D;eMq52zMNt>V@KV|uD0^{fttA^$IU1Fp2C+AFyX*W@! ziODP;&Jwk~UHyd?gptVr$gM&wXTrzA($d`go6HdvVQf5|!VZpM%M4zEC~IDHFxyfQ zbF=B<;fuXpPC+LlpwQ|2@{O2gIr@NK;=vV;S@PY$*WC_gpG=<5BlCE;G_>L=J>+d#R)EBGS?+vB(b4aw{2}@BC-6W2 z);}5;8>lS^Fp(b+cq z!YrWaKkKo}3)AJiRo>q1DK%1R!q1swM#V1!qt>`o2jyXQUm((UPGX%2AaUGFoh!e0 zI4kH7Zl*pjhrA%_mSbp59DJlBOvtp5K#e2jQL439h8lc%RVd zByV1uzgL%!1GJf@!C7QPGXcYm9QBLLJgT6PjeXmH&LmoVRxiqkk|N+IR_QU$vxj$+c#6pSl=>y0gUZ^zw`7IIy!g8VGqqcf$X7*ADb_) z%n6%1Fkex?lho2~lP3u+*Oz=4lo^A(3MPvoAoeursq&d*W3cv`*|9vm?Rs9v?5~(6 zXcyio4QLVSos)5W@R_yMOCnKoxA|Y#olvtZXFh)ee7DNiBRirW6)`5TeuNSrTI$a& z&^xi33r6aVAK1;Z#2Jrg=iTy_R8e03r{=Qr6``IxPLV|P`DfG9s2CaL4r-HYJ~IV`!yPhB3WJHMr+ zCcshO`&!Izmj0o(>4KfqYd(O1!Mjbj!IpL8m$Jwy??I2dI*yqbo^HJ2_lcU|RNHSM zlInHe{g-eb_e=}Sk!F(bAJ^w!F*#WzOZSZh3E4z6feM4tWE%0#&hGqNF-EPu13x-% zYYVL@l5>z}7FNBd_>Ex1RE0a8kq!Gkszw~jwBd-IcH;P4d*<%#%juH=lMV0Cf(CuSK+0q)hG6%sy^p<^)MNZD@T?2Lxs}Ian3L=?B5(cv9>`q$Y*aF&+J*te^K+gI!P?lu*^^?kBx(lFWZrd zo0F2sf}2ckI2Lk|a1OAvvM8Sb+(Xl>G%bk^@URh?zgZ{D5_8mx_ifvI~h}f?@Je`+P(Y3`S3PEY#E7%cJTUqdU*2A@2#|_(o@aDr{`I!a zIt8m&BO);?xetK{%0=>j?~>&6`FUZg%Ub#x%lmvx18^LHD3_DdGVSXtf2?dmc^H!- z?3-PoEe7x6ZUk&z&;9;gwI7o20e43@DkljSJY5Gk%~x`D5;st^3()2KTrs;Ar@vE9bID;vyL%POaYNSDEh$DSgCRnrjE;&z)RB^lRX|G7_a&3t-|U_ zeW_VBbHki^J+{YCogoc($QOmqwj#VVqeIQ-T0dSl`^gt79L&dq?wf|z;(PwK`u|6l ze;TLdDB+?7G77{mifD@>fMg7j8$SLBFqG1n27m55Mj}EMKj&duk_sH5lz> zKJT`Q%iZzv+H2BzNdyN47@Hd2-rNYZHK&t7)MFz-TpxH+y^85%vn& zp3`M&8828@k9Y?wUz^r=1`wRO>>O?3CbcwW__qTBKp_f?oyg5qY=fKn)J;%3c=wIl zS{sDU(gpT~oI(v&ULU$PnR`Yw=le;gpC5*XhrUQw$to7+54M=jtJboQryKg%b2MS| z98}HaK;gm2$uF4CptU+vakg8d$I(09)SUN=&u%GIR67O6fU{uO_cPFkpZuFx)5I6w zl5Ukexe&&;Yyk$6vPu)Ru)Dt|X^V5^)IPU)g>+Hs&8@)A(n<|h!ttGe4Yf{i8|LC% zKGoni?0gCT>m7-FGV{)+&vPUS`m$=$FG{5DJK-&50D;pgZ~05Y=ABIQeY9MINlNBw zIk#)>Y5CgE>CRCK!&w~E`yK;ZJAPKPDu8NKQqw0upkw(|AX_fLNNJEq^{)q!p?V@a z!JA_>j_V{Npq3I-Mk|@}2xj~BLKcRcXv=MmucM5telod07A{;fjiZEzC^*%m_&bKx~|ik!%0H*6L!LB3MZ>c^;U$AY7OYjH`5t^ zcU!rww!Gxk&@)@+7vm!yLp7~reL1r5`SJI5==&J&H?@Ds(?5s7wQ}am$B5kOh0-Gh z(QYX7U=PCsO)=WYcWT=@cFn1^PM0n?MEjRFg6K2PnRrgVVLiox(i%)IP1N=$8ZVo{ zN*6B12wTt1q8I`hVHJtSeAP8gg?!c`fXa*SBNsPEM)R%8f`fk-E~u;77`!ti!1`{z zwGU!;IF*egRVnl=)oV*-LW zXjMTf$$JQGN4(_i#Wzrk^HJ53(u{=OPO>R4Mu1S7Cjb#_ZL|VE8PS4Rfqt;z3Z!N? z)|X!+9%>@UJ8^07!gIHUGMmJ$usJ$5)+X_uFAQpiYLM7grDO~#1V1y*3Y7!LKi~N- zv{GShC}&&o1VFT8LHJm^VR4a_SzF3Vnv^~LYJh?T; zD|4>yzlFvpY+LWcqZQDSHTrOKpvk38c^mXHNQYQISa1!hEUg-J@WTlxCY^pKhVxDf z7(>bDe?R>9Q0pzDpcq~PUA&R5RAP2aAxMW!GrjEErC8eA7)0ynwxhvMX&NDF6r9DX z8tiMNBz~atf?tGv_pPELvV#)VwL8e}|J+5}l@s(|e3O+rmc}!hxZlozv(x!ip*5|Vp=jSJ)qdBZ z+73<^|K^8e2|sf?``(U$L|R&hwq)%j3#!Voq3RgYx#NcX7dDD7QzXdjl%EL|5vS|;aC)Jcb33RFPV;97<=n@eNT<9LRFc%ZICY*i9#q7iBebqFWzh%|FM$ois zvCO>ZrSqImMf+UsRo%2Rf>DQJx95ZE?X4@qYo_Y?7UZ_L<&jXM2D#O!P&E z^a93BDqZ`wRw}NjI+wfe0`2O)tNFe?qK@O5#NLArYKYZvSJ>=7R;d8XdA4tZyKIeg z{%XvujGd+PB`v+29JTm?WKEKx?Dax;RQ!I$ZrlaG3C2mI z>G^9+?@R1ofI2n%Aa=s~`raRB>Hqtj(N7G4Bp%(s`N=0zqS3)X3^l@*4X#)23> z9jIjshO*2Twhpx`vT z9In=DtVZ#C!)XmE1W|Fn{^d$jA)b|iwI@+1j{*%CIUsu1GE90zF+eDKtb10L)WS7F z(@f)Jo9xyX=X@X?GE6zVe6Q3ZwxRTO10isdJvrruS@vUEUgQbjFD3|PiBDd0wEe}t>h*+LnLU2+vRRO0IEwG)9$Ca)c3wUd z$KJ%Gg=F{zPgm#9rVxFg1#wbbM;WJYR~g~;LdMUcT9ColFMozznq&ri>c}iiHJ$HL zS8;lL5dXz^KVzxaw^68PMY>9HHFOA89pLxUW5-}Ubmvw+!!Q{hSFLN?xNW^=X)QEq z=eE0gFTpRD_jR6$N1-}ZLC!v|sI}du6^X#UfgVR9yTbw;6rI?g02OpG=Sd4}nu@38 zhT~_yRvx->WkVw9{|PsLefzVAFZmr8f+t~I#qT^gGOyEO2Pqn$Qoy3)bPDm9N0qbY zyfw^KB&WOon4IK032NFxJF^|9joJ8V!ygUwkZ(6-3S9y3E9qKkw{&&?`)p6Y|J_zr z-Y}I69vrUJS;Nz~&bZiMUKm`SoRSqoksD-Y-2KcnY1R!|=k}b+Xgq~K2p3-_fVJf| zyWCip)Fg|tI{IN<`NZO{n*G8K2yW)!fy4KI0*efE^KrAzRF==8{G3(Z z$$dg9wze&8yBoZ2T?*r*K`zCvBuK{l3h(?5lF9DeYOQQuynKyli<^IHdzq-06WQCd zY(qOrMSAS3Pvflozqoky*;$M(9ocnj?K7o5w=6ysh5^^@XWQ`Beox$g+fT)WuLH%F zaeG&SiAU93UP_1y9nv)v`w_IIzi{V&ZBTmfs<&*g9fR%Vq(I%Ol0TmE_shQfD0R{= z-TlJv%lTBl>2XzRM3&>(%oK$YtYn#KPe~2IQU{3&L+JBzCJ}ChO}w>eScN|03a`&@GINhUhHa! zW3snH)kIAp9}V5Q>Ba0Eb-#1^fqdJ(g=Not_l3-!q?t)0ew<)bi9r7VD6XH!?R;ve z?fgK#PDi^cuCiH+wsUooxRIE7i(E-f{=?Hv*NuxF)n9-Ymd~jK!~+JD^Kv+bVq5Sh zM_L1Ii&)m4m~Jagz}mW&asCYBZ__=8o6$i?)3Xh!*jYxp0K}U|e z*dq}^)>)2S70^080FNn5@n1S*UC-}C9ZWlKz z*01VH$%>mnTax#05o*NPW3I9cHZokgTPQW_z?O6TG~O>@%G2($Um}m0MY1dJJ>$DF z$Z+^b;X*+Tc`G|KgKP9pw~#zDSbPY{0lKa$9j zZ}L}nl@u!S$jj5=P&{>`i-(67+f=@S_RV*rWF!c~j4^>54a)&T_vx(=KISRpki^Il zLNTWhC_;hpH9D9_HYH_XK#2n@e0(;p`iMtKC8Y*6436@0pb1vkkB8gT>b=D7B&!DH zES22V0oeQvdg>ZPyB`NrwP;N?r}5R3DI&cbfXuA}qqNk7f3ocg`Z91&F|eYbOV_0i(jzeOQ>dUw&3sPLo5%|8+}t+76X%OPTt z#X9n{mOG^zR@v5F{$WW!!$EX_iy|v8E=&yGs3{@nkL5djjSjiAiG zefmBa)GzI+=0Yp>>wQwIWO-+1#Y1ZpWJnYqKohV4 z@A1{j$stw+LcswP^6}b@_v$3*B0NXcENIHqp|6Ke@zjwbiZ~$GVX>j1)u9syk{DbD zg=r}K#4$A_@8R&&9Wk(hX&F${Q(y{$H5!mP5a8h@01_+Lpg(4%lQMnl#-FCVnStFS zr8xX(brQ}!=Aiy!q-=Q*0AuqStQ`X546ItQj~epZVb`Xtj%S3kF>t|Zc)t)xJ9r&Q z$oM2erJ21-Y@(Zwzg&nN2&Otynyn7zo1d5-8mTcN{+UXkjH;9T!n6c@N!LjSggm2+ z(sN)dN2iC_H8M!3zLU&u48YQn`W$FpzswuM?AI1UWFBPo9u=Xl*fragkup4#tvtRp zKOY@L6RDo}eZV={q6`fdExbVBI_o1h+|4XY$_z-$$&W$dT~VprEUk+2=?t8S;UlnA zYVkad^aO9BMWf_OFKxS*I|K^{*1Yg}fR5xX#9#xk{ZPi5t4a<}QCAmue4GL-wkcLh z*Xl9THM8;n(y1q?hkuaOQ>yrv^;#=oz~iPy`dqi6BA+BT(6Rzg{{Rvq>-ebGTB*H4 ztnsTx%w&m_DFKf~1pfeshPKZ>e9g@jBLwl-9|7_e)D?&lXP5?6KsE|az)<}DdX)z; z=x!y7ygepTM-w7~N7xA4U7=|trKBXyB)6Vt3dpG!Rz4nT8f&D4nH3?BAJdFEY6^1W z;l8?4Iw0`J7;KPJ<^_2^9R~&}qd<914 zqg?z5dW?FJyNJsxN{7r>f!yu~AE@E7HQDP-4?8P0r4uN5`O)3 zK`Eh4H#pEnoJkhG(AQwD2Nkd%W{`nK{%040NlAc0y^gx0)WF(BawYIp&>^q6R;&t^sc2{SW)4%NS3!! zB$BPmE14X+Q=+E80pdojdnlT%30!8DuU`UlGJsV0f%w-|O})Tqw>8iK19IFcQMXa{ zb=K=K_9T9z1av%8dXxD{{{XXH2QfUr3qlO7xTRK~W}*%sgi} zIkZ4IC6tq1MARyto+n+YRwX7hssX(=r(e5NXp_k<73C;gB}X0=>PGzshPhfaCOV%M zm&%9CgK+HBtwlNw^?eBWh)9KLBUZZw8&LQi^;44)(W=waWdIGrRBn2Tomm~wLqwpt zBd3P+8lA{IFt4T=!Qoyiy%5lDDdVVyL)1|Gycf!#&?@aul{F_!3Q(2vfEd?_2dzFd z)mhU6o~NWds7Y!8QNH?xSqZqf<&sY|%h4NkflWvGskhy$GQTlKL@(v73F)~|5A=@> zLPWxY!x#_EXbRK<$K&xHI)<4QBk+)u#24dMEzkfyH2CUU(1Shhzcza43RaOHhW?uT zb(xYIW|lv+jfAzw$&pX)d|EbESdsq#BT9NykCkbqo3uqnG1jf>R$p0J*yQg8q+#L` zd1bFJ$^h%*PMW*5oF-QF?Y4zeT6%VpBnO?-^JHll(~}(%X?HeS9ItG8)#`foXsWXs zNpl)dY!i|ARCLhQJKQJQgV&P^TAO%`E#v(+uG>T^DnVn)w4wO}k!;lG5dc zwahY`X#)aONUTwbBED54cF?cn-3FrW*^XUW%V99JyLehsyu#YZB~paYHAlx(t<|+b zEk{kr%OOBGjvyLxZTfg>@QQZ{49AI$K(AVw*L~~o*CIDVimG;}C8r;Sckl;&OCk?~ z#T@_xebk!JQ&HT`gW_DPGY(2AM^&Kt?sX`H#1ihL2J)J6pz~M5eM2YaAeS2eN|QqL z@%U?r)(;#HP!)FLLK!xpJ{yho2$YY1F5rNFn4j_0naoeCA~)&&p*~W;`AF;2tu@G~ z{D_<*D?9pyOFA;5Mx+{0Flv)tn{?GX)WjD{O~zHFtcs32^bRUTY4Q9udqW}&@4V%L z-!YK-nHDI@M;l1TU|uBy_?;n2+tpAzR+c?Xw;K1>HnQZPyQFsS>Ak-qc@`d1L$L(w zdp10FziY45Mz*rmGSeH}*ON@}BackgroundImage

            - - - -

            This example presents the fastest way to load a background image - -into Processing. To load an image as the background, it must be - -the same width and height as the program.

            - - - -

            Original Processing.org Example: BackgroundImage
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -// @pjs preload must be used to preload the image so that it will be available when used in the sketch  
            -
            -/* @pjs preload="data/milan_rubbish.jpg"; */
            -
            -
            -
            -PImage bg;
            -
            -int a; 
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200,200);
            -
            -  frameRate(30);
            -
            -  // The background image must be the same size as the parameters
            -
            -  // into the size() method. In this program, the size of "milan_rubbish.jpg"
            -
            -  // is 200 x 200 pixels.
            -
            -  bg = loadImage("data/milan_rubbish.jpg");
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  background(bg);
            -
            -
            -
            -  a = (a + 1)%(width+32);
            -
            -  stroke(226, 204, 0);
            -
            -  line(0, a, width, a-26);
            -
            -  line(0, a-6, width, a-32);
            -
            -}
            - - - - - diff --git a/learning/basic/bezier/index.html b/learning/basic/bezier/index.html deleted file mode 100644 index ff20785..0000000 --- a/learning/basic/bezier/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: default ---- -

            Bezier

            - - - -

            The first two parameters for the bezier() function specify the - -first point in the curve and the last two parameters specify - -the last point. The middle parameters set the control points - -that define the shape of the curve.

            - - - -

            Original Processing.org Example: Bezier
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200); 
            -
            -background(0); 
            -
            -stroke(255);
            -
            -noFill();
            -
            -smooth(); 
            -
            -
            -
            -for(int i = 0; i < 100; i += 20) {
            -
            -  bezier(90-(i/2.0), 20+i, 210, 10, 220, 150, 120-(i/8.0), 150+(i/4.0));
            -
            -}
            - - - - - diff --git a/learning/basic/bezierellipse/index.html b/learning/basic/bezierellipse/index.html deleted file mode 100644 index 0fdeeaf..0000000 --- a/learning/basic/bezierellipse/index.html +++ /dev/null @@ -1,411 +0,0 @@ ---- -layout: default ---- -

            BezierEllipse

            - - - -

            By Ira Greenberg - - - -Generates an ellipse using bezier() and - -trig functions. Approximately every 1/2 - -second a new ellipse is plotted using - -random values for control/anchor points.

            - - - -

            Original Processing.org Example: BezierEllipse
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -// arrays to hold ellipse coordinate data
            -
            -float[] px, py, cx, cy, cx2, cy2;
            -
            -
            -
            -// global variable-points in ellipse
            -
            -int pts = 4;
            -
            -
            -
            -color controlPtCol = #222222;
            -
            -color anchorPtCol = #BBBBBB;
            -
            -
            -
            -void setup(){
            -
            -  size(200, 200);
            -
            -  smooth();
            -
            -  setEllipse(pts, 65, 65);
            -
            -  frameRate(0.5);
            -
            -}
            -
            -
            -
            -void draw(){
            -
            -  background(145);
            -
            -  drawEllipse();
            -
            -  setEllipse(int(random(3, 12)), random(-100, 150), random(-100, 150));
            -
            -}
            -
            -
            -
            -// draw ellipse with anchor/control points
            -
            -void drawEllipse(){
            -
            -  strokeWeight(1.125);
            -
            -  stroke(255);
            -
            -  noFill();
            -
            -  // create ellipse
            -
            -  for (int i=0; i<pts; i++){
            -
            -    if (i==pts-1) {
            -
            -      bezier(px[i], py[i], cx[i], cy[i], cx2[i], cy2[i],  px[0], py[0]);
            -
            -    }
            -
            -    else{
            -
            -      bezier(px[i], py[i], cx[i], cy[i], cx2[i], cy2[i],  px[i+1], py[i+1]);
            -
            -    }
            -
            -  }
            -
            -  strokeWeight(.75);
            -
            -  stroke(0);
            -
            -  rectMode(CENTER);
            -
            -
            -
            -  // control handles and tangent lines
            -
            -  for ( int i=0; i< pts; i++){
            -
            -    if (i==pts-1){  // last loop iteration-close path
            -
            -      line(px[0], py[0], cx2[i], cy2[i]);
            -
            -    }
            -
            -    if (i>0){
            -
            -      line(px[i], py[i], cx2[i-1], cy2[i-1]);
            -
            -    }
            -
            -    line(px[i], py[i], cx[i], cy[i]);
            -
            -  }
            -
            -
            -
            -  for ( int i=0; i< pts; i++){
            -
            -    fill(controlPtCol);
            -
            -    noStroke();
            -
            -    //control handles
            -
            -    ellipse(cx[i], cy[i], 4, 4);
            -
            -    ellipse(cx2[i], cy2[i], 4, 4);
            -
            -
            -
            -    fill(anchorPtCol);
            -
            -    stroke(0);
            -
            -    //anchor points
            -
            -    rect(px[i], py[i], 5, 5);
            -
            -  }
            -
            -}
            -
            -
            -
            -// fill up arrays with ellipse coordinate data
            -
            -void setEllipse(int points, float radius, float controlRadius){
            -
            -  pts = points;
            -
            -  px = new float[points];
            -
            -  py = new float[points];
            -
            -  cx = new float[points];
            -
            -  cy = new float[points];
            -
            -  cx2 = new float[points];
            -
            -  cy2 = new float[points];
            -
            -  float angle = 360.0/points;
            -
            -  float controlAngle1 = angle/3.0;
            -
            -  float controlAngle2 = controlAngle1*2.0;
            -
            -  for ( int i=0; i<points; i++){
            -
            -    px[i] = width/2+cos(radians(angle))*radius;
            -
            -    py[i] = height/2+sin(radians(angle))*radius;
            -
            -    cx[i] = width/2+cos(radians(angle+controlAngle1))* 
            -
            -      controlRadius/cos(radians(controlAngle1));
            -
            -    cy[i] = height/2+sin(radians(angle+controlAngle1))* 
            -
            -      controlRadius/cos(radians(controlAngle1));
            -
            -    cx2[i] = width/2+cos(radians(angle+controlAngle2))* 
            -
            -      controlRadius/cos(radians(controlAngle1));
            -
            -    cy2[i] = height/2+sin(radians(angle+controlAngle2))* 
            -
            -      controlRadius/cos(radians(controlAngle1));
            -
            -
            -
            -    //increment angle so trig functions keep chugging along
            -
            -    angle+=360.0/points;
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/brightness/index.html b/learning/basic/brightness/index.html deleted file mode 100644 index 78b1806..0000000 --- a/learning/basic/brightness/index.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -layout: default ---- -

            Brightness

            - - - -

            by Rusty Robison. - - - -Brightness is the relative lightness or darkness of a color. - -Move the cursor vertically over each bar to alter its brightness.

            - - - -

            Original Processing.org Example: Brightness
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int barWidth = 5;
            -
            -int[] brightness;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  colorMode(HSB, 360, height, height);  
            -
            -  brightness = new int[width/barWidth];
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  int j = 0;
            -
            -  for (int i = 0; i <= (width-barWidth); i += barWidth) {  
            -
            -    noStroke();
            -
            -    if ((mouseX > i) && (mouseX < i+barWidth)) {
            -
            -      brightness[j] = mouseY;
            -
            -    }
            -
            -    fill(i, height, brightness[j]);
            -
            -    rect(i, 0, barWidth, height);  
            -
            -    j++;
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/charactersstrings/data/rathausFrog.jpg b/learning/basic/charactersstrings/data/rathausFrog.jpg deleted file mode 100644 index 220deece8f4465afcf81d010e8db71f5fa606fa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8342 zcmaKwcQhPM)c1F-wXBj5z1QeT)F7g_jow+E)q8J|AV_q(tQNhOAbJncdoN)Ty{wWT zh#=nlp7)&R{qOzEnR{mD&Yk<6IdkTZx&L;*4tV%V38n-9;s5}Me+6)V1Rz!LwQ&vv z00FoF06_WQ&$cmL5&ofLgUrvXOf)e>v2r_-j{ZP? zUveDazoWpx`?vc4qy&=Uun3TWWVLav9)Vf^#Uk?s$!ovLO;g-21BgKXbdZ8b0nz|Q zex6dLa+-jtZ4D{s)HhXj(QK%|Es_EeO#wMY?_M2MZ5?{JjIdH(D|xy26R?4tlWbMN zEN@|>%7i*I7b9)$3nYOr0ZJ||ntI5tFu_a%q+4fC6;NK9(-B5?7i0lr$ZDXQ(IO-S@%QbY5|EU;+k#NZoL!ISM=tY6$O5_#O9jnWsR!1pjB^tBt)NGQ*~)bR&$@jVKY}SU8n=AUvKJ#X7b<{X_-iiKSVoUd;VK4kl!LJ&sa|!SY2DI&wm&|5&iP5t1U&DGF?FiF%G|tg!OWtYP>12ySDKA-QnB2atFl^K}+<) zwx4p32|h`Z6q=-596Z%m=o;(ZzS&s1BNsNmQNpf*2nI3@<@eOCk)h24r!T1|m^yRs zv@~Bv_VMW{i4a|Y)ZR+b!&;b(jxyBX5I<#q8M3&wJs%+@(tRJ4p=9zSz)uUmRv{Gu9CDUn4;sulP zHObDQa8)i zb(%NdTb=L8dM34;Jr)1-Z_V@OW4EskqxNoO)Y@dayXPDxn?W`>EobU(d{E`JGNBkc@7b9O+Klntc7r^^+Ypr?IfSigsaeRlJ- zcS#mk<`CYwTD|YmPy%<*=e{1&2YJ3BolE*Xc{It@zOtR;|b5C?$$lP z?{4J!)9;q=Gqu0#HkUqql5GySIg=oZC6&-`rF8N-h)r$GJ-wSGFr>D zGRU)ir{_vmlPeeO?!eca!Q)f4fhSB87+OrMfymN1+h4UKlzgtpvHea4mR&}k3ZHuY zm%7gp<`$Q{dg8XIcRCX5S`r4F{9CaXu9zu=x=9dvxq+@`*e%H*lfd89ah9C~8?=!` zMT9i{%`H!>H>a7^+}KcK+GboU)i#Os4w%N&c)nk&f-#DnU%2it1yuXs=LEmkDjKM? z;K?z6oE`}g0T^61hYp$BrDtBB!40>%f$zSxks1rHsRrUYTL{0>bfFr@ykCkgrQC~` zsmB`Mcw2QQh_tSd(_NEOZ{7nMB0Sxhu51=x`wvu$v|?X3pLDf7=j`n}oxcYZbh$6F zHpfjJq9@83TG|6iQg5&Xt2?i;G_hHH^0n7 zgU~IZ+%(k6M@qxrq8-w)RTW1o474K_UM5D$H-!$Up6g$|Y?F%e9K=3QRDeM`qdN`9 zEz)Ayr#UZnMbOXELL*!u3C$?Qnz1FgbR)f^5zop2V;FUCeeGGduzPI2*%A$)Z5|S?B z(FN$$O>%EZ#|L|xE3??BU@&Yf!4KiqYB957X|0 zIPA+#L9?nI!ne--z1mf8A6D@$psQ&*UJlwUTUcI>Num06%*H|=cOZb#dm5oR>GK;g zAtF>i3>Opz3#)%m`$SXC)h`=#gw1 zEs;o_(;wu=?76fTeWD}3RKl$D&N;yYsrl7vBx;@cgL?0=J_nf+3?k6hspLiKHzv(pjr)@(>w}*&_tjT} zGnssj_gt>P$E&?PeVDefS|yq&cU}hl-vCeh*yx|FRa*2{HAtiSDUcneN_6#d!hNy8 z<`H+o8V9m*N?R*aD|wRY?dR&QSV7k<7w=ZtKZ%$_%5xick69o-MVdMxB@L|?&6ZFG zk68(XiY<<)oz5(T#4KjEUAI!-*?gCx6)XKrZE4MI@vLWkzltOe{~qw>d3kr5?%0nb zAG4wcrzm>{31=6RYH%|Lh)<_~#geB`u4XWSSP&5|{4uDlbxxmjNJbnyL`2swuL
            J)iL>&HZ8&=JnN%@=Od$Kr{AJZ(t5c%< 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 diff --git a/learning/basic/charactersstrings/index.html b/learning/basic/charactersstrings/index.html deleted file mode 100644 index 16f051b..0000000 --- a/learning/basic/charactersstrings/index.html +++ /dev/null @@ -1,293 +0,0 @@ ---- -layout: default ---- -

            CharactersStrings

            - - - -

            Click on the image to give it focus and then type letters to - -shift the location of the image. - -Characters are typographic symbols such as A, d, and %. - -The character datatype, abbreviated as char, stores letters and - -symbols in the Unicode format, a coding system developed to support - -a variety of world languages. Characters are distinguished from other - -symbols by putting them between single quotes ('P'). - -A string is a sequence of characters. A string is noted by surrounding - -a group of letters with double quotes ("Processing"). - -Chars and strings are most often used with the keyboard methods, - -to display text to the screen, and to load images or files.

            - - - -

            Original Processing.org Example: CharactersStrings
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -PImage frog;
            -
            -PFont fontA;
            -
            -int lettersize = 90;
            -
            -int xoffset;
            -
            -char letter;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  fontA = loadFont("Arial"); 
            -
            -  textFont(fontA); 
            -
            -  textSize(lettersize);
            -
            -    
            -
            -  // The String datatype must be capitalized because it is a complex datatype.
            -
            -  // A String is actually a class with its own methods, some of which are
            -
            -  // featured below.
            -
            -  String name= "rathausFrog";
            -
            -  String extension = ".jpg";
            -
            -  int nameLength = name.length();
            -
            -  println("The length of " + name + " is " + nameLength + ".");
            -
            -  name = name.concat(extension);
            -
            -  nameLength = name.length();
            -
            -  println("The length of " + name + " is " + nameLength + ".");
            -
            -
            -
            -  // The parameter for the loadImage() method must be a string
            -
            -  // This line could also be written "frog = loadImage("rathausFrog.jpg");
            -
            -  frog = loadImage(name);
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  background(51); // Set background to dark gray
            -
            -  
            -
            -  image(frog, xoffset, 0);
            -
            -  
            -
            -  // Draw an X
            -
            -  line(0, 0, width, height);  
            -
            -  line(0, height, width, 0); 
            -
            -  
            -
            -  // Get the width of the letter
            -
            -  int letterWidth = int(fontA.width(letter) * lettersize);
            -
            -      
            -
            -  // Draw the letter to the center of the screen
            -
            -  text(letter, width/2-letterWidth/2, height/2);
            -
            -}
            -
            -
            -
            -void keyPressed()
            -
            -{
            -
            -  // The variable "key" always contains the value of the most recent key pressed.
            -
            -  // If the key is an upper or lowercase letter between 'A' and 'z'
            -
            -  // the image is shifted to the corresponding value of that key
            -
            -  if(key >= 'A' && key <= 'z') {
            -
            -    letter = char(key);
            -
            -    // Scale the values to numbers between 0 and 100
            -
            -    float scale = 100.0/57.0;
            -
            -    int temp = int((key - 'A') * scale);
            -
            -    // Set the offset for the image
            -
            -    xoffset = temp;
            -
            -    println(key);
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/clock/index.html b/learning/basic/clock/index.html deleted file mode 100644 index 04701bb..0000000 --- a/learning/basic/clock/index.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -layout: default ---- -

            Clock

            - - - -

            The current time can be read with the second(), minute(), - -and hour() functions. In this example, sin() and cos() values - -are used to set the position of the hands. - - *

            - - - -

            Original Processing.org Example: Clock
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -void setup() {
            -
            -  size(200, 200);
            -
            -  stroke(255);
            -
            -  smooth();
            -
            -}
            -
            -void draw() {
            -
            -  background(0);
            -
            -  fill(80);
            -
            -  noStroke();
            -
            -  // Angles for sin() and cos() start at 3 o'clock;
            -
            -  // subtract HALF_PI to make them start at the top
            -
            -  ellipse(100, 100, 160, 160);
            -
            -  float s = map(second(), 0, 60, 0, TWO_PI) - HALF_PI;
            -
            -  float m = map(minute(), 0, 60, 0, TWO_PI) - HALF_PI;
            -
            -  float h = map(hour() % 12, 0, 12, 0, TWO_PI) - HALF_PI;
            -
            -  stroke(255);
            -
            -  strokeWeight(1);
            -
            -  line(100, 100, cos(s) * 72 + 100, sin(s) * 72 + 100);
            -
            -  strokeWeight(2);
            -
            -  line(100, 100, cos(m) * 60 + 100, sin(m) * 60 + 100);
            -
            -  strokeWeight(4);
            -
            -  line(100, 100, cos(h) * 50 + 100, sin(h) * 50 + 100);
            -
            -}
            - - - - - diff --git a/learning/basic/colorwheel/index.html b/learning/basic/colorwheel/index.html deleted file mode 100644 index f24ae2c..0000000 --- a/learning/basic/colorwheel/index.html +++ /dev/null @@ -1,303 +0,0 @@ ---- -layout: default ---- -

            ColorWheel

            - - - -

            by Ira Greenberg. - - - -The primaries are red, yellow, and blue. The - -secondaries are green, purple, and orange. The - -tertiaries are yellow-orange, red-orange, red-purple, - -blue-purple, blue-green, and yellow-green. - - - -Create a shade or tint of the - -subtractive color wheel using - -SHADE or TINT parameters.

            - - - -

            Original Processing.org Example: ColorWheel
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int segs = 12;
            -
            -int steps = 6;
            -
            -float rotAdjust = radians(360.0/segs/2.0);
            -
            -float radius = 95.0;
            -
            -float segWidth = radius/steps;
            -
            -float interval = TWO_PI/segs;
            -
            -int SHADE = 0;
            -
            -int TINT = 1;
            -
            -
            -
            -void setup(){
            -
            -  size(200, 200);
            -
            -  background(127);
            -
            -  smooth();
            -
            -  ellipseMode(CENTER_RADIUS);
            -
            -  noStroke();
            -
            - // you can substitue TINT for SHADE argument
            -
            - createWheel(width/2, height/2, SHADE);
            -
            -}
            -
            -
            -
            -void createWheel(int x, int y, int valueShift){
            -
            -  if (valueShift == SHADE){
            -
            -    for (int j=0; j<steps; j++){
            -
            -      color[]cols = { 
            -
            -        color(255-(255/steps)*j, 255-(255/steps)*j, 0), 
            -
            -        color(255-(255/steps)*j, (255/1.5)-((255/1.5)/steps)*j, 0), 
            -
            -        color(255-(255/steps)*j, (255/2)-((255/2)/steps)*j, 0), 
            -
            -        color(255-(255/steps)*j, (255/2.5)-((255/2.5)/steps)*j, 0), 
            -
            -        color(255-(255/steps)*j, 0, 0), 
            -
            -        color(255-(255/steps)*j, 0, (255/2)-((255/2)/steps)*j), 
            -
            -        color(255-(255/steps)*j, 0, 255-(255/steps)*j), 
            -
            -        color((255/2)-((255/2)/steps)*j, 0, 255-(255/steps)*j), 
            -
            -        color(0, 0, 255-(255/steps)*j),
            -
            -        color(0, 255-(255/steps)*j, (255/2.5)-((255/2.5)/steps)*j), 
            -
            -        color(0, 255-(255/steps)*j, 0), 
            -
            -        color((255/2)-((255/2)/steps)*j, 255-(255/steps)*j, 0) };
            -
            -      for (int i=0; i< segs; i++){
            -
            -        fill(cols[i]);
            -
            -        arc(x, y, radius, radius, interval*i+rotAdjust, interval*(i+1)+rotAdjust);
            -
            -      }
            -
            -      radius -= segWidth;
            -
            -    }
            -
            -  } else  if (valueShift == TINT){
            -
            -    for (int j=0; j<steps; j++){
            -
            -      color[]cols = { 
            -
            -        color((255/steps)*j, (255/steps)*j, 0), 
            -
            -        color((255/steps)*j, ((255/1.5)/steps)*j, 0), 
            -
            -        color((255/steps)*j, ((255/2)/steps)*j, 0), 
            -
            -        color((255/steps)*j, ((255/2.5)/steps)*j, 0), 
            -
            -        color((255/steps)*j, 0, 0), 
            -
            -        color((255/steps)*j, 0, ((255/2)/steps)*j), 
            -
            -        color((255/steps)*j, 0, (255/steps)*j), 
            -
            -        color(((255/2)/steps)*j, 0, (255/steps)*j), 
            -
            -        color(0, 0, (255/steps)*j),
            -
            -        color(0, (255/steps)*j, ((255/2.5)/steps)*j), 
            -
            -        color(0, (255/steps)*j, 0), 
            -
            -        color(((255/2)/steps)*j, (255/steps)*j, 0) };
            -
            -      for (int i=0; i< segs; i++){
            -
            -        fill(cols[i]);
            -
            -        arc(x, y, radius, radius, interval*i+rotAdjust, interval*(i+1)+rotAdjust);
            -
            -      }
            -
            -      radius -= segWidth;
            -
            -    }
            -
            -  } 
            -
            -}
            - - - - - diff --git a/learning/basic/compositeobjects/index.html b/learning/basic/compositeobjects/index.html deleted file mode 100644 index e2f4649..0000000 --- a/learning/basic/compositeobjects/index.html +++ /dev/null @@ -1,421 +0,0 @@ ---- -layout: default ---- -

            CompositeObjects

            - - - -

            An object can include several other objects. Creating such composite objects - -is a good way to use the principles of modularity and build higher levels of - -abstraction within a program.

            - - - -

            Original Processing.org Example: CompositeObjects
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -EggRing er1, er2;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  smooth();
            -
            -  er1 = new EggRing(66, 132, 0.1, 66);
            -
            -  er2 = new EggRing(132, 180, 0.05, 132);
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  background(0);
            -
            -  er1.transmit();
            -
            -  er2.transmit();
            -
            -}
            -
            -
            -
            -class EggRing 
            -
            -{
            -
            -  Egg ovoid;
            -
            -  Ring circle = new Ring();
            -
            -  EggRing(int x, int y, float t, float sp) {
            -
            -    ovoid = new Egg(x, y, t, sp);
            -
            -    circle.start(x, y - sp/2);
            -
            -  }
            -
            -  void transmit() {
            -
            -    ovoid.wobble();
            -
            -    ovoid.display();
            -
            -    circle.grow();
            -
            -    circle.display();
            -
            -    if (circle.on == false) {
            -
            -      circle.on = true;
            -
            -    }
            -
            -  }
            -
            -}
            -
            -
            -
            -class Egg {
            -
            -  float x, y; // X-coordinate, y-coordinate
            -
            -  float tilt; // Left and right angle offset
            -
            -  float angle; // Used to define the tilt
            -
            -  float scalar; // Height of the egg
            -
            -  // Constructor
            -
            -  Egg(int xpos, int ypos, float t, float s) {
            -
            -    x = xpos;
            -
            -    y = ypos;
            -
            -    tilt = t;
            -
            -    scalar = s / 100.0;
            -
            -  }
            -
            -  void wobble() {
            -
            -    tilt = cos(angle) / 8;
            -
            -    angle += 0.1;
            -
            -  }
            -
            -  void display() {
            -
            -    noStroke();
            -
            -    fill(255);
            -
            -    pushMatrix();
            -
            -    translate(x, y);
            -
            -    rotate(tilt);
            -
            -    scale(scalar);
            -
            -    beginShape();
            -
            -    vertex(0, -100);
            -
            -    bezierVertex(25, -100, 40, -65, 40, -40);
            -
            -    bezierVertex(40, -15, 25, 0, 0, 0);
            -
            -    bezierVertex(-25, 0, -40, -15, -40, -40);
            -
            -    bezierVertex(-40, -65, -25, -100, 0, -100);
            -
            -    endShape();
            -
            -    popMatrix();
            -
            -  }
            -
            -}
            -
            -
            -
            -class Ring {
            -
            -  float x, y; // X-coordinate, y-coordinate
            -
            -  float diameter; // Diameter of the ring
            -
            -  boolean on = false; // Turns the display on and off
            -
            -  void start(float xpos, float ypos) {
            -
            -    x = xpos;
            -
            -    y = ypos;
            -
            -    on = true;
            -
            -    diameter = 1;
            -
            -  }
            -
            -  void grow() {
            -
            -    if (on == true) {
            -
            -      diameter += 0.5;
            -
            -      if (diameter > width*2) {
            -
            -        diameter = 0.0;
            -
            -      }
            -
            -    }
            -
            -  }
            -
            -  void display() {
            -
            -    if (on == true) {
            -
            -      noFill();
            -
            -      strokeWeight(4);
            -
            -      stroke(155, 153);
            -
            -      ellipse(x, y, diameter, diameter);
            -
            -    }
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/conditionals1/index.html b/learning/basic/conditionals1/index.html deleted file mode 100644 index e3ce40f..0000000 --- a/learning/basic/conditionals1/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: default ---- -

            Conditionals1

            - - - -

            Conditions are like questions. - -They allow a program to decide to take one action if - -the answer to a question is true or to do another action - -if the answer to the question is false. - -The questions asked within a program are always logical - -or relational statements. For example, if the variable 'i' is - -equal to zero then draw a line.

            - - - -

            Original Processing.org Example: Conditionals1
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -background(0);
            -
            -
            -
            -for(int i=10; i<width; i+=10) {
            -
            -  // If 'i' divides by 20 with no remainder draw the first line
            -
            -  // else draw the second line
            -
            -  if(i%20 == 0) {
            -
            -    stroke(153);
            -
            -    line(i, 40, i, height/2);
            -
            -  } else {
            -
            -    stroke(102);
            -
            -    line(i, 20, i, 180); 
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/conditionals2/index.html b/learning/basic/conditionals2/index.html deleted file mode 100644 index f805825..0000000 --- a/learning/basic/conditionals2/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: default ---- -

            Conditionals2

            - - - -

            We extend the language of conditionals by adding the - -keyword "else". This allows conditionals to ask - -two or more sequential questions, each with a different - -action.

            - - - -

            Original Processing.org Example: Conditionals2
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -background(0);
            -
            -
            -
            -for(int i=2; i<width-2; i+=2) {
            -
            -  // If 'i' divides by 20 with no remainder 
            -
            -  // draw the first line else draw the second line
            -
            -  if(i%20 == 0) {
            -
            -    stroke(255);
            -
            -    line(i, 40, i, height/2);
            -
            -  } else if (i%10 == 0) {
            -
            -    stroke(153);
            -
            -    line(i, 20, i, 180); 
            -
            -  } else {
            -
            -    stroke(102);
            -
            -    line(i, height/2, i, height-40);
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/constrain/index.html b/learning/basic/constrain/index.html deleted file mode 100644 index b810e49..0000000 --- a/learning/basic/constrain/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -layout: default ---- -

            Constrain

            - - - -

            Move the mouse across the screen to move the circle. - -The program constrains the circle to its box.

            - - - -

            Original Processing.org Example: Constrain
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float mx;
            -
            -float my;
            -
            -float easing = 0.05;
            -
            -float esize = 25.0;
            -
            -int box = 30;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  noStroke(); 
            -
            -  smooth();
            -
            -  ellipseMode(CENTER_RADIUS);  
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{ 
            -
            -  background(51);
            -
            -  
            -
            -  if(abs(mouseX - mx) > 0.1) {
            -
            -    mx = mx + (mouseX - mx) * easing;
            -
            -  }
            -
            -  if(abs(mouseY - my) > 0.1) {
            -
            -    my = my + (mouseY- my) * easing;
            -
            -  }
            -
            -  
            -
            -  float distance = esize * 2;
            -
            -  mx = constrain(mx, box+distance, width-box-distance);
            -
            -  my = constrain(my, box+distance, height-box-distance);
            -
            -  fill(76);
            -
            -  rect(box+esize, box+esize, box*3, box*3);
            -
            -  fill(255);  
            -
            -  ellipse(mx, my, esize, esize);
            -
            -}
            - - - - - diff --git a/learning/basic/coordinates/index.html b/learning/basic/coordinates/index.html deleted file mode 100644 index 22052bc..0000000 --- a/learning/basic/coordinates/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -layout: default ---- -

            Coordinates

            - - - -

            All shapes drawn to the screen have a position that is specified as a coordinate. - -All coordinates are measured as the distance from the origin in units of pixels. - -The origin [0, 0] is the coordinate is in the upper left of the window - -and the coordinate in the lower right is [width-1, height-1].

            - - - -

            Original Processing.org Example: Coordinates
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -// Sets the screen to be 200, 200, so the width of the window is 200 pixels
            -
            -// and the height of the window is 200 pixels
            -
            -size(200, 200);
            -
            -background(0);
            -
            -noFill();
            -
            -stroke(255);
            -
            -
            -
            -// The two parameters of the point() method each specify coordinates.
            -
            -// This call to point() draws at the position [100, 100]
            -
            -point(width/2, height/2);
            -
            -
            -
            -// Draws to the position [100, 50]
            -
            -point(width/2, height/4); 
            -
            -
            -
            -// It is also possible to specify a point with any parameter, 
            -
            -// but only coordinates on the screen are visible
            -
            -point(60, 30);
            -
            -point(60, 134);
            -
            -point(160, 50);
            -
            -point(280, -800);
            -
            -point(201, 100);
            -
            -
            -
            -// Coordinates are used for drawing all shapes, not just points.
            -
            -// Parameters for different methods are used for different purposes.
            -
            -// For example, the first two parameters to line() specify the coordinates of the 
            -
            -// first point and the second two parameters specify the second point
            -
            -stroke(204);
            -
            -line(0, 73, width, 73);
            -
            -
            -
            -// The first two parameters to rect() are coordinates
            -
            -// and the second two are the width and height
            -
            -rect(110, 55, 40, 36);
            - - - - - diff --git a/learning/basic/creategraphics/data/mask.jpg b/learning/basic/creategraphics/data/mask.jpg deleted file mode 100644 index bbd1382544032ce6b99d0f2e8001fffe6593fb5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2825 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 ZtNNJAWQ5P*>q*ITsqO}CngKf#{{@9F#LoZ# diff --git a/learning/basic/creategraphics/index.html b/learning/basic/creategraphics/index.html deleted file mode 100644 index e6a104a..0000000 --- a/learning/basic/creategraphics/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -layout: default ---- -

            CreateGraphics

            - - - -

            The createGraphics() function creates an object from the PGraphics class - -(PGraphics is the main graphics and rendering context for Processing). - -The beginDraw() method is necessary to prepare for drawing and endDraw() is - -necessary to finish. Use this class if you need to draw into an off-screen - -graphics buffer or to maintain two contexts with different properties.

            - - - -

            Original Processing.org Example: CreateGraphics
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -PGraphics pg;
            -
            -
            -
            -void setup() {
            -
            -  size(200, 200);
            -
            -  pg = createGraphics(80, 80, P3D);
            -
            -}
            -
            -
            -
            -void draw() {
            -
            -  fill(0, 12);
            -
            -  rect(0, 0, width, height);
            -
            -  fill(255);
            -
            -  noStroke();
            -
            -  ellipse(mouseX, mouseY, 60, 60);
            -
            -  
            -
            -  pg.beginDraw();
            -
            -  pg.background(102);
            -
            -  pg.noFill();
            -
            -  pg.stroke(255);
            -
            -  pg.ellipse(mouseX-60, mouseY-60, 60, 60);
            -
            -  pg.endDraw();
            -
            -  
            -
            -  image(pg, 60, 60); 
            -
            -}
            - - - - - diff --git a/learning/basic/createimage/data/mask.jpg b/learning/basic/createimage/data/mask.jpg deleted file mode 100644 index bbd1382544032ce6b99d0f2e8001fffe6593fb5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2825 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 ZtNNJAWQ5P*>q*ITsqO}CngKf#{{@9F#LoZ# diff --git a/learning/basic/createimage/index.html b/learning/basic/createimage/index.html deleted file mode 100644 index 23567ce..0000000 --- a/learning/basic/createimage/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -layout: default ---- -

            CreateImage

            - - - -

            The createImage() function provides a fresh buffer of pixels to play with. - -This example creates an image gradient.

            - - - -

            Original Processing.org Example: CreateImage
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -PImage img;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);  
            -
            -  img = createImage(120, 120, RGB);
            -
            -  for(int i=0; i < img.pixels.length; i++) {
            -
            -    img.pixels[i] = color(0, 90, 102, i%img.width * 2); 
            -
            -  }
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  background(204);
            -
            -  image(img, 33, 33);
            -
            -  image(img, mouseX-60, mouseY-60);
            -
            -}
            - - - - - diff --git a/learning/basic/creating/index.html b/learning/basic/creating/index.html deleted file mode 100644 index 14c2cd9..0000000 --- a/learning/basic/creating/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: default ---- -

            Creating

            - - - -

            Creating variables for colors that may be referred to - -in the program by their name, rather than a number.

            - - - -

            Original Processing.org Example: Creating
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -noStroke();
            -
            -
            -
            -color inside = color(204, 102, 0);
            -
            -color middle = color(204, 153, 0);
            -
            -color outside = color(153, 51, 0);
            -
            -
            -
            -// These statements are equivalent to the statements above.
            -
            -// Programmers may use the format they prefer.
            -
            -//color inside = #CC6600;
            -
            -//color middle = #CC9900;
            -
            -//color outside = #993300;
            -
            -
            -
            -fill(outside);
            -
            -rect(0, 0, 200, 200);
            -
            -fill(middle);
            -
            -rect(40, 60, 120, 120);
            -
            -fill(inside);
            -
            -rect(60, 90, 80, 80);
            - - - - - diff --git a/learning/basic/datatypeconversion/index.html b/learning/basic/datatypeconversion/index.html deleted file mode 100644 index 8ec5b22..0000000 --- a/learning/basic/datatypeconversion/index.html +++ /dev/null @@ -1,111 +0,0 @@ ---- -layout: default ---- -

            DatatypeConversion

            - - - -

            It is sometimes beneficial to convert a value from one type of - -data to another. Each of the conversion functions converts its parameter - -to an equivalent representation within its datatype. - -The conversion functions include int(), float(), char(), byte(), and others.

            - - - -

            Original Processing.org Example: DatatypeConversion
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -background(51);
            -
            -noStroke();
            -
            -
            -
            -char c;    // Chars are used for storing typographic symbols
            -
            -float f;   // Floats are decimal numbers
            -
            -int i;     // Ints are values between 2,147,483,647 and -2147483648
            -
            -byte b;    // Bytes are values between -128 and 128
            -
            -
            -
            -c = 'A';
            -
            -f = float(c);     // Sets f = 65.0
            -
            -i = int(f * 1.4); // Sets i to 91
            -
            -b = byte(c / 2);  // Sets b to 32
            -
            -
            -
            -rect(f, 0, 40, 66);
            -
            -fill(204);
            -
            -rect(i, 67, 40, 66);
            -
            -fill(255);
            -
            -rect(b, 134, 40, 66);
            - - - - - diff --git a/learning/basic/displaying/data/arch.jpg b/learning/basic/displaying/data/arch.jpg deleted file mode 100644 index a61da9b7c8761e72caac21d08aed92380525ed0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23957 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 Pv!@KbwzVC)vY-Fivm diff --git a/learning/basic/displaying/index.html b/learning/basic/displaying/index.html deleted file mode 100644 index 37c4159..0000000 --- a/learning/basic/displaying/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: default ---- -

            Displaying

            - - - -

            Images can be displayed to the screen at their actual size - -or any other size.

            - -

            NOTE: DOM security will not allow you to load images file:/// URIs. This security can be overridden in Firefox in about:config, by changing security.fileuri.strict_origin_policy to false.

            - - - -

            Original Processing.org Example: Displaying
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -
            -
            -// @pjs preload must be used to preload the image so that it will be available when used in the sketch
            -
            -/* @pjs preload="data/arch.jpg"; */
            -
            -PImage a;  // Declare variable "a" of type PImage
            -
            -void setup() {
            -
            - noLoop(); // rather than drawing as an animation, only call draw() once
            -
            - size(200, 200);
            -
            - a = loadImage("data/arch.jpg"); // Load the images for use in the sketch 
            -
            -} 
            -
            -void draw() {
            -
            - image(a, 0, 0); // // Display the image at point (0,0) with natural width and height 
            -
            - image(a, width/2, 0, a.width/2, a.height/2); // Display the image again, this time starting at (width/2, 0), and scaled to 50% in both x and y direction 
            -
            -}
            - - - - - diff --git a/learning/basic/distance1d/index.html b/learning/basic/distance1d/index.html deleted file mode 100644 index cad7bc1..0000000 --- a/learning/basic/distance1d/index.html +++ /dev/null @@ -1,201 +0,0 @@ ---- -layout: default ---- -

            Distance1D

            - - - -

            Move the mouse left and right to control the speed and direction of the moving shapes.

            - - - -

            Original Processing.org Example: Distance1D
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int thin = 8;
            -
            -int thick = 36;
            -
            -float xpos1 = 134.0;
            -
            -float xpos2 = 44.0;
            -
            -float xpos3 = 58.0;
            -
            -float xpos4 = 120.0;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  noStroke();
            -
            -  frameRate(60);
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  background(0);
            -
            -  
            -
            -  float mx = mouseX * 0.4 - width/5.0;
            -
            -  
            -
            -  fill(102);
            -
            -  rect(xpos2, 0, thick, height/2);
            -
            -  fill(204);
            -
            -  rect(xpos1, 0, thin, height/2);
            -
            -  fill(102);
            -
            -  rect(xpos4, height/2, thick, height/2);
            -
            -  fill(204);
            -
            -  rect(xpos3, height/2, thin, height/2);
            -
            -	
            -
            -  xpos1 += mx/16;
            -
            -  xpos2 += mx/64;
            -
            -  xpos3 -= mx/16;
            -
            -  xpos4 -= mx/64;
            -
            -  
            -
            -  if(xpos1 < -thin)  { xpos1 =  width; }
            -
            -  if(xpos1 >  width) { xpos1 = -thin; }
            -
            -  if(xpos2 < -thick) { xpos2 =  width; }
            -
            -  if(xpos2 >  width) { xpos2 = -thick; }
            -
            -  if(xpos3 < -thin)  { xpos3 =  width; }
            -
            -  if(xpos3 >  width) { xpos3 = -thin; }
            -
            -  if(xpos4 < -thick) { xpos4 =  width; }
            -
            -  if(xpos4 >  width) { xpos4 = -thick; }
            -
            -}
            - - - - - diff --git a/learning/basic/distance2d/index.html b/learning/basic/distance2d/index.html deleted file mode 100644 index c27f4e6..0000000 --- a/learning/basic/distance2d/index.html +++ /dev/null @@ -1,119 +0,0 @@ ---- -layout: default ---- -

            Distance2D

            - - - -

            Move the mouse across the image to obscure and reveal the matrix. - -Measures the distance from the mouse to each square and sets the - -size proportionally.

            - - - -

            Original Processing.org Example: Distance2D
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float max_distance;
            -
            -
            -
            -void setup() {
            -
            -  size(200, 200); 
            -
            -  smooth();
            -
            -  noStroke();
            -
            -  max_distance = dist(0, 0, width, height);
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  background(51);
            -
            -
            -
            -  for(int i = 0; i <= width; i += 20) {
            -
            -    for(int j = 0; j <= width; j += 20) {
            -
            -      float size = dist(mouseX, mouseY, i, j);
            -
            -      size = size/max_distance * 66;
            -
            -      ellipse(i, j, size, size);
            -
            -    }
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/doublerandom/index.html b/learning/basic/doublerandom/index.html deleted file mode 100644 index 4cd34fc..0000000 --- a/learning/basic/doublerandom/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: default ---- -

            DoubleRandom

            - - - -

            by Ira Greenberg. - - - -Using 2 random() calls the and point() function - -to create an irregular sawtooth line.

            - - - -

            Original Processing.org Example: DoubleRandom
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -background(0);
            -
            -int totalPts = 300;
            -
            -float steps = totalPts+1;
            -
            -stroke(255);
            -
            -float rand = 0;
            -
            -
            -
            -for  (int i=1; i< steps; i++){
            -
            -  point( (width/steps) * i, (height/2) + random(-rand, rand) );
            -
            -  rand += random(-5, 5);
            -
            -}
            - - - - - diff --git a/learning/basic/easing/index.html b/learning/basic/easing/index.html deleted file mode 100644 index fbd3096..0000000 --- a/learning/basic/easing/index.html +++ /dev/null @@ -1,159 +0,0 @@ ---- -layout: default ---- -

            Easing

            - - - -

            Move the mouse across the screen and the symbol will follow. - -Between drawing each frame of the animation, the program - -calculates the difference between the position of the - -symbol and the cursor. If the distance is larger than - -1 pixel, the symbol moves half of the distance from its - -current position toward the cursor.

            - - - -

            Original Processing.org Example: Easing
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float x;
            -
            -float y;
            -
            -float targetX, targetY;
            -
            -float easing = 0.05;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200); 
            -
            -  smooth();
            -
            -  noStroke();  
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{ 
            -
            -  background( 51 );
            -
            -  
            -
            -  targetX = mouseX;
            -
            -  float dx = mouseX - x;
            -
            -  if(abs(dx) > 1) {
            -
            -    x += dx * easing;
            -
            -  }
            -
            -  
            -
            -  targetY = mouseY;
            -
            -  float dy = mouseY - y;
            -
            -  if(abs(dy) > 1) {
            -
            -    y += dy * easing;
            -
            -  }
            -
            -  
            -
            -  ellipse(x, y, 33, 33);
            -
            -}
            - - - - - diff --git a/learning/basic/embeddediteration/index.html b/learning/basic/embeddediteration/index.html deleted file mode 100644 index f870898..0000000 --- a/learning/basic/embeddediteration/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: default ---- -

            EmbeddedIteration

            - - - -

            Embedding "for" structures allows repetition in two dimensions.

            - - - -

            Original Processing.org Example: EmbeddedIteration
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float box_size = 11; 
            -
            -float box_space = 12; 
            -
            -int margin = 7; 
            -
            - 
            -
            -size(200, 200); 
            -
            -background(0); 
            -
            -noStroke(); 
            -
            - 
            -
            -// Draw gray boxes 
            -
            - 
            -
            -for(int i = margin; i < width-margin; i += box_space) { 
            -
            -  for(int j = margin; j < height-margin; j += box_space) { 
            -
            -    fill(255 - box_size*10); 
            -
            -    rect(j, i, box_size, box_size); 
            -
            -  } 
            -
            -  box_size = box_size - 0.6; 
            -
            -}
            - - - - - diff --git a/learning/basic/embeddedlinks/index.html b/learning/basic/embeddedlinks/index.html deleted file mode 100644 index c90f37c..0000000 --- a/learning/basic/embeddedlinks/index.html +++ /dev/null @@ -1,283 +0,0 @@ ---- -layout: default ---- -

            EmbeddedLinks

            - - - -

            Click on the left button to open a different URL in the same window (Only - -works online). Click on the right button to open a URL in a new browser window. - - - -Created 21 June 2003.

            - - - -

            Original Processing.org Example: EmbeddedLinks
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -boolean overLeftButton = false;
            -
            -boolean overRightButton = false;
            -
            -
            -
            -void setup()
            -
            -{
            -
            -  size(200, 200);
            -
            -}
            -
            -
            -
            -void draw()
            -
            -{
            -
            -  background(204);
            -
            -  
            -
            -  // Left buttom
            -
            -  if(overLeftButton == true) {
            -
            -    fill(255);
            -
            -  } else {
            -
            -    noFill();
            -
            -  }
            -
            -  rect(20, 60, 75, 75);
            -
            -  rect(50, 90, 15, 15);
            -
            -  
            -
            -  // Right button
            -
            -  if(overRightButton == true) {
            -
            -    fill(255);
            -
            -  } else {
            -
            -    noFill();
            -
            -  }
            -
            -  rect(105, 60, 75, 75);
            -
            -  line(135, 105, 155, 85);
            -
            -  line(140, 85, 155, 85);
            -
            -  line(155, 85, 155, 100);
            -
            -}
            -
            -
            -
            -void mousePressed() 
            -
            -{
            -
            -  if(overLeftButton) { 
            -
            -    link("http://www.processing.org");
            -
            -  } else if (overRightButton) {
            -
            -    link("http://www.processing.org", "_new");
            -
            -  }
            -
            -}
            -
            -
            -
            -void mouseMoved() { 
            -
            -  checkButtons(); 
            -
            -}
            -
            -  
            -
            -void mouseDragged() {
            -
            -  checkButtons(); 
            -
            -}
            -
            -
            -
            -void checkButtons() {
            -
            -  if(mouseX > 20 && mouseX < 95 &&
            -
            -     mouseY > 60 && mouseY <135) {
            -
            -    overLeftButton = true;   
            -
            -  }  else if (mouseX > 105 && mouseX < 180 &&
            -
            -     mouseY > 60 && mouseY <135) {
            -
            -    overRightButton = true; 
            -
            -  } else {
            -
            -    overLeftButton = overRightButton = false;
            -
            -  }
            -
            -
            -
            -}
            - - - - - diff --git a/learning/basic/functions/index.html b/learning/basic/functions/index.html deleted file mode 100644 index 51854ce..0000000 --- a/learning/basic/functions/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -layout: default ---- -

            Functions

            - - - -

            The draw_target() function makes it easy to draw many distinct targets. - -Each call to draw_target() specifies the position, size, and number of - -rings for each target.

            - - - -

            Original Processing.org Example: Functions
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  background(51);
            -
            -  noStroke();
            -
            -  smooth();
            -
            -  noLoop();
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  draw_target(68, 34, 200, 10);
            -
            -  draw_target(152, 16, 100, 3);
            -
            -  draw_target(100, 144, 80, 5);
            -
            -}
            -
            -
            -
            -void draw_target(int xloc, int yloc, int size, int num) 
            -
            -{
            -
            -  float grayvalues = 255/num;
            -
            -  float steps = size/num;
            -
            -  for(int i=0; i<num; i++) {
            -
            -    fill(i*grayvalues);
            -
            -    ellipse(xloc, yloc, size-i*steps, size-i*steps);
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/graphing2dequation/index.html b/learning/basic/graphing2dequation/index.html deleted file mode 100644 index 4855237..0000000 --- a/learning/basic/graphing2dequation/index.html +++ /dev/null @@ -1,157 +0,0 @@ ---- -layout: default ---- -

            Graphing2DEquation

            - - - -

            by Daniel Shiffman. - - - -Graphics the following equation: - -sin(n*cos(r) + 5*theta) - -where n is a function of horizontal mouse location.

            - - - -

            Original Processing.org Example: Graphing2DEquation
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -void setup() {
            -
            -  size(200,200);
            -
            -  frameRate(30);
            -
            -}
            -
            -
            -
            -void draw() {
            -
            -  loadPixels();
            -
            -  float n = (mouseX * 10.0) / width;
            -
            -  float w = 16.0;         // 2D space width
            -
            -  float h = 16.0;         // 2D space height
            -
            -  float dx = w / width;    // Increment x this amount per pixel
            -
            -  float dy = h / height;   // Increment y this amount per pixel
            -
            -  float x = -w/2;          // Start x at -1 * width / 2
            -
            -  for (int i = 0; i < width; i++) {
            -
            -    float y = -h/2;        // Start y at -1 * height / 2
            -
            -    for (int j = 0; j < height; j++) {
            -
            -      float r = sqrt((x*x) + (y*y));    // Convert cartesian to polar
            -
            -      float theta = atan2(y,x);         // Convert cartesian to polar
            -
            -      // Compute 2D polar coordinate function
            -
            -      float val = sin(n*cos(r) + 5 * theta);           // Results in a value between -1 and 1
            -
            -      //float val = cos(r);                            // Another simple function
            -
            -      //float val = sin(theta);                        // Another simple function
            -
            -      // Map resulting vale to grayscale value
            -
            -      pixels[i+j*width] = color((val + 1.0) * 255.0/2.0);     // Scale to between 0 and 255
            -
            -      y += dy;                // Increment y
            -
            -    }
            -
            -    x += dx;                  // Increment x
            -
            -  }
            -
            -  updatePixels();
            -
            -}
            - - - - - diff --git a/learning/basic/hue/index.html b/learning/basic/hue/index.html deleted file mode 100644 index fbd7f36..0000000 --- a/learning/basic/hue/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: default ---- -

            Hue

            - - - -

            Hue is the color reflected from or transmitted through an object - -and is typically referred to as the name of the color (red, blue, yellow, etc.) - -Move the cursor vertically over each bar to alter its hue.

            - - - -

            Original Processing.org Example: Hue
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int barWidth = 5;
            -
            -int[] hue;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(400, 400);
            -
            -  colorMode(HSB, 360, height, height);  
            -
            -  hue = new int[width/barWidth];
            -
            -  noStroke();
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  int j = 0;
            -
            -  for (int i=0; i<=(width-barWidth); i+=barWidth) {  
            -
            -    if ((mouseX > i) && (mouseX < i+barWidth)) {
            -
            -      hue[j] = mouseY;
            -
            -    }
            -
            -    fill(hue[j], height/1.2, height/1.2);
            -
            -    rect(i, 0, barWidth, height);  
            -
            -    j++;
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/incrementdecrement/index.html b/learning/basic/incrementdecrement/index.html deleted file mode 100644 index cd5fe46..0000000 --- a/learning/basic/incrementdecrement/index.html +++ /dev/null @@ -1,187 +0,0 @@ ---- -layout: default ---- -

            IncrementDecrement

            - - - -

            Writing "a++" is equivalent to "a = a + 1". - -Writing "a--" is equivalent to "a = a - 1".

            - - - -

            Original Processing.org Example: IncrementDecrement
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int a;
            -
            -int b;
            -
            -boolean direction;
            -
            -
            -
            -void setup()
            -
            -{
            -
            -  size(200, 200);
            -
            -  colorMode(RGB, width);
            -
            -  a = 0;
            -
            -  b = width;
            -
            -  direction = true;
            -
            -  frameRate(30);
            -
            -}
            -
            -
            -
            -void draw()
            -
            -{
            -
            -  a++;
            -
            -  if(a > width) {
            -
            -    a = 0;
            -
            -    direction = !direction;
            -
            -  }
            -
            -  if(direction == true){
            -
            -    stroke(a);
            -
            -  } else {
            -
            -    stroke(width-a);
            -
            -  }
            -
            -  line(a, 0, a, height/2);
            -
            -
            -
            -  b--;
            -
            -  if(b < 0) {
            -
            -    b = width;
            -
            -  }
            -
            -  if(direction == true) {
            -
            -    stroke(width-b);
            -
            -  } else {
            -
            -    stroke(b);
            -
            -  }
            -
            -  line(b, height/2+1, b, height);
            -
            -}
            - - - - - diff --git a/learning/basic/index.html b/learning/basic/index.html deleted file mode 100644 index 3debedf..0000000 --- a/learning/basic/index.html +++ /dev/null @@ -1,154 +0,0 @@ ---- -layout: default ---- -

            Basic Demos

            - -

            Basic demonstrations of how Processing works, from the Processing.org -web site. All of the following demos were written by Casey Reas -and Ben Fry unless otherwise stated.

            - -

            You can also view Basic Demos on processing.org

            - -

            Structure

            - - -

            Form

            - - -

            Data

            - - -

            Control

            - - -

            Math

            - - -

            Typography

            - - -

            Image

            - - -

            Color

            - - -

            Transform

            - - -

            Input

            - - -

            Arrays

            - - -

            Objects

            - - -

            Web

            - diff --git a/learning/basic/inheritance/index.html b/learning/basic/inheritance/index.html deleted file mode 100644 index 434502b..0000000 --- a/learning/basic/inheritance/index.html +++ /dev/null @@ -1,311 +0,0 @@ ---- -layout: default ---- -

            Inheritance

            - - - -

            A class can be defined using another class as a foundation. In object-oriented - -programming terminology, one class can inherit fi elds and methods from another. - -An object that inherits from another is called a subclass, and the object it - -inherits from is called a superclass. A subclass extends the superclass.

            - - - -

            Original Processing.org Example: Inheritance
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -SpinSpots spots;
            -
            -SpinArm arm;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  smooth();
            -
            -  arm = new SpinArm(width/2, height/2, 0.01);
            -
            -  spots = new SpinSpots(width/2, height/2, -0.02, 33.0);
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  background(204);
            -
            -  arm.update();
            -
            -  arm.display();
            -
            -  spots.update();
            -
            -  spots.display();
            -
            -}
            -
            -
            -
            -class Spin 
            -
            -{
            -
            -  float x, y, speed;
            -
            -  float angle = 0.0;
            -
            -  Spin(float xpos, float ypos, float s) {
            -
            -    x = xpos;
            -
            -    y = ypos;
            -
            -    speed = s;
            -
            -  }
            -
            -  void update() {
            -
            -    angle += speed;
            -
            -  }
            -
            -}
            -
            -
            -
            -class SpinArm extends Spin 
            -
            -{
            -
            -  SpinArm(float x, float y, float s) {
            -
            -    super(x, y, s);
            -
            -  }
            -
            -  void display() {
            -
            -    strokeWeight(1);
            -
            -    stroke(0);
            -
            -    pushMatrix();
            -
            -    translate(x, y);
            -
            -    angle += speed;
            -
            -    rotate(angle);
            -
            -    line(0, 0, 66, 0);
            -
            -    popMatrix();
            -
            -  }
            -
            -}
            -
            -
            -
            -class SpinSpots extends Spin 
            -
            -{
            -
            -  float dim;
            -
            -  SpinSpots(float x, float y, float s, float d) {
            -
            -    super(x, y, s);
            -
            -    dim = d;
            -
            -  }
            -
            -  void display() {
            -
            -    noStroke();
            -
            -    pushMatrix();
            -
            -    translate(x, y);
            -
            -    angle += speed;
            -
            -    rotate(angle);
            -
            -    ellipse(-dim/2, 0, dim, dim);
            -
            -    ellipse(dim/2, 0, dim, dim);
            -
            -    popMatrix();
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/integersfloats/index.html b/learning/basic/integersfloats/index.html deleted file mode 100644 index 4a23209..0000000 --- a/learning/basic/integersfloats/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -layout: default ---- -

            IntegersFloats

            - - - -

            Integers and floats are two different kinds of numerical data. - -An integer (more commonly called an int) is a number without - -a decimal point. A float is a floating-point number, which means - -it is a number that has a decimal place. Floats are used when - -more precision is needed.

            - - - -

            Original Processing.org Example: IntegersFloats
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int a = 0;      // Create a variable "a" of the datatype "int"
            -
            -float b = 0.0;  // Create a variable "b" of the datatype "float"
            -
            -
            -
            -void setup()
            -
            -{
            -
            -  size(200, 200);
            -
            -  stroke(255);
            -
            -  frameRate(30);
            -
            -}
            -
            -
            -
            -void draw()
            -
            -{
            -
            -  background(51);
            -
            -  
            -
            -  a = a + 1;
            -
            -  b = b + 0.2; 
            -
            -  line(a, 0, a, height/2);
            -
            -  line(b, height/2, b, height);
            -
            -  
            -
            -  if(a > width) {
            -
            -    a = 0;
            -
            -  }
            -
            -  if(b > width) {
            -
            -    b = 0;
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/iteration/index.html b/learning/basic/iteration/index.html deleted file mode 100644 index b855c6d..0000000 --- a/learning/basic/iteration/index.html +++ /dev/null @@ -1,185 +0,0 @@ ---- -layout: default ---- -

            Iteration

            - - - -

            Iteration with a "for" structure constructs repetitive forms.

            - - - -

            Original Processing.org Example: Iteration
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int k;
            -
            -int xpos1 = 100; 
            -
            -int xpos2 = 118; 
            -
            -int count = 0; 
            -
            -int timey = 0;
            -
            -int num = 12;
            -
            -
            -
            -size(200, 200);
            -
            -background(102);
            -
            -noStroke();
            -
            - 
            -
            -// Draw gray bars 
            -
            -fill(255);
            -
            -k=60;
            -
            -for(int i=0; i < num/3; i++) {
            -
            -  rect(25, k, 155, 5);
            -
            -  k+=10;
            -
            -}
            -
            -
            -
            -// Black bars
            -
            -fill(51);
            -
            -k = 40;
            -
            -for(int i=0; i < num; i++) {
            -
            -  rect(105, k, 30, 5);
            -
            -  k += 10;
            -
            -}
            -
            -k = 15;
            -
            -for(int i = 0; i < num; i++) {
            -
            -  rect(125, k, 30, 5);
            -
            -  k +=10;
            -
            -}
            -
            -  
            -
            -// Thin lines
            -
            -k = 42;
            -
            -fill(0);
            -
            -for(int i=0; i < num-1; i++) {
            -
            -  rect(36, k, 20, 1);
            -
            -  k+=10;
            -
            -}
            - - - - - diff --git a/learning/basic/keyboard/data/brugges.jpg b/learning/basic/keyboard/data/brugges.jpg deleted file mode 100644 index fa723f9dade8f1af2b8af5f0608ff9983af8c898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34371 zcmcG#1ymf(_AlClJHaJb(BQ${f(M7-7G!|I1}8v(C;2!o>#p_oOjrMU*RHPJRn=WRwSNPfge?M(UdSoR0U!hrpaA~>ust#sbsMM~ z)YS&+M8m`J3=n*-sDikMp$T?{+Pk|!ppF1s9zECsAo%BB`v)r|Y*INr8hLxDxtTqU zGQ`@(4dQ4`Bjspq4}K_v1m9l&u_MF(+fK^f4dUi*`5z0aKlPnps=GiO-Du?O&8%JF z<BKVZNW;DYP_-Tn`D|CWF1{$2LpdH=)y&lM1oD4Th~n^IARMjq@4b}@5;3?>j6&8^y*po&V;%Eu=bftM|w|iqBz>%_qnu7t$w{SxcYzFuUV4I5>n42@c_3MezPlP5}D};Gw}UzzGpV3n1Wu z5b;2;Id}u0!dgKRa4(TTe+2IEgCN3hbtGgIR5Wx9O!)2l-qs3^#Me_VLNg^vXHz?qf+nfqN7;e!Xi zG=~m(=*^d0-bYJo5m~tM9x7sqtTw+Jc=!D6F*C*iYf%x`)N{7OvQ?QF$~x%OZ{f%!?mq_|DW@6X4B`_Grs zj6ZBCZ&R|vfZmPeskO%9i5pqtlDq|POI7?>h`37~P%p&47x{A>n@<@DKp|gF8?ruM*R~yq(#dGg$yVDAF&o(lekmIII zzYN@|>l9r7I)gs-;gNNeNZ!L;Vt0XrOAX%1-yJVKO~2UluXcZhhKk>^WZ}>uaY~tP z5aXS$ZkO5rMRC`rDK{boDj4rSCl)^0(r5Fh=9# zKT2`%PG%1DDtLDoq1_98%@i$NB=U7b zM#+2wPwC_Jyv_w3=I+vSYP`Re$Ma9m)J53%(4C}E_w!u9fbxv=N3;PuD>8y%t$dp@ zbaQXqF3NxV%bbe^HrHM|-WIIbR`-g&>EPu`5_t<**IO}!0oyuihOR7jTn1LZrFX;o zsQUu_nPGqm+6U&hKG~57s76AuO!JgkGFNeW_+Bg)vX+u4-1=4fkoek~UVI7Kx`~6}uZqJ{hvzTK-l|+g435*Jstt1+Zuz%2pW3S=hIzjgw^^Yx zw?FrX4Xq!G*NSju)VTd1?h@&vZC8*`vNN`u(oVU%uk!z(B9>D?8@4S#lQ!2!U$(s(u9|v*Cz%Oz8n$2e)I=2O1;8QoB>4RrAfd zq>FrgbNc6LxU~M|1*>L_?`hw(Ze4P~fLz~~$pO;Oxb9d@rl+bmUUE9tkm$gGVf(qQ zy}26y5xqHovRa|GDhuDVgm={;RBU5e4#l}oN?qBl4i@g{2tP27NEd=yWk=uThL@%I zP!llEXow~@6`0*rLc?5n3q^^}OZZwJtk!sAk%-(EMW>s!%Ib6R`bMj)N zmHu`mXce&Q%=A`mvEjb%lN`S|vg~`ity9zs32A$=W`+-HY8`b=DfR+2(<4=FzrGIa zbA%MRho_7dcvw7JP_<)qKuIytJ0G0#^}?E|@q+=roaYkOn=#yv5voi-PYG(ph8vHF$MIK6>lTQ_!-f z{UxV5lK%3#iJoda*y*eN(P5^FPOjv>=M9^~KTS^Vba-YDc1s3w?+jZzw|LJ)=D>YF z^scvx_p&jjUgeHfopVk2#ibR(fS=d?eZ|nc-PX=+ef>!{-xM@FoyYRSeBV2YebaW> z>tVo#eR)T2yOB)Dj0ZQvBlMk$UboT$&fcy4?HWB4BAgjVexbRjwdTp|GCTik(-9vM z-J$YprDy$&D6Dx|&bZ%73h8{_Ss0n@*0WVF*xf-lnp5r_+&CNrldi~!W^}OiMLv94 zzlOSJSrfFcHvG$fyd+B@#M!BIG|GZhpXs8dz*SfO%mV3bS0g6CBn^TW>hXR7Zo3{RQ!)3Y04KxXM3OSbd!LZE5Ip4A06 zC42Gcku8Z%uiUunQ@@S)s+?)Vt;un|N&$}@i5DFer~VgaF2;uFQ@*snqE!SejIUYs zI`q~j)GK`ErxwcYb59nQpzv|PqS60UxTuJDcZDVSwy?7ziVQXaRcg zbU>AQO)Yu#v?NPTcZz&K2VC+Rb!5IhaDKu6T6m#pVbw26myCE^3{#KVf}D&VVZs>< z-oMvYg+KOwbEI{DudgPG^DgPgLLZ-{qF^t{ArTsXG%z^jSz5DIamy%>tG4Okea=-6 zs(6gv>+ZRxccE>X-xOtMSs&->MvdC#OiVbHq#FcSPOiLK zaMvrUEh{cRzh+y20a8w>hPfMy*223KbXtlf+i8ok3z>GzK1oLR5mddU>uC#@d^Kmk z#x^vDUGmt7gbRzDIPM`ASU$6TFhFVSl&$pfsl9L9!CCXqj9h7*jK*_UT%8s&+?f&m zh>`M$9k=Bf@DunL)x0Ur-MTqu@!w)Sl~`<6&N386jx`*8rk}1OnfWV}?X)<*!L(*; z@7tO86?N8`c=}0Ns(+R?#dNBe#FnvJ{lpYs@Z`X-_<>5=dQ+g|wd1|#9?`XFU$II2 zP(tX0rG#s`4_BDKY@D{_jjC2*;bz5XyA=%3NWWmbxc8R!rZ(N7-*am={l%|6QU>|q zn^R=KRnj`SPCk1s!f{hnw(#}h8V2<7EZkAwVQhI5@w+vpSd?wK*Ob>41faWiUUNxw zU%v<=&0-axE1F$gPvqTt+@sfhry;Qj1LUtIR_*oXT=QlkZ|$Y7HB@(dl7z(;uSrQe zuJ|pdPW_#?HCTf7^+I3gQvKqbpejub-qkDqHNkh5ZY1JKRKI>7d1KmO;g@hNL%u0Q z`l}9$RCoAzhGKY{YqY+?o>@AaR8@DPbU9=*~D{OcpEH zg!#1A8+v?4v}ZAar#3E7jcly>lN>Y?rB|_V+L&Ek$j<|B$7~o-;urBebhjj{>dMV* z-9l`=BFd?C|Mw&kC>|6G4__pJ99~2`Gt&FF1qQi z@$e@XfQ#*F)&%5&XZiI{)p8G@6{C80JXE_sLh_xH+phNWR~=oaESE=I)A|~k5;pH7 z)P{=FqDeGleSyQbKYeU>br)j=KYK{WD35jc&TI=4km%gvAQ%(dR~|5E79fn(wA zKvmm)p?A)eu)cXC-E(|wSU#ZS(3DtEt$mNs_&I6z^EB7&B@7tSqmiWC_-=bI*Q2kxMu8ZE!aG>_No>Z3m3L$)J}q{RpnlHbUNxV zin)(pSX!2a3h1h?^EbN>+^C*66-@1jcwSO8pH`Lh&zBDFwsmyaZFjZfnHC&Uj5}ca z2zdA1yPw_c*pjtgHz$GL7x~VY)(=!vCg9V}xh7q+G^$-%>%xF{xskjG%?ZJLV@poY zrjo*Ey@87SwNH*mwZCEn7-!BR zRAj_|^Qb)Qq-jj87(U(MZRw?d3uv5%XB^ghs$vqwHzK`kA8x-Pj z#)jT8bdHS($LW~dl(AKB7-I1e*ZQbUeV^M#^>$bQ$1j+`fSZq1_s#BDHSQGl_T+QE ziL2nr>DKu2iiWXiv4yOe#+L=V9V?5L+H1eSRd0K zR9L*U#o^2|Rd{DuSX4JLJvDRSTQzbj9$1inXL$B_XCfw+)9*m@(9N~fb-$;(cBQV! zm-<@+H0K-!OdAx*t z<^lNIR02tiqwy90>N<%8%LcT%1u5E(S~d(?6?)swvgE_2+&gRK;8221fF&HJ;5@X@ zZ70!dAaG|j&O`cKBJ)CZ8H! z)L3G4> zQpK}SzM$QI?|PcP;xk)cT01{~)sjJ`5rpY;g0f!Pnuee8Q*xharrXzZbte*3E}ZzJMOBkp=@7k^k$n&Xa~cYNCSD_%Oi z&voQSp-YL12=bqCWn=i+bo?Z~nQ{f};p6F@-hUrnuYb*{HG0aH@>rY0`AIS2KEQ^X zH^+Y~9zJv23SPb0h3<#5mfo;yH#NIgFP_${j34%tn@7TcIUE|j18Bo0vl%{Je#Ka6 zWRTMEQ+p~-Ca$SDx%(`m6oKo>Y7x1r(FAh4y}Bg9zWR3mxln)UlL@WCFfUJYv*cDC z*S>c%3L)Ivo>`j_uD&ef3*TTsjFEG9`(27`tl{R=R$Ux_Ce?PTal%6ILI3HTDg52N z^gKkTn#f~Kcf6cydb%Y^%kXhE=AD1_`ig{^-5v3&{#EfEr`ll8;iv2TS0Q&91 zI*Xh8?5xo*J!&g=KE3s|@g*k?J6VZdqXDap=8N(4vHsW#;U5$4jH`LEoZL_Ip_})E z5(%dT9WX%A=gxn9)U}w`7^f6AHdeS@ZLJr2P{igy{LG=frQJT^gV zvJ!wq-13C;@84Imta+!8-IorBq^5uJ5VN@D^{(u=C+}F$^51ESJ}iV#% z^-g**EyZZ?TvU|0-!bcU)z-ow1vYZ?X-<-bC zUq@JSn-ctiVfl-Zq+?grA)?0(#BABEkV`J14rIZNMW25f-^oCn*ARVFp-Tt+>gyv6Q)F3yZ{%K90?uqqh#9sv>SNmS$Y9oOksC-);IEp&`&N#Q2r zyfdyT#)K7;7wyxw(ETB$$8`rV09A>-%G%es1**J7r0qC8yMA4VBaBYxJn!#Oa95(9 zIbpSCIK~aKBNY=BPR#&YpTM8Qv!RVm#p#=Qr?%P(bp%t%+fQIqf7WoHkn4b5T;ZVy z8Vjg{lbIXD9AXb~^P+(`T0tKcHMQXz=wT@r7mxxh0VsUo84S<>>VOR#yTLctKj>kh zm*9V6K?Cpu9Kf@O6aKZ*je_+;T~?k(!`b9PeEhF<@)33gbsCz#_5Vi*&%(*Y4emXBH5=f8ukTyH@kcne_jGf5&>zAvp}E}y zMtE2yCv<^32*;!k*!nNb_Q&QgEct*f9ULv;HV-~KSvpug;8r;P?BNcEV?<>*4)B10 zJ>hs1j_K{)9UyRg3CDyEU^94-0SW6t?*_K8f#Zkf#d3M6DGkS>0Dy*N{SR#Z59|hh z4fhiO{tos$wP2><5)u-mQ2=||!=p9q>Sh*pW-gXA(hnoU5#B+6UGqaJ0RN$FY2b~_ z&n3jq&(6*95Q6x({C{Tt+vtC@f9Tu4OincZ^cje__ix?bh5yz;GvN`GGkDuX{;e}l z0)U!N06;qZw~qcRd^CRqfa-yNTo3WXc(HMFa}ws{^z`)PfPgJH9vbvN^1n6skLCXi z{!t&tLw)~gI~p0Vm6^M}8_h$bTEGKm?k+U0PG%Nh8utHn5dU8n{D)ir@Pkbg43C+C z9pP2!z(?6bR8bo0XbE|UM#3Kg|5FeDUl#j^4-fFKaSaCq+4lgUDF^UqfDl03>jjVq zFaboPG566O^aJ{Aj>G?o#TJ61SWF4j-1DXbH0Y-~nsNo)gbH|%iieC!tNdF)FZ z0vrw;MI1{Uf1DJYYMf!5eOz>023#pz6I^fHc-#uy0o>h3=#Lm5Nk1}scm;S}c$@gB_>B0n_?Gw|@w4z-@K*>B3Fru<2`mUc5M&dy5v&oS z5Hb-e650}m5Ec{m6CM)b6Y&!15WOZ!A!;OABt|4=BvvH0CypR4CmtuhCZQyeA_0>G zk(7`OlU$HKCY2-wlLnKPl8%vHlhKgLlG%|(k=2mRkt30_kZX{8lBbckk?%exd@S9R{5sofTay-EX=> zdTM$V`Zx52^wSLJ41x?c3<(S!3>S<{jJk}0j5Um#Or%VTOx{d|OtVk1pGrJ+ewz7o zlo^FtklBtom3fc_frXF7h9!k%fE9t2pB2KI$~we`%qGO<$d<`A!H&f)#qPmg$iBou z%%RNjo}-3ipOc=`fHR7-gY*6w-!uDX+0SOU@VQ=az2~auI_75Kw%|_T9_7L2k>l~_ zspUE1W#t9)rtwbl5%8(-1@isoyWv5q1$fkphuTQ6^EaXtwBz7_FF@Sccf5IF0x#@vq{G5>F(|Br+wI zCFvwBC37SYORV3~edd|7STWZ8K+S~+XE zLb*eEK6xMcp9;tdN(xa56N;3I7K-_bhc5(P_`YaW!cx*wN>*A{W>I!gu2(@&d7%=c zGONm<>Zn?y2B;~j#i-4xGpRePH)x<}sB5HXtZQ;Ibv=+0DvEH(gu!*)6$ao0xCBfDiUg*AM*0l-+#kdfloWIyY#H1g z@+>4iqjpPqn`;GVFUsGL}vM4uFyben9GJeKl2rSuEMm!K~fsg|k3X_9Fr>6Gaq>DON& zUneujJD2OOTD0DB} zDl#e>ES4#*EnzRoC?zfp`3`({|Gr)Js%*Smsr+|^U`0tKL*GX5=m-Vle-=@E3TJ%~* zTQyqy+mzZm+vVC@I;1+9JHlJR3asXfA%9 zVm@<$d7*TXf3a~%W~p~sYk6kHVr6I5b@g`b<2v?w{08+#{wDY4k1e^a!EM9swH>FO zo85ptyuB~`PxmViBoBHI^$ypLT#jJJp(kV~xu?9Rzt7aq=Fc6@Z!Ur_$u9G*1g|=- zb+0#WJa18N6YrSs>hG2AXJHO-GSJ^l6G`|B!Cy=hg#QR493djXQ#dmM=|PZDkpBn@ z3MwiZDk=&(ItB)uk@DXHLPSJFMnXnMK|#mHK*zwwePEj4!ucw2`PUBXucQAi_n#x! zAErqs(1{3wQ#1Z%nvlVnCh*r<0QH|l695Sr5dj4R{EKM<_w}E-|IIW(fV&1~nxLQ} z!V?5n5CS3|5`YY+nn-D&5SYQKCWPEk8K^{mF+G-eh|Le_UEUutNb_n%XO>&I{^pZm zipi?rCwXb<)-t?|#`pmpgOu!JtgKvirOt@? zb7Ed?=j7%kvyh@b#49K%zpiU)>xxDAg@LViaB@L?_w@GlU(6IlWO#F;AfX{5I{b$m zBZaI1_ZY?bT@-gl*&*Stp(VQKM4ILkjk~3MlX$u@@RkS>19$7j07@J-B-!9AjgC+A%lFWbk{Qu$df0J2)xBO4iuU`g7 zZr`ic1;t6cHj87B6Z58G62xl!kO(D1Ji*nEsCq{ADlh{A15T19;tgVEve0=)==^SH zrD;E1>qg#G=%$qOIp06>ZJRWofPin^53F?3PhzMOJny56@4k)V?3Rn_LbQ?Wl^qc^ z>)yqvq)F&-i{rTAkU=TlrEaAs-OEmhp*ipgE=AQm4gfX0e>ph81+L*zX--IZ<`Az4 zamfGa$Obj5H8>%RQqx2hg)|4qy~DyK#3t0*qE*mGM^VoP(T=L0W?>(aBD7jQ30m09 zHIMWzFL-A{Gn}fXnzBZZGQ@{meJbfu1&)&?jC&>i9+|&OCPa!q^!R-EfH=YC^PIvr$VvVJvtZENcS{`={&R`YxMYSxS%+GylAlzymoA_; zlIkSH``}>K2D#AbaF1;z?)(eHrRfH+ON77NbK{O=qMfbEATra4Vs*Slh$L&=5nd+` zI>M9`y@E={`1ck`4A2Hhc2q^AFg=#RABdm9Gm;&s-+g+I(8~X4Ur0WeOv8#m(UX^>;&0 zysSq>BQ{u{=5Kq;?Yu}!`>mZM)uZ~xx+t*oKBsmG>3}-wMd>XJxa$3qTY1cp%5WH3 zR#rP+j0Gj#+3cZirOJKPBOM!L!F^^qGuKt|R%htxjOl>>>5iMJh@ZY!OHTqu;dUQY z+I3jcNK0ATgF2 zj6_wou~UNmg?-7lOo>+&#;hj1P^v zbJ`z9BJj@DRLb!~o6}%B)lVQ1KstB zb&j}}Q~xjS3<_H}`Aj^Z+O2JugG3<_P9<@th}kviD!ym;+-EAN_b$07PzA}L!kKLl zD!Fk>SK&&RzGpAlIZonn*^!I9!^S;}1Zp0{^d#lprv{xWcdd_AQ+q0ZyWQ@j(2Do& zOW(Dx$FLa=Ii%y8P3QTybe>m>d_mRk_2vvIHW2ovKb!eR|f4jP|I(CJ}SS%h% zh{L!)^tSYR=%g2NE>|GBbewa!bEp*CF-^9gepPejm8VD;@8>+c|4BP*$thU7aV$wi z_6-k?xANqDp28c7&+8wr6yD6&WnJaUH4#=f1}~8YL~FFgrXNFA_F|nsCo?ZG#qd`( z4`Y6f-hMg<1L}#0n10ti-FP=W=-gjtU`N?l)n_oTHyOWe=!9%H!m)@n$u1}3s>CT; zLD3NvIBsyvM*6JOH(ZNd2s^SrPGzmrKpYqA?aPR=?)NDe(AY1MC)in>$(?U193$CY zM9+NQmX>?n;ENJ_Q%?8jn~+L|CDSjbj$qhpu6%OhL2OQMa& zu^)G0ak3fJ%zQ4u=a{6o&;COxc|^VXOJbGb=WnweB zjmK)wY{r{j1$@$*n`v>8y71IgXeSS9DJ0uk5=dR})4o@;!(^TJg8!WR&T*`trPtkX z`FoSUH}SkFmugn#=Hg~r^*w52Hg>`qN%Yebkvz>=Y}NmZq?w%Y|)c^K6~mrCx%r)WYHxIl+sAxG4KyI^ml_G;dJD zY}LFEqPXlU-w4RuvX|Y(?Cr%xW;_diMVD7f;~}IU>_A4i9JsU%X_`ZkETHK#j?bN` z?flk7I~u(zm`fxE11eCqWQs~8kuL8xP#KVfVM)l6d(cX89FIBN3mc*O{23ylPjM^2rGF-(%c_T-j` zNf?QY@L?YE-(Zp8tXfydtuXXt!F}pT8;NlDJ~}tI8vU~D`Y7rUOz}uUPSPZTWW9OK zp-s$Kw)pisxg=6hl?_^nc1P%*tT>L@D6y2?x&+-0*Qb%&4hs>%OY^gr{C5DB-N)ak zc9LWky|hfn#ouNUxaGR#_vh%Ds)RqpQa+&{5!}vaO6aO!w(V4S{7&89m0CC{MbpJP*h#EH(TjgGy3kBBGz-21eXg5XKQI<0VN zNLNC9-{FklXSbI`v+1BHQfto_?s#IRu;I%QF>G%PD*~E?AbqgzN* zhg(SGlhhopS#IF5lfT{CEq4X6WL9SVEFw$Pgx~u*j2Ggp)9P*ud0VmF%vJtIBa!Ch zRry;doj@Eow!E}eV7v9Kvs|{gQzzdEVfcLmcEjajab!ut+Zxl52KT$yfTl)1y=qQi zB+agGIkJ}a@Run{$#QR`TZAgdh7Z@r6_L)Gj+1eHKl*s1k5-56GgCm*Nq7RZ`AP*N4CgkoZ7vVl`dN~1)pVbX*uJ-bioz z(`=7lH^oUL95A4WWJ_qd__bEflm_(?8-6Sjk{+d^D-7Z-R^9G4kQK`gEoo%YX(DU* zEwi{xAYX?~l2YYEkJpwz`&%dAz0NJNb9@A0{}Jk9ukEpXY($@6#0j+Dsg}7!kt_76 zZmRYsNp7pGN3X?Xy+t#!&zHpWlGiYRKp1`tJcR+gl?>smzNQm3&-GYIRBolPW7VeS zL@!9FUG05b*}UGGq`=2>zsJ>zT2NCH6T{onUR{d(V}0$Qo0CU3Y^sA@C)h`Oozw-m zQiIJKOBd?icD{(6a>IOm1wtawAF?j_H(dDS!TO5IDTtcQc&%vP_LnabBTEHAFkGj@=eBjm3mYNz%WO zF6NeIpt1o4FePx9yNrTFXbh;mZ_7s#A9Z4nJmu}8D~QEvuC!a4uy5;%o>`%cxg)=- zOu1zEG=Sd{xwXJmE+5V~gVM%%JJMVg(wk`}%sk5WwT_UG&q+$eCv;%9R$+M|!`c0@ zl68`z2Wnf@V}JDvDxu0yBTe;k)7CF_3TTrxfy(J1G14RY3GXf!V%*^7Dz#A_T0zzn zMBeP)V}(9C7sm~br5p-XU53IJ=`G}javiQe157?@LZnrT_q)eJ>)so}FbzD|>{#~2EfKJLEdf3A?Y zUfQOy7xhF`v8_;azYK*a^6W5IQ&rOgec6&rf99=MnWM3ar-W#x7F+xFHRUY7_^T0y zC^%iI_~0uK*TT}e5cStrUlhZ<=pS>|bKDl&M&2(ylBGQk>MCUk-glL!wL2Ax5`jP1 zUj`4OP0wp*s&UeFMD!IOop_O=QYJS11S3#kb3wX#8d&Z@RxUV~EWC;0NA55J*uLy(&q9VCNq+Vn+HIRpji3 zQV9FpJ2RaM@98L||N5M&DX)#$j3;ICVJ&F|+tpcl@W7ouJHfmoPyFiDTddc`Zs4Gj zn|o3SQl|bV+lEN~pBZl~qgqSWs|0cRDt)Ue8k{i=@|oH{utrI7svZx->&^JZx?>}` z(6%?~Cw|{MT^BueL<|$1FCl@A9X78Y+^%$d@n`3Q6!A6k&UChg742v%#(5|9K{Tpl zZFyt^wOUah(OeLMsR#=bH%$fSw@98v#ynSldSHBOmt=0-iC-<|oWq?aNgZB^n4=Vw zj!$-ah46lq=&>#piy<0gdGv=?>deH~v2i3d?(FI>&-vQNN8h?-pri~pT^5(Fcer%; zPrQ$@?QzivnC*Bc@wqdRnRzTNA4*Qu<51=kC(z9EG0d~2bCCr(Ske;5xnVd5YPI?F!di-Vdj%;T6?ME4Tnyn3SIy*Xp z5f@MwF>$aYzi4gPy*_@3OvbXLTt00TQAcv7xt#U3>LiAg>Ym%ww+u5GF`)Y!Bcqzm zv1ydm1jpl{*DK+p8CGBL!?e!%&%2p~oz4t0KI>{;3v@ThrS#Q*YL2~ag!8UTihg9; z%#763*g9i7(`n;L&ZjE&S@{}0lMl9PrX=00GzgQ~7cll6fQ|2(fc-nw`s^?(1MgiH zv+6bKKKu&{q_(YAQHo zTT?B&ILf;dL@3WH*Gk6DL_@_G2fE08(-2%^BbZIiGk2xGmz%^`W~p$lFXDnUX3Kw` zqYQ2;c8PNsV`@BZ>2AtqzDdiIRoy5%yjuMsN5^Nc>E(u*7ums3=Z*hc9h67K+vOZ! zLZk3)#EVOBOwsl|s;zqo6-}=qP4md45co6VBn-g%0v`JE0zt{{6DU*$0kv(?^5X|q z=|?IE_kGW@D}!y(OO4-(ykfy9CJV#1MfsiXhaF=ZWG5QOOoo_qe?{<&c)iObktvykYNnOmD#^fJ9wNso+XDB32d z%i?oa#Bv8)C<8RGnZNW*WI@n&8a%dQtiMHqjg#&Opb4==+X$EKt2(&pWrY)?thIH; zcCEAL%m#*$&s@Y{w14rQ$W`tS{e{C7iQSde8I{I=%=0Ac88vQg$qOO&K&owdl~h4j z6XbwyY(@CH_RxH88@vc8IleNRD+NXDOm<3jhD(w?XB zO1AORL-A5;bDA(fvwD~}OxRfNdM}E1PJEb-K3vZ}FBqM-WP>?P@2621Xnrb?EbXVh zU!0$;e?P9DwPC76Z<=panXu?5laA9`9)+X6Xl*Dt~NZ z9<`xYd4bZf@Y?WR^IqGA`1@A#an|k9YTj-(3AWeTOkx!hj{jU3tsDpHnU6Mez4^7?$I+ErUiYK;cSddw9*ClF= ztMt2(_1V4(9FEYQ5L(Z)s?da*+B*2RLN z%~b8!xT<$Z$@vh2gnn1@a4RNW5jkFKC}GA6suuscGWD@ag2pJvJ=$Ke8DyU_d=%|n zm|YZ#Cj0l$&*e5^&nJ#K2dGREo{x&cnPNK!ELZ+I@p#s*^dfW6uHw5_Fr8$oU(W8xUFMGQ{1<) zI)zGi2$=qOVfQ^@*aZB)7Ch6W0m|Ip#q$8GXTzTC`f$?AJN-mmJw)oh-f%Y|RL=_*B9|h93Io`&2`LJbT zLi4H`{Il49fh1{SIzG?%UUYRl#X@lgIDPgltEp5+b81=r3kKM~*Q_{g@Ah?Sg*-J= z#{?Ns(QJ}46n;kh=%_j{2)+81%G&KGQ-9KtB-&Lvy#)jG-_H**j^^mK=5LefA)Myt z9rlXpsN0Za>^ibV#n#WMZ+80gHM2K!zG*J79|x$RQ!re(_&U^Jy^24#Ko&XdG%c|{obgh*ED!g^L@|0_ zC@4Z8ZtVWp@+Y~)i)vkNUj8u3(@%+_POP1hk56BumRo;3VaFS`On83I*>lj@EPQVR zA+Ii5D^wyCt;sZ!g%n*?Xw?}S3Nj|WMFZiog|gPl2)#TbJ!}b=K?@W>wHly*i_o=s zvA_&}d!f3bnt6F*3wPyvf)Y;Ry(2zq zfN4$Fr1Wz$T`K<&_#7ZOma|Fac{@6BR?6(vW5A1Hyj*#P9;(P1A2nOD z+uOl!z~+Ki=el#9>S@zY@rG;l&Sl~@@T*tu@rl84e8snpJjiuiP-x3xAzRtdaxy=( z{HQ)qYcez-GaF4b3F1hP*SES5>t{*sFpylSLf4&~zU4zYw{qQ0T|gh-ZAP&+<;z8< z>##KYmlnF1kAo47$jU=4Wrmodz(LVCK6x>K=ptl$B`ZA>)x{P*dQr-&~VyOw+BWv-_BN8o{!lfa&!~GI$ya{!wr__fRTME#@Uqz;E_+3uymYUHl z_>x#GXczqv6*MxJxIF#MAB9Z@X*z;8adgMd;xoLic&?zU9>-MyA^AoNYVP32vObpc z6+dF0u3BQ~G)iWi_q8ie+mqgMSx#Qu%*lxghh7PG5y>*&4j)^uR#&hWr=_npu=5y< z?e+C~5_g@6B;v^`N2AroW$b&eQA01UqlDic0|CHV^f)BZrtcu1ZYb*#4nB)%vR#$RnV0Z#P`o)YXg=x`>w*) zd(cWOD@WM)NEu>6WzF5AU((~zzfod-@yN@H;+0euE&2_yfssB?*2O82e@T#-qcG6x4QJkc`YU!}&2xFK%c*mzv3HDe^1xj%nP)1Pn+{vsYu%H`LoAx&GAr zSf+{dQM3#Z-|4n$i}UH~t;&^=GoAr)WX| z1<>M+7>lS=zmd@l?<5X_vYG_bmwO9Hn(wh}K-iVTRr*>=n4FRNF>gkPEEf>i?E5G4z(I%>=N&Q!#n$}~$ox_N?wPj)}B7IYKr^)p;cZkE0 z510MkXr?Kh0=LjB!RUk{+H~HyeIqQE%dol?3|+Zca_d-tmZliP-qxc0a;6}ldRZT^~PHZ=zB*&bU6nMV*J4Ozn^ zv}Q)J3St9L2+fxqOG^*bhGHRWO$GwcBP6-C^U}5XhPD4ECO_H0{{YJ$`Ne-IU3sP^ zg5%GAYBv*ETcIs2#aSRlQco(hVUN!M6{{a>xd(&iAEk=tr~cmDu63;B`d zjd)#YK0uJmd*;z?r|P<*k4#AgjI#+&-)OVH5PESG86L^(*&Mu56d}vZo@JM4Ys7KT zJIkNLkbPtS062Z*n|&6}2Zde>pGrE&KWe=}Cp$h42s~u6oRhcc*O{c}<=3(OIUa&$ z3a_ZhR3A-P835!)>^84z=8so86?MD5(BmZCT|5WOpYxDQ_;{5&dyLm=yG&vvbD?g_2WRn%^y8f)xnb}WWTOMieX|06w}(*!0Sl4kvzZRao+$|#)JHwvE%{6HZeK5J*IK>a zk87&xvPJcK%ZHKRxQWt&tHht)DPE*zs~2cb8Qvk;<|I+fEpZw+b=RcR+ z+UoXpx1N;?Lw9UdsqdT@@)j8nM9qJuA0qUlwI_b4i}@e1G++76Tm41jw(|#(EG{E? z2dzD`dQt)3s*rx{#LeuU9DtkO%Wtv19lMeTZ?*L2+wuvzhd!;VsYDJL{=#&D)r=ikxrlx9FFYe=0OTDBD3{qv||0 z>$E0UD;twR@iQYRH6Fxf`yLo+qt4~j?PbyA&pkx0y*&p&^MB5TK40>rI!tykYPzl7 zx2DW4Eg~&)UJI0$n?!0j4m2b-*{07p&OmY`?Ch|_fy8$K@t@`vv*xcZd9U=G!8IL6 zSGZ;KE~Rt(wT|2$h6t233aHosPbSPPIQ&V@0#{tf>-!w+xdbuBMm2ng>0p2Jkw2A} zet7bakXuIh3?~9_=Mw~{%SJcckB$PEGFI#!*tWsgxDli9|WGZAk)hf>sa zSkIvto7Pg3!a;TsgGMy#L*tnz5P{vU?K|@S0Gh6Bv{>|8xtiMh%aa)Frf_-vR#IHn zwD?s)6rrx!UZYGWE-}hOe|soOnHH_)`60OajkL1fSxe|ib*aJulp1rP*nCPh1Rt}u zV?#?~&pzfyC31WBZ9=o}JzlgnymOh6mBk~V1-`Gc$LT6g9B=Aq?XXH4?t z^!k;oAL1QkBiq^9A+5{tZQYmxs;UVj<_~D<{0uNT*k=4i3;WaV@p4*BE$a<@d% zU3|YDkE4ESYI4dn>)$eJR*7qEEz`zJiwkZtlvoqucagJ6ro*h%iAyaA9z(CZ`@Z*c zmUtl`4>8U1PvytvpXFAquHV^yX#QFaYeE_Yt%7RyS8VqN>J#b7EGbz1FRaJGN-3iS z1Xiay2}2|yart$x(&Eloa?5?U_-^!nF@9cu&LMtb-Ck(+zHsv=k!EX|F7+E}T*&_b zSyT)0tH&bng%*HvqKw8Jp^`G;Ad)<j+hf6jj*`76j?K=Sp+<)7x2 zhnZ|(opk$s64?{h=3!wR@|16~f~11GyHw?vv&T`C&$>H#cet7K($ixR{&ctRFR8yj zeIEtIzb#4mvO@s`h%g}j1k8HN3ydTah`OQ@q~(e#cMx>`6iXyW)*weI9{Z*p^eq#IkL*3YB%FY;eT zT{_Kf65K%1@K%6*m9Ijh!!q;AqfWB~JxOk@`K_S&m(BiRj@@l_b@HOiVP=lS$d&_1 zSy22t$Z1+{Oyu%r$Ch%Q#7Fc!h8!6&V*`;p{P{mKKj$HTJ3PVVpEzGwSR_JSUJ)J4 zQ>cIRD3GEy-91@aM;^g*UyDN>TnwdtufQJx_q!3OmI-i*^!^G-`9=A&51QLmhh2u( zOkXZpCZP@c%OWG(B&e_k;z0^zrD%7|Y4%KXvl&4qxi_70&l3vf^vz?)N$1;{yy4~P zt?l*bnMa%KA(f(u?uZO-t@#QRm$>Y5$Y2?JhrOuk4jxuVmhb=5`IT|zEn`xI%c_RB zx}Go|<-jNIrgMi30RlXOmL^4$%(5TKZ^}P8esB58!^{3w)4f@yddqa{SS_Ih2e_Q{ z;=PCM9foCGaf>cIrzvb7(Kr0#@8nOH{{STXwQJ??FIp|$v3jCSV_lsG)-LB^@kr!! z9hG_km^m`m<+>2IbNT1z&ntdQ`6BnsUS@=9dc^TGK3~!zPIp(gOaMrr3-Jy2By<_5 z)$th!k?K6WhkKuP-eW}r-{Z)5cIZ-#moA;W%q{F%*^{{WZ2n-f}E!3L+IK@<(IX(@3VOtV6j zrOhR+5%`f0DjM%jnO>ho;bo}A0euhN&pxlj$7WW1(?2`;2FJ{PP`2}4xW;`@+}#f> z+Lxue!tk}TNb6C^llD(;J7&jGE)heSb+`u+C!^*+EcrXjzGT(Bo#c-?dU^+!e5ImF z`nBYt8Qiq}s$WE`zIH zb+xgWvpJRqRc4YvsuY?4q>>KVkrOQO-16t}YmnhK5si4az_?)g>Bo>`MkbY7WwBu>lIN`(~2uGJ%P&dMj0{) zOzj?>?q--u7|uwJeP00S?_##&(z<5Ty&3Ic)DPPlY!6*V{)c~3?qA(U?U{0p)mwg! zfya!AHhKP^*oyOhn7Uq_r}=`)!gzJ)bqM6wKB`#7YZukMOG{H2s@C2xIW;ycLCS_% zz}5c%YmppqkmSrfh2(7;%UTwp=1(!}^Dd?Nh!;%qZLNqGH&Q`44RtwQTq7jWc`?`q zIYw-R{_Y~lJM{GX+hZT&CZivY{^z&(bMpH@)cnc$QRQ^f8GOB}O6DVWeOs%mDCBpN z^5y;zIRt3{0-Q+9tXPD5hTMa#&zQ*bB;PX5{{ZJ8JjbY?%q#6DMZ3FSE?RkGMbPZD zXzr$p2_~A~>$i_ANa0uytg3X}*90)eQsX0ihs*Z1&rvu-fEotLWq*{OQ?}By2xq=n zEo|a$Y5TAlh}^YEu5a}6;SPsU4kGs7HvVhqf0lkq)qLVm%VDI(hC3kQKdsL@1db(d z+2l`#z*j2Q=P|}>a&`>6H%c;Q5thTRx${InpC6SsO`~eo-;`J0TGzba9JAWqSva57 zwvC-;l&o%~baJdmZe6pCo}VlMg$?&R^n0tpGsH>s?aS_`&cB+!m%0b${{WdH^DmHf z%`(~))8VvTBT&5&-I(oHglxsTmGL>9rOzQAU=n$EIC`7{6QBtl?B78AwZ7D}ugeVs z^fju%6zdMTs;Q6Dn!`?!-6Jg!1oL*1h5FMj5|%eg2oH`PyGL zzPo>Qb#0^ES=_ujZeKr_WS#-asZ-v0pq z)E%P#0L~=X`Wipw_nLg6sJ5{rUaiKZ3y5APBo9}e2xJ`y`ZJBil721j>}QO4T=#y2 zeo%f$`A_n1Ol>2|`a;Kfdcm(RTmv+u3NI({QQM|uPb7f39ol07(Vuza^JmGQlA090 zZu738^=msLMYoENad9c>4Z0EwG4Rc7wFKlFS?+V8fN&qZ`4j&DIT!x`IUVN@&JQ+e zdW=?2<(TyaI(Oy%mdWbAnQw4^-m8`ZhT?hxsy0zi4eq0pA)NVv%eZ%bvYAde@rXl_ z=6lcT?hljh{{SvEpCezX)}d```%s(Jn^U-QV$|9r>O5;HKMke09Or-AZ-b^~ZB6#~10#hCYI zJ{hmbPD$_I`dqwF7~)O5H}l8Lw$T3o&OmwJ%eOjKk2a0^OzECk(i9k`Z>hl#*Dvm+ z55XXf)Uz`$PyoZ12#}P4>+oD=s2=Z+?0K)6zbrg~=gl&2K6%JqeqGs%eiu5l9-YiG zS=%v7Te%Xd;pP-oRo#}DVkf7l-I95G(Y8=X*bb$V{!ji&Xw&&~^B>4Iy2ZEV7K`T{ zGmXBJ6m4&FX{%a;E}tx=%Pe$a0~R|0(mwt8K zW@~$|C;2~CdmVn>!BTdKH2(nJ%#pAwP*FY;y>ePzTxARH=WMkac}7*=$?_lOm51gu z`u_l*HN6JL;={`xcD#4`g`xt@X>&i;AP29e@5M=_2^)0G%|2*wfLby@#PWR|{{T1* z=6zNlJZj&T8k}6LeAKBswB)ZFn<5?8iyyRN2B*GVAPj*Vn&-(r{{WoP(J!^{&U;-) z%a<}-TlurgHjuWgql_AUm2UGb?8ak69KwWJo|W;;cuO6bORnxrM8tSUPrSZfveNWz zEX}Fv2yfd?p3R{0-G}cWdQo(JDocVWNhHrGQSMG&a>{kWD*OBW-c2F`0P!35e!nzL z&bg`i&sCGkeqFz`({vkSBYB15&=HMfxp=qtH~Z2jw?0DpS{}R0KnC6 z&@vCok1bkjADBnUS6606(iP#+BUU9-Oqy1EhKQZRg<};ug5KGej&U*ZJN9vM#&jV1 z`${nC-^8^7jn?ES|elIWieUgnFa%#^Wof4-`B_MWhpSEV>9-aFBpV;bh%o!Tw zKSKLIBt`j^`J=7skxV7>{+o66OKZbI9xF6h5GxIsvc?TZjz<)%H_jCFKg>aEqgz?& zwlXX*qY(a?-GYjWf!j0jmhk=sF2*520*~ zKgm+gYuJp$)aDb&Bi;IcW1HEyjyOvp>-s-y%KXWw8%r-Z>$U)!3uxlRLr*K|8byj}GWoLd+eNdw1BI@Up~CTtnR(NS5S&p*QgRynhPXki=6spx zao?+*avkN8=^k6rm-DL2P0_U%zPHgXuC=-E=5sW+2GJ$BX{KYf1dJ)ue8<25s^kaU z8}oy`^C$GbJ9Y2KpUnRNGTrL_c-0{uWYm1YGs&oFwo^R!mv1DdTYV)silQ^0R^`du zZIT_Ur^5@G;f#8nh4-IxUQG^LusQd0uiBn@`^*{-<)4-G+h5LKHCg$>ds!8u{Il|; zsMj}|tShtLUwly8+u4#8V?ga)&iiJk7Qa{8GnevwDm(u7CGh_MS`p_zE`P&7N}2ln<(14|F0uG5hPQA+Mb3IHDmEd47_4m)akY9(B0VUQIjB zT1C8GT=Pb!1>UWr@@XZOOM&%dNfeTK7>H>Oz@7S>uuQ^SG8=b(hTjjwj}%V-0IRDr z^N;1P=7;8|=Es?*u=1t0o8`|U-L;pH^jM(uEL@~YQucNOjD=D_P!5bv*_L8w>VV!y z{{{Wn0^RMN!Z|8$?ZJ}RiLPxaMC%m-Np@kkc5=ar5ysF>zhWujS@nANlOaX)K!6((skTLPbrryDVd4M{jRoB0Pu~)`@PJwS^S^#7vzVQ zytAfi7B8TA)AM30N#nQm((>lk#oRZeA`eZ`rPvWdM)_47xkx+E<@#KsltKcI*Z2s} zHR&JnudcKYKY4Bm^!-Q4x36P8%>Mur-P&G;{r4J@+;=D3W;U92l2}L-cMeu@#f)SJ zens>@<-eBi{K4cHZ7!NgpU+-mI;6L8?_E1eh(`kQ?eWfb9oIH_HvoKpA8Vt<3M8J7 zwR9gN+WBY8_VLGPERr~>1-yR4Ex%itrNT^1$ojYVbb4pxhnMa&t#eV;?%L+U!F2gF`7UBYS!TUbsNjMA z>s4p^G1E_vie1|ek6(aYUezA`&%^e0HkN|Z#@?*?>Q6!%>1^I}+U>YvHsdORX{P@D+Cg|Mp!Dl8Yw?(wq*E#xW^QO=$$w7TgZCNtT$R$m~F43 zxG|(WPZIAc@{K6eAd$ES2Z<8C9D^V8CaWiyu5GMWoKV|4GeS27sqr%r-A7EcY%Rx` z;xr!{{{YTa4L8mjC*@z2e5@#p699lPUzORUSjiJu(k%|O=Q-K0@M~uvay6_JMIG?mQE2o2ZNs>Z5aqN98X*G z7vy$@ulYXf${Ky{r{xw z?>=pl*5slfct_jwdUaMDlksYe>R3ml z*fG@MvWb~Nmf~qsfs&K~6=(tR8M?$W%<>dE13}jx40W^S9u?&8%I`G(YiOV14>0~| z>mF#DD~R7=}pG+$EI$$e{y1YwEfz<7@gr%|hhDRA(BK>L1MwqnCPqlg`^ z`&qhqW6WBGsn>Kp4_CQO9TrR2?F3H@y4Lo~MD+kz?GZyT1C2rJT*km8LAoZ+{{H=u zs+bjARYRl6e3^aaWc zROOIXJajm|H6HTA6mjsJljJ_r&FlsA@uSZ=q^XtF5_bN>FkX z91~@s*tL3$ryTNOjHE>wZM$UQ9FmLy*ltsw%-btHU8mGywuOALp-SFPTZs2dxg*-@ z?MbfC+>su~aJh(a$`v!unR4;w84RE~9fRxt0QtsW$-A#6`3pqTwTq|JW4AL+rKG3_ z)ve}~&Mnh(@QE1E*L{v}VlIhv`6h0j)A@}e={g1E%SClVMe!hP21g*EjAwV_ZndE6 zADez){LQt}ucEfN&@|-wkJdgIq@L<@i__*d2Z?HCC3-CNbFQQa+@gG|`8oN46Xs!Q~>k46JEz7`EDqJHm&#mapn5i9a-Z(ex19z zvfU5Jzn$72k@auQJ#WkQTGofBJeOMZkxa5YYt2loSb&T{kX2NZ;n3!XUD$q;F)hCV z-f6p5B#dM}ozd*{8~*?$c}C{zO+H_~pGt?#{%eeejTS9VZLf zqS4C_1PR!0FMR%y@QA;QkF3iXaZGp6_eXgjp3L{mcNR;f=-ye=+m*+dWs21mL8&s3 z2`9pvoZsaFBZbjoCQ>q1@^6;!ywm0{%!@BFd43tcFE4!$&>F0FK_pu}8YH#!9^3=T zZf2+kpny-db4NZblF2%=5Krg>)D*{WYjtB4-Lm>i%0Q9v=SmuqK^e2ftJD~R2qU9|mrbNHHa-6U zfU&&6{{T3r=egG6<_|Ah-P}tB%g1v8)0$_5QUf3%71cjvABQqy+B%4CV}Fi&IMVEm zJob#Mr$5%tyo>o&Ty5vRQb~J;p>>T_XhQG4YBc?dGR`@*IYw-N@lj&uGh*H=rjw}C^*1QD%R z3e|uzZbo!oG;u@|{6*8p5z8Z81J@V+au4##O-4-~9ey}9pH<N0a}xho^S|_^GL!- zC%NlBT3ab#hf}tL(YIg?v_McZu&A%dW!T2n(IG|WznLCW)qLZu`F8pdG%MxH)wqJ` zI24dq_sb%-{7U$D8CGmuat66JV#&Y@DD!9KH|1}dtWrNV`6ouzn1TM4b!{1XuKc;u zxso<<_E>+|;6MWMC)_Hq3eHtol#mt9*4E zdVoKv@u%kZ{Nab@evfB&J&f8!9$2@ID@iUIE zCS1?xN{wBv*f9uQqjRZ!1SloUZ1lHb8y|r z8ASg8dy~@Tj@HtnLMxgZEs|^ep&KujBTiyR4{p!)&Br^587!M z@+9~i%EOO}M*28Yp9mEDzQatnv9(CjFo=i}H3EPtiU0?;Ww_z;H~i$ko8j{3mGz5< zrwe#Vr9i1WQ-2(_c&>rBX$~m*sB(P)=8w%^&22aGpY-qLR628O+UKS9$>+3=>96cyYB$wVdZUDp z2I6Z@*#U%4Ck&)Se2>Xxkic9(zc-$Fm-Bz~fAa_O>;7@S@*7$=5qX=>`u*m)=PTGz zEPv5f<)ebqTU&IA5n+g#m=R5oo%hS(gB<5Pf5VS{`y^RA_gC8E&pe?KKC;{GueJ5B z<$s&*zcPHOsa)!oX%v27*B1F5XiDjtLN$h$Zh(9|V~RFlM^e?yNNL1LC!CKL+4=^- zx_Xjg2lGXI&i?>DsaNK8=C7gOKCfwi6`$yx*eXkrg>*w{JqrgrqcC`-_gzH34Kr=(@%wjw=tn#veR=t`i#|S^ijbXarGdd z^LGR0>~m_)Lmm#62ghsp2mjFXd|#dZW{E7VE^Y1F%Em833uw%!s+Hu_9Bi4sKQA#EAQsaWB&l0he_9tr)H5_vN~K_@L5OIBVXLv zM9eCyBY$}2r1)i7J(@B4C;B}j_NatLMzVeLtJuoL*s?_s#luoZZlFK4LkhXOiw-e{Z-wt}Oommw?9rIAi$vm$Z2U&)=9{ak19zywtiZ`aYj08%u<+o^j(#ZSe(yJ( z#pe&mPdFK_Z?)(&?=fH7n@f#Rgt~3Wj!HMcC91C_rr_>7=C}DrJS-eyk9T*xJAdS@ zJm`#u$KUQK>Ax#Hzvc@&==`<$i+GkAp|ep86Gd|zHa3($SAmg~uc|=g=BMw;$F^|; zbH_*YcQobfJcN2O0zKV(_GCU@m-Fw)VH->Q#+O~Pid&1RG}nz}j4OOL_HZQIqA1;) zl}=?xw(ybZG;6K%?sf9)EW_#-?%kh5{{T5#`KjfpEHv*kc>)c7SGFHny0Q{mfh31$ z*X^kwQY^pE+-%{_G8H%~{qu+nZ+TE%m58!YqA z4GKnp7G)jUo${&WF_4er@EnYIc!w9qcd+?O&Hixngtq#RmNeZvL(-zRZ&Om&X7#Qn znOlgGD;rkjKpKnc$iFO>Gb!?*K4peT#vJUQkbEEi069PT*XEBU{$btey7!t7oHWU< zVbZjH3V3Z`vWrobBQjknkCzb(ow*u=u{nMic!pfhpX_Rss18H%-t_HS*4OgWO7c~w zoV?Sg`8!h9t)hoQ@?MA=QPwZ6t}2Njo@VsYrk@ZTXUVJR&x(HMylR&zZEEk}C^E># z%Uq>F`0f7yInC#xc(y)O)2AzWs$8UU6IM~`FhnFS^aRx9dC0NlyLOT`ZSWKROlqE1 z@<*Jt-4o2VUU$$u-Q}q*+UmwRA(GcnvDT~vwo;?imlPxws3U%vTy;>$W3_HR&|LbE zuzcTp`M<~us(Cy9ao@|D4Ttz{_sm*lou8Nd=99T=Gc~Jf7eZJ8Smg}ce10|Um{%jH zB3ncY`E+ieG4TU(zFi)5ez!Vhi{8#Z#ZPLp>9?>=5Yu(bRJnGum+FqJ%Hir&jAcIT zs~)TpVn=ZIvYwv6C%Wu(eKYw(sOcJJonz&@Jqq(kn%)_0Eo`r$Fv%P?kwi-n`>+Aj za$Si#6Pet0ZNQc~*d3U+=be-~hM(lg<+&?yt$CJK5Q0^WorS*>AaP1@cO6GlnqJh* zL`51V{{Ta`?A$`lje^Z*%)?96(g!++o4n8F)wQ*~)IPALMQceCd1Sb4iBKgV&~^ak zHW|-R$BI%OkOlR+-`~4Du#Pbq#B(IqmF)ij|IzWa{5npr>PuwtLW@9NyK?~k(5RuM zcg|#FFfPczNde{0%Krc~dHY|s^7of4rIJ}ed%L9`tZ_o8RE8 zeazllxBRd2t%a4%o9Lcg^04);uI1#c^92%3H015g>D#>&Y%?D@Cv-!7yWf(2c=N8Q z=Wjgg-fS|=gH*hg>=ZEtA}n|SJ;1JILkNrnWx49w4I2#C%f5W`U7!rwwA02czelS| zYF6K3VvYKulUniXQ{$Mqdp`v3;x}!MuPiwi(LPQ80GyxIyrwlME_|_Rs70y>qh*G7 zghLz(5;)^h90gHbk5a_tSo=B{!Qnj7n^7#)#nBPw&-utLJI}wEdY_#2Z8qag(&viZ zY;-09awD*}NbTThC;(S@{vsElIjz-pMogJbKtaBa!%MG*EJGO_y8Z2+Jo$gj{3pMP z$5p*A9;vGFA61(7P-ZdOSVt0-Eet^XRN9sQ04FeKq|b+W3;S&T$1)n6Q?3(VpnkH9 zpGDEFrXQn{>I?gMUeZg=I^e)Bb(_;xf)7uLFr2hcUOnF{(iqFhGN7ghIxt@D_X)O_MZKRqq z1ip}rt2a=21^jTwL$1UJg_DSM-}DrnR)abH<~kr=;BD~fuc6a$~R1?bnceK+k zwGYeRH`rV2*MOo)ad7g)kr(9DYi8rffGM>G`DQNL!-_|WGT)ag`88zh9J2zYA3cqH z*r%0$C$H}O+Xk!otMwgH%SeVL(eEx~X_Q|`!dbNsMm1FUBm}BH)B>T7Zm{_fUt&U6(;m9gS%B#2!C+mfUoH~7-y}U7miWCT{ zIw%7+$8zb0%qP#9s#xiFEEp+R*{j;4$0ZS4wM@SPzcRen2bli=GW8EM>vy4iqb{V{ z73(8c(uz-j+$U143-OhFLXns=BOx*7U9K3MafwyXu5SE`r2cIFUdd>lwwruCvuOVS^NT)MwAHPr)--gu zyVWe><1EmuK3-)E@oqpo#VdsW0C;P-{)SQd55e>u&y>8E{sfO+^Ea05+UZ1>Q2NM% zNRJ@FgDq%Vf&ssOe5z20xmN5qkpbb_)~~5s={7dWX&=|*1Vre(nv)O|2HU9PUe(Bf zJ`oeUXQztZclnp5&#eA+epUWcDkE9PXQ$a}iWiduc>cZI%66etLBFkgLfh#nBBt+^hvh6d?lEfQ*(r z201241la(N;C}YJnK-e>prQSq=l|01{92Biu9UT139hx<=Z@P=8huc+F#$)Wziph5 zGnW|V4>xFM3f=l|`9t|eKQH{Mnk3C}W9Cg}G`sUQrjqe^s45|fKx!5~l?Sa(S&|%4 zu3hdQjCi<*!SE0K4WhrFbjo&Ikq}q#OT4joA8pp(qsnJiqUBqoj3iVjfAT(7UhtZbvYUH8M ziq(4c-*NZic15(8QzLIz9Vl`)yCSM(67ek=JZrs9-y?u4A=13VtLWTh)AehMP9c^x z9AAi)c)tMQf)X|*XmS}aI9))~t-dXc>(F zsq6sEDfV6o?M_rR*w$|1jmXjI_Jv^d>KURgAOo7D*UQ#$c z>zMflQ6pl9pGPkg;|SQ6{Lh+wCWqztW4qM+udm$cD|tFvXt3GcJVThEGs!|X3OO*X zIWWrSnlrOF1JGD(gz~`DWJgm)lC9_G9*r|t>ArCNIEfl7!*&(_0DSc;5*FWaKuvZv z%yXd7&tnQBogSz4IZ*9=TsN>m<$b~XFaH2Iv*b-jN%Dr1ta*kgPPcPz8s=EV6w4>Y zDO%TMG(qD`>-#rD4IUl{axWd*8u{yW26Fd4yPjo=GQ?3(5?eDsb&@ZJKj$vLGY^wL zEw$^o?nD>2s%@+&M>@565%grTZ5rxY@W+l}`2PUq{{SrwM@;go>l1pKZ=TlfEmF}K z^Mdl$MU_4lqN_4Ws$2Z3ZN6!99}6w_SLz|?Vf)NPR_{TyvL0aaN13m6NLI&C@?VrS zn-4VGkB;(NJDohXg>iD6jXgNvHtbmTL;FK7$YcN&)O_qX`07U9?fFUO`yV%cW_b$I zJ1c8ldr9*4qo`~5KBLCb#c^p2Hc-k5ATrzWdWr+c3U$eFQ6^l!Y9e+t`j^b#pMFmB z-mzm}VqVcKYtAZ!NbA*9~hYJ5_DfSdhek+jRoFZLsK zf6dR#%{tFe2>LdicOCAfc2Kc*^*NFG|# zE%bdV(#qLF!)p@52=-A*{XKJKCq@br%=)xCZkcs7l2H{{n)Jy)S!>BB;kW$d-{z6? zf1h-13IO*SCze)A?P(B(1~@^ILrU&Q0aSRAn3}A#dDnNn*miy$uC3>q3tIWh^2#bAFcV48VMI088EtSK`8?ghD$jS{*Ku1zDO_M2a zg+3efk!1Dd^Y=E#)x5619TP7i{&!pX=g!l?9j3SWdlrjfB#Eg;%k{eYZ4&T~HbBHo z>q?psH^Zm~IPPQW+ta`5Wr6@7LAvkR1#4}o`Qywso?V9OePoO7T7~VwEiR#`x!vV$ z>amZsdUfy_t^>o5-TK{xiO7E(pP-&a{JfUV+fDKwn>VLuKhwPPtVLCkqjOPegl-yo zQ19@@JV?xJa5-haAloU7QL*s-e~z#J)b0L%zt+Dc?5(`x=KlaYU+Y$yMDw32`7eZU z%RR-&Wr=2WW-g$e#cALG&Rc}Q-Sg<>35=tJL=N)&v-2SHrE5A zn)TvnO+_odB0&^XB({||JcEP;(LG^DA^8W1YK9V#n9w}pFQ z2;xxm!k@MAQlh>%n<}U+^&PDIL*BWTla z2M>+Z$xt`}QO1?!$m}=mkrE`cpcISN{#n)TWV#T2Qrbt3I@gI!yytO$=6^D3I>pW8sr8Ox0F25*GghR7xE>fWX~B=Eb9XR209MIdKbU@g^6rd0 zwKk#k-!FuC;;_4kE+PplBgm>)R0e3&kzS)P^Y&&r^dsD9z8a~HOD1JPq^^OXVT1oVlT^*;*@W5Pfh&7ywPO5xU=%M zv!`8YBJNAQGDsv>Qv~DpEEO86BaWnlN^e}$cq9RR33AT&-udFvJ2UMezPact{>j7mb>;dMZl#5fat)v+^>?B;a874a4y%G`b zd^h=z{{T2O`TqdqXfH;KqgeiEd3q-GlJ`O(H2|woQ)4+QoDi^~DYw`q2iJt z#TXILa-|Q<;x%y`*Yf3yYJOM0)1it>q>%)q^N+kt30gPKnRIhTMuSwb5FY9O064Mv zNk8T%=I(-%#zu?f=3P%zxsVP4q9f5#PTv#L=m#&1gu1x-E&|`s7nU`@%P%O~+UOR3 zWYaC?fKpgeP-^7Vl2>3!$$o1P^n=O9{GMrgj85$1TGp(FpC#>`>^ zU50U<;MSNi8P%&=ei>}{AartcnCo}u)0Zp>T9$6T zdgY%7S+ExMg8~u=T4_z)8k9&3<y?n7*qf@KP(cYfQYwSNjR|q%MXic5l?Z~BSAKtJP;KFiZEZG;VWte7*7-f zh+|p-LVoOth$-S?esBD<@)zbEi`eQ)r>a^-a#c>mBgmzf{fP$=8sxlG z_;2$I{(Z0cEv<`-pCW6T@8yo9<(ey7X@5xR)jzZKTe`BZvdA*n<&f)WG~Z!Lz?r8}DaySCOXw00W$}$AQ@F$AI$>kZ1GEnkC56 zwQFmg3i1~r;k||6Wh!VxlTm~6k(a1$84S{n&qB~YHZ8RH$eIM6BU;?WFdza2HXD64 z%sjoHX2EhX>o%g9T>f%Jc4ZLVNoaUFu!dOOUbFy!z_L@=c-q2gxcCnyr}Jgmj}=7xTC}$;yiw`P^{l;`>fKeKozJHiJ_*oQ-@Z$L2vfG> z;+E`c+x~JVUGfg6X$+dgw^~iu^tBB=&0`B%A9{h9ICS}8E;t?^F7#^iX|hD)lx+9+ zJXiCt%=Ug^*CCrtnP<0=48mnKo@WCk?6|SU8Qk4d^mrOc_U!EVUc|05RBUHWGSAR+TN~1XML!;U9f7A68?) zN$A^#%(i~zepdNYP4Xv{bnP0(5hUP>RsbDHK)w<~*-)4&Yma>(SFF8U*eDX-=y zp7g)V&napiVAWlu7Lm{;YV*$9Bq`jMJ7mD2Q5%+whl|`FH~w1rcUjeL^$$OJytLkA z^Bak7AU!PYhs6b?e#$Axc;(|A4j!F+%Zg_I0RPwe^0!D3075BFDo09=o98WVX9`** zn7L>4!mj1nh##v5B&b^6MRsIZ*1TGczQVmJk-JGWpXstn#2A9et5M)V1dJdtGEbV~ ziV@UuA3EVBh$=p@<{e$pKGi}005gG=tER6UOUKpqz z{SlBzZpWrbX2}_IvE0XoByxNcWB&j+`>Nhs{*{xE@t$A)e2H9_-n^i7>rH%z)XbDhi;BB{j9yE^R+DvF{`xnhR z-|78r?tY@{Z5#gpqr_W~NR(1Fr?41tL`b>#Vc^5w7$=(bIqbBz`m(n>pMp6T_IBJ4 zo@8x)L8CrXUS;t2oi1;l?t5#VVnHEg2f+8p5(#JiuYoKn!OK#vT0)fN)uY4k8Advf){&7$8{ykgGvU#HVK6cs? zgJMYdOzu7sf7Ki2x3u$-9ud{d(qpr4)N6T#s1=ZwrDP4TjTBU$YUYv=5f<#_JA8}g zy-t74Z#~;y%6a)0$@dPrC84QH{Y4KJxM9$weHY&{Ar2o=`j0Om`&?}E+lQxDy3T#EM=5PiXv^Hl2g4G#?5OdlQl diff --git a/learning/basic/keyboard/index.html b/learning/basic/keyboard/index.html deleted file mode 100644 index d6b0568..0000000 --- a/learning/basic/keyboard/index.html +++ /dev/null @@ -1,159 +0,0 @@ ---- -layout: default ---- -

            Keyboard

            - - - -

            Click on the image to give it focus and press the letter keys - -to create forms in time and space. Each key has a unique identifying - -number called it's ASCII value. These numbers can be used to position - -shapes in space.

            - - - -

            Original Processing.org Example: Keyboard
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int numChars = 26;
            -
            -color[] colors = new color[numChars];
            -
            -int keyIndex;
            -
            -float keyScale;
            -
            -int rectWidth;
            -
            -
            -
            -    
            -
            -void setup()
            -
            -{
            -
            -  size(200, 200);
            -
            -  noStroke();
            -
            -  background(0);
            -
            -  keyScale = 200/numChars-1.0;
            -
            -  rectWidth = width/4;
            -
            -}
            -
            -
            -
            -void draw()
            -
            -{ 
            -
            -  if(keyPressed) {
            -
            -    if(key >= 'A' && key <= 'z') {
            -
            -      if(key <= 'Z') {
            -
            -        keyIndex = key-'A';
            -
            -      } else {
            -
            -        keyIndex = key-'a';
            -
            -      }
            -
            -      fill(millis()%255);
            -
            -      float beginRect = rectWidth/2 + keyIndex*keyScale-rectWidth/2;
            -
            -      rect(beginRect, 0.0, rectWidth, height);
            -
            -    }
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/keyboardfunctions/index.html b/learning/basic/keyboardfunctions/index.html deleted file mode 100644 index e3c64b8..0000000 --- a/learning/basic/keyboardfunctions/index.html +++ /dev/null @@ -1,353 +0,0 @@ ---- -layout: default ---- -

            KeyboardFunctions

            - - - -

            Modified from code by Martin. - -Original 'Color Typewriter' concept by John Maeda. - - - -Click on the window to give it focus and press the letter keys to type colors. - -The keyboard function keyPressed() is called whenever - -a key is pressed. keyReleased() is another keyboard - -function that is called when a key is released.

            - - - -

            Original Processing.org Example: KeyboardFunctions
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int max_height = 20;
            -
            -int min_height = 10;
            -
            -int letter_height = max_height; // Height of the letters
            -
            -int letter_width = 10;          // Width of the letter
            -
            -
            -
            -int x = -letter_width;          // X position of the letters
            -
            -int y = 0;                      // Y position of the letters
            -
            -
            -
            -boolean newletter;              
            -
            -
            -
            -int numChars = 26;      // There are 26 characters in the alphabet
            -
            -color[] colors = new color[numChars];
            -
            -
            -
            -void setup()
            -
            -{
            -
            -  size(200, 200);
            -
            -  noStroke();
            -
            -  colorMode(RGB, numChars);
            -
            -  background(numChars/2);
            -
            -  // Set a gray value for each key
            -
            -  for(int i=0; i<numChars; i++) {
            -
            -    colors[i] = color(i, i, i);    
            -
            -  }
            -
            -}
            -
            -
            -
            -void draw()
            -
            -{
            -
            -  if(newletter == true) {
            -
            -    // Draw the "letter"
            -
            -    int y_pos;
            -
            -    if (letter_height == max_height) {
            -
            -      y_pos = y;
            -
            -      rect( x, y_pos, letter_width, letter_height );
            -
            -    } else {
            -
            -      y_pos = y + min_height;
            -
            -      rect( x, y_pos, letter_width, letter_height );
            -
            -      fill(numChars/2);
            -
            -      rect( x, y_pos-min_height, letter_width, letter_height );
            -
            -    }
            -
            -    newletter = false;
            -
            -  }
            -
            -}
            -
            -
            -
            -void keyPressed()
            -
            -{
            -
            -  // if the key is between 'A'(65) and 'z'(122)
            -
            -  if( key >= 'A' && key <= 'z') {
            -
            -    int keyIndex;
            -
            -    if(key <= 'Z') {
            -
            -      keyIndex = key-'A';
            -
            -      letter_height = max_height;
            -
            -      fill(colors[key-'A']);
            -
            -    } else {
            -
            -      keyIndex = key-'a';
            -
            -      letter_height = min_height;
            -
            -      fill(colors[key-'a']);
            -
            -    }
            -
            -  } else {
            -
            -    fill(0);
            -
            -    letter_height = 10;
            -
            -  }
            -
            -
            -
            -  newletter = true;
            -
            -
            -
            -  // Update the "letter" position
            -
            -  x = ( x + letter_width ); 
            -
            -
            -
            -  // Wrap horizontally
            -
            -  if (x > width - letter_width) {
            -
            -    x = 0;
            -
            -    y+= max_height;
            -
            -  }
            -
            -
            -
            -  // Wrap vertically
            -
            -  if( y > height - letter_height) {
            -
            -    y = 0;      // reset y to 0
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/letters/index.html b/learning/basic/letters/index.html deleted file mode 100644 index 60c4bcf..0000000 --- a/learning/basic/letters/index.html +++ /dev/null @@ -1,243 +0,0 @@ ---- -layout: default ---- -

            Letters

            - - - -

            Drawing letters to the screen in Processing - -uses a technology developed in the mid 1990s - -at the Visual Language Workshop at the MIT - -Media Laboratory. It is a closed system, - -but we have supplied a number of fonts - -located in the "font" directory in the main - -"processing" directory. We expect to change - -the Processing font technology in the future.

            - - - -

            Original Processing.org Example: Letters
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -background(0);
            -
            -
            -
            -// Load the font. Fonts are located within the 
            -
            -// main Processing directory/folder and they
            -
            -// must be placed within the data directory
            -
            -// of your sketch for them to load
            -
            -PFont fontA = loadFont("Courier New");
            -
            -textFont(fontA, 36);
            -
            -textAlign(CENTER);
            -
            -
            -
            -// Set the gray value of the letters
            -
            -fill(255);
            -
            -
            -
            -// Set the left and top margin
            -
            -int margin = 6;
            -
            -int gap = 30;
            -
            -translate(margin*1.5, margin*2);
            -
            -
            -
            -// Create a matrix of letterforms
            -
            -int counter = 0;
            -
            -for(int i=0; i<margin; i++) {
            -
            -  for(int j=0; j<margin; j++) {
            -
            -    char letter;
            -
            -    
            -
            -    // Select the letter
            -
            -    int count = 65+(i*margin)+j;
            -
            -    if(count <= 90) {
            -
            -      letter = char(65+counter);
            -
            -      if(letter == 'A' || letter == 'E' || letter == 'I' || 
            -
            -         letter == 'O' || letter == 'U') {
            -
            -           fill(204, 204, 0);
            -
            -      } else {
            -
            -        fill(255);
            -
            -      }
            -
            -    } else {
            -
            -      fill(153);
            -
            -      letter = char(48+counter);
            -
            -    }
            -
            - 
            -
            -    // Draw the letter to the screen
            -
            -    text(letter, 15+j*gap, 20+i*gap);
            -
            - 
            -
            -    // Increment the counter
            -
            -    counter++;
            -
            -    if(counter >= 26) {
            -
            -      counter = 0;
            -
            -    }
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/lineargradient/index.html b/learning/basic/lineargradient/index.html deleted file mode 100644 index 2e5d159..0000000 --- a/learning/basic/lineargradient/index.html +++ /dev/null @@ -1,289 +0,0 @@ ---- -layout: default ---- -

            LinearGradient

            - - - -

            by Ira Greenberg. - - - -Using the convenient red(), green() - -and blue() component functions, - -generate some linear gradients.

            - - - -

            Original Processing.org Example: LinearGradient
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -// constants
            -
            -int Y_AXIS = 1;
            -
            -int X_AXIS = 2;
            -
            -
            -
            -void setup(){
            -
            -  size(200, 200);
            -
            -
            -
            -  // create some gradients
            -
            -  // background
            -
            -  color b1 = color(190, 190, 190);
            -
            -  color b2 = color(20, 20, 20);
            -
            -  setGradient(0, 0, width, height, b1, b2, Y_AXIS);
            -
            -  //center squares
            -
            -  color c1 = color(255, 120, 0);
            -
            -  color c2 = color(10, 45, 255);
            -
            -  color c3 = color(10, 255, 15);
            -
            -  color c4 = color(125, 2, 140);
            -
            -  color c5 = color(255, 255, 0);
            -
            -  color c6 = color(25, 255, 200);
            -
            -  setGradient(25, 25, 75, 75, c1, c2, Y_AXIS);
            -
            -  setGradient(100, 25, 75, 75, c3, c4, X_AXIS);
            -
            -  setGradient(25, 100, 75, 75, c2, c5, X_AXIS);
            -
            -  setGradient(100, 100, 75, 75, c4, c6, Y_AXIS);
            -
            -}
            -
            -
            -
            -void setGradient(int x, int y, float w, float h, color c1, color c2, int axis ){
            -
            -  // calculate differences between color components 
            -
            -  float deltaR = red(c2)-red(c1);
            -
            -  float deltaG = green(c2)-green(c1);
            -
            -  float deltaB = blue(c2)-blue(c1);
            -
            -
            -
            -  // choose axis
            -
            -  if(axis == Y_AXIS){
            -
            -    /*nested for loops set pixels
            -
            -     in a basic table structure */
            -
            -    // column
            -
            -    for (int i=x; i<=(x+w); i++){
            -
            -      // row
            -
            -      for (int j = y; j<=(y+h); j++){
            -
            -        color c = color(
            -
            -        (red(c1)+(j-y)*(deltaR/h)),
            -
            -        (green(c1)+(j-y)*(deltaG/h)),
            -
            -        (blue(c1)+(j-y)*(deltaB/h)) 
            -
            -          );
            -
            -        set(i, j, c);
            -
            -      }
            -
            -    }  
            -
            -  }  
            -
            -  else if(axis == X_AXIS){
            -
            -    // column 
            -
            -    for (int i=y; i<=(y+h); i++){
            -
            -      // row
            -
            -      for (int j = x; j<=(x+w); j++){
            -
            -        color c = color(
            -
            -        (red(c1)+(j-x)*(deltaR/h)),
            -
            -        (green(c1)+(j-x)*(deltaG/h)),
            -
            -        (blue(c1)+(j-x)*(deltaB/h)) 
            -
            -          );
            -
            -        set(j, i, c);
            -
            -      }
            -
            -    }  
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/loadingimages/index.html b/learning/basic/loadingimages/index.html deleted file mode 100644 index 5a32a8a..0000000 --- a/learning/basic/loadingimages/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default ---- -

            LoadingImages

            - - - -

            Loading a recent image from the US National Weather Service. - -Notice the date in the upper left corner of the image. - -Processing applications can only load images from the network - -while running in the Processing environment. This example will - -not run in a web broswer and will only work when the computer - -is connected to the Internet.

            - - - -

            Original Processing.org Example: LoadingImages
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -PImage img1;
            -
            -img1 = loadImage("http://iwin.nws.noaa.gov/iwin/images/ecir.jpg");
            -
            -image(img1, 0, 0);
            - - - - - diff --git a/learning/basic/logicaloperators/index.html b/learning/basic/logicaloperators/index.html deleted file mode 100644 index 796ff67..0000000 --- a/learning/basic/logicaloperators/index.html +++ /dev/null @@ -1,169 +0,0 @@ ---- -layout: default ---- -

            LogicalOperators

            - - - -

            The logical operators for AND (&&) and OR (||) are used to - -combine simple relational statements into more complex expressions. - -The NOT (!) operator is used to negate a boolean statement.

            - - - -

            Original Processing.org Example: LogicalOperators
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -background(126);
            -
            -
            -
            -boolean op = false;
            -
            -
            -
            -for(int i=5; i<=195; i+=5) {
            -
            -  // Logical AND
            -
            -  stroke(0);
            -
            -  if((i > 35) && (i < 100)) {
            -
            -    line(5, i, 95, i);
            -
            -    op = false;
            -
            -  }
            -
            -  
            -
            -  // Logical OR
            -
            -  stroke(76);
            -
            -  if((i <= 35) || (i >= 100)) {
            -
            -    line(105, i, 195, i);
            -
            -    op = true;
            -
            -  }
            -
            -  
            -
            -  // Testing if a boolean value is "true"
            -
            -  // The expression "if(op)" is equivalent to "if(op == true)"
            -
            -  if(op) {
            -
            -    stroke(0);
            -
            -    point(width/2, i);
            -
            -  }
            -
            -    
            -
            -  // Testing if a boolean value is "false"
            -
            -  // The expression "if(!op)" is equivalent to "if(op == false)"
            -
            -  if(!op) {
            -
            -    stroke(255);
            -
            -    point(width/4, i);
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/loop/index.html b/learning/basic/loop/index.html deleted file mode 100644 index c163cac..0000000 --- a/learning/basic/loop/index.html +++ /dev/null @@ -1,157 +0,0 @@ ---- -layout: default ---- -

            Loop

            - - - -

            The loop() function causes draw() to execute - -continuously. If noLoop is called in setup() - -the draw() is only executed once. In this example - -click the mouse to execute loop(), which will - -cause the draw() the execute continuously.

            - - - -

            Original Processing.org Example: Loop
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -// The statements in the setup() function 
            -
            -// execute once when the program begins
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);  // Size should be the first statement
            -
            -  stroke(255);     // Set stroke color to white
            -
            -  noLoop();
            -
            -}
            -
            -
            -
            -float y = 100;
            -
            -
            -
            -// The statements in draw() are run until the 
            -
            -// program is stopped. Each statement is run in 
            -
            -// sequence and after the last line is read, the first 
            -
            -// line is run again.
            -
            -void draw() 
            -
            -{ 
            -
            -  background(0);   // Set the background to black
            -
            -  line(0, y, width, y);  
            -
            -  
            -
            -  y = y - 1; 
            -
            -  if (y < 0) { 
            -
            -    y = height; 
            -
            -  } 
            -
            -} 
            -
            -
            -
            -void mousePressed() 
            -
            -{
            -
            -  loop();
            -
            -}
            - - - - - diff --git a/learning/basic/milliseconds/index.html b/learning/basic/milliseconds/index.html deleted file mode 100644 index 99062ca..0000000 --- a/learning/basic/milliseconds/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: default ---- -

            Milliseconds

            - - - -

            A millisecond is 1/1000 of a second. - -Processing keeps track of the number of milliseconds a program has run. - -By modifying this number with the modulo(%) operator, - -different patterns in time are created.

            - - - -

            Original Processing.org Example: Milliseconds
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float scale;
            -
            -
            -
            -void setup()
            -
            -{
            -
            -  size(200, 200);
            -
            -  noStroke();
            -
            -  scale = width/10;
            -
            -}
            -
            -
            -
            -void draw()
            -
            -{ 
            -
            -  for(int i=0; i<scale; i++) {
            -
            -    colorMode(RGB, (i+1) * scale * 10);
            -
            -    fill(millis()%((i+1) * scale * 10) );
            -
            -    rect(i*scale, 0, scale, height);
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/modulo/index.html b/learning/basic/modulo/index.html deleted file mode 100644 index 1410465..0000000 --- a/learning/basic/modulo/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: default ---- -

            Modulo

            - - - -

            The modulo operator (%) returns the remainder of a number - -divided by another. As in this example, it is often used - -to keep numerical values within a set range. - - - -Created 12 January 2003.

            - - - -

            Original Processing.org Example: Modulo
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int num = 20;
            -
            -float c;
            -
            -
            -
            -void setup()
            -
            -{
            -
            -  size(200,200);
            -
            -  fill(255);
            -
            -  frameRate(30);
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{ 
            -
            -  background(0);
            -
            -  c+=0.1;
            -
            -  for(int i=1; i<height/num; i++) { 
            -
            -    float x = (c%i)*i*i;
            -
            -    stroke(102);
            -
            -    line(0, i*num, x, i*num);
            -
            -    noStroke();
            -
            -    rect(x, i*num-num/2, 8, num);
            -
            -  } 
            -
            -}
            - - - - - diff --git a/learning/basic/mouse1d/index.html b/learning/basic/mouse1d/index.html deleted file mode 100644 index 9f20e55..0000000 --- a/learning/basic/mouse1d/index.html +++ /dev/null @@ -1,201 +0,0 @@ ---- -layout: default ---- -

            Mouse1D

            - - - -

            Move the mouse left and right to shift the balance. - -The "mouseX" variable is used to control both the - -size and color of the rectangles.

            - - - -

            Original Processing.org Example: Mouse1D
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int gx = 15;
            -
            -int gy = 35;
            -
            -float leftColor = 0.0;
            -
            -float rightColor = 0.0;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  colorMode(RGB, 1.0);
            -
            -  noStroke();
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{
            -
            -  background(0.0);
            -
            -  update(mouseX); 
            -
            -  fill(0.0, leftColor + 0.4, leftColor + 0.6); 
            -
            -  rect(width/4-gx, width/2-gx, gx*2, gx*2); 
            -
            -  fill(0.0, rightColor + 0.2, rightColor + 0.4); 
            -
            -  rect(width/1.33-gy, width/2-gy, gy*2, gy*2);
            -
            -}
            -
            -
            -
            -void update(int x) 
            -
            -{
            -
            -  leftColor = -0.002 * x/2 + 0.06;
            -
            -  rightColor =  0.002 * x/2 + 0.06;
            -
            -	
            -
            -  gx = x/2;
            -
            -  gy = 100-x/2;
            -
            -
            -
            -  if (gx < 10) {
            -
            -    gx = 10;
            -
            -  } else if (gx > 90) {
            -
            -    gx = 90;
            -
            -  }
            -
            -
            -
            -  if (gy > 90) {
            -
            -    gy = 90;
            -
            -  } else if (gy < 10) {
            -
            -    gy = 10;
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/mouse2d/index.html b/learning/basic/mouse2d/index.html deleted file mode 100644 index cef21d3..0000000 --- a/learning/basic/mouse2d/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: default ---- -

            Mouse2D

            - - - -

            Moving the mouse changes the position and size of each box.

            - - - -

            Original Processing.org Example: Mouse2D
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200); 
            -
            -  noStroke();
            -
            -  colorMode(RGB, 255, 255, 255, 100);
            -
            -  rectMode(CENTER);
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{   
            -
            -  background(51); 
            -
            -  fill(255, 80);
            -
            -  rect(mouseX, height/2, mouseY/2+10, mouseY/2+10);
            -
            -  fill(255, 80);
            -
            -  rect(width-mouseX, height/2, ((height-mouseY)/2)+10, ((height-mouseY)/2)+10);
            -
            -}
            - - - - - diff --git a/learning/basic/mousefunctions/index.html b/learning/basic/mousefunctions/index.html deleted file mode 100644 index 268bc5b..0000000 --- a/learning/basic/mousefunctions/index.html +++ /dev/null @@ -1,273 +0,0 @@ ---- -layout: default ---- -

            MouseFunctions

            - - - -

            Click on the box and drag it across the screen.

            - - - -

            Original Processing.org Example: MouseFunctions
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float bx;
            -
            -float by;
            -
            -int bs = 20;
            -
            -boolean bover = false;
            -
            -boolean locked = false;
            -
            -float bdifx = 0.0; 
            -
            -float bdify = 0.0; 
            -
            -
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  bx = width/2.0;
            -
            -  by = height/2.0;
            -
            -  rectMode(CENTER_RADIUS);  
            -
            -}
            -
            -
            -
            -void draw() 
            -
            -{ 
            -
            -  background(0);
            -
            -  
            -
            -  // Test if the cursor is over the box 
            -
            -  if (mouseX > bx-bs && mouseX < bx+bs && 
            -
            -      mouseY > by-bs && mouseY < by+bs) {
            -
            -    bover = true;  
            -
            -    if(!locked) { 
            -
            -      stroke(255); 
            -
            -      fill(153);
            -
            -    } 
            -
            -  } else {
            -
            -    stroke(153);
            -
            -    fill(153);
            -
            -    bover = false;
            -
            -  }
            -
            -  
            -
            -  // Draw the box
            -
            -  rect(bx, by, bs, bs);
            -
            -}
            -
            -
            -
            -void mousePressed() {
            -
            -  if(bover) { 
            -
            -    locked = true; 
            -
            -    fill(255, 255, 255);
            -
            -  } else {
            -
            -    locked = false;
            -
            -  }
            -
            -  bdifx = mouseX-bx; 
            -
            -  bdify = mouseY-by; 
            -
            -
            -
            -}
            -
            -
            -
            -void mouseDragged() {
            -
            -  if(locked) {
            -
            -    bx = mouseX-bdifx; 
            -
            -    by = mouseY-bdify; 
            -
            -  }
            -
            -}
            -
            -
            -
            -void mouseReleased() {
            -
            -  locked = false;
            -
            -}
            - - - - - diff --git a/learning/basic/mousepress/index.html b/learning/basic/mousepress/index.html deleted file mode 100644 index 61018d4..0000000 --- a/learning/basic/mousepress/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: default ---- -

            MousePress

            - - - -

            Move the mouse to position the shape. - -Press the mouse button to invert the color.

            - - - -

            Original Processing.org Example: MousePress
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -void setup() {
            -
            -  size(200, 200);
            -
            -  fill(126);
            -
            -  background(102);
            -
            -}
            -
            -
            -
            -void draw() {
            -
            -  if(mousePressed) {
            -
            -    stroke(255);
            -
            -  } else {
            -
            -    stroke(0);
            -
            -  }
            -
            -  line(mouseX-66, mouseY, mouseX+66, mouseY);
            -
            -  line(mouseX, mouseY-66, mouseX, mouseY+66); 
            -
            -}
            - - - - - diff --git a/learning/basic/mousesignals/index.html b/learning/basic/mousesignals/index.html deleted file mode 100644 index ac0b909..0000000 --- a/learning/basic/mousesignals/index.html +++ /dev/null @@ -1,215 +0,0 @@ ---- -layout: default ---- -

            MouseSignals

            - - - -

            Move and click the mouse to generate signals. - -The top row is the signal from "mouseX", - -the middle row is the signal from "mouseY", - -and the bottom row is the signal from "mousePressed".

            - - - -

            Original Processing.org Example: MouseSignals
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int[] xvals;
            -
            -int[] yvals;
            -
            -int[] bvals;
            -
            -
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  xvals = new int[width];
            -
            -  yvals = new int[width];
            -
            -  bvals = new int[width];
            -
            -}
            -
            -
            -
            -int arrayindex = 0;
            -
            -
            -
            -void draw()
            -
            -{
            -
            -  background(102);
            -
            -  
            -
            -  for(int i=1; i<width; i++) { 
            -
            -    xvals[i-1] = xvals[i]; 
            -
            -    yvals[i-1] = yvals[i];
            -
            -    bvals[i-1] = bvals[i];
            -
            -  } 
            -
            -  // Add the new values to the end of the array 
            -
            -  xvals[width-1] = mouseX; 
            -
            -  yvals[width-1] = mouseY;
            -
            -  if(mousePressed) {
            -
            -    bvals[width-1] = 0;
            -
            -  } else {
            -
            -    bvals[width-1] = 255;
            -
            -  }
            -
            -  
            -
            -  fill(255);
            -
            -  noStroke();
            -
            -  rect(0, height/3, width, height/3+1);
            -
            -
            -
            -  for(int i=1; i<width; i++) {
            -
            -    stroke(255);
            -
            -    point(i, xvals[i]/3);
            -
            -    stroke(0);
            -
            -    point(i, height/3+yvals[i]/3);
            -
            -    stroke(255);
            -
            -    line(i, 2*height/3+bvals[i]/3, i, (2*height/3+bvals[i-1]/3));
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/multipleconstructors/index.html b/learning/basic/multipleconstructors/index.html deleted file mode 100644 index 26839f3..0000000 --- a/learning/basic/multipleconstructors/index.html +++ /dev/null @@ -1,187 +0,0 @@ ---- -layout: default ---- -

            MultipleConstructors

            - - - -

            A class can have multiple constructors that assign the fields in different ways. - -Sometimes it's beneficial to specify every aspect of an object's data by assigning - -parameters to the fields, but other times it might be appropriate to define only - -one or a few.

            - - - -

            Original Processing.org Example: MultipleConstructors
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -Spot sp1, sp2;
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);
            -
            -  background(204);
            -
            -  smooth();
            -
            -  noLoop();
            -
            -  // Run the constructor without parameters
            -
            -  sp1 = new Spot();
            -
            -  // Run the constructor with three parameters
            -
            -  sp2 = new Spot(122, 100, 40);
            -
            -}
            -
            -
            -
            -void draw() {
            -
            -  sp1.display();
            -
            -  sp2.display();
            -
            -}
            -
            -
            -
            -class Spot {
            -
            -  float x, y, radius;
            -
            -  // First version of the Spot constructor;
            -
            -  // the fields are assigned default values
            -
            -  Spot() {
            -
            -    x = 66;
            -
            -    y = 100;
            -
            -    radius = 16;
            -
            -  }
            -
            -  // Second version of the Spot constructor;
            -
            -  // the fields are assigned with parameters
            -
            -  Spot(float xpos, float ypos, float r) {
            -
            -    x = xpos;
            -
            -    y = ypos;
            -
            -    radius = r;
            -
            -  }
            -
            -  void display() {
            -
            -    ellipse(x, y, radius*2, radius*2);
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/neighborhood/index.html b/learning/basic/neighborhood/index.html deleted file mode 100644 index f699b2c..0000000 --- a/learning/basic/neighborhood/index.html +++ /dev/null @@ -1,1199 +0,0 @@ ---- -layout: default ---- -

            Neighborhood

            - - - -

            By Ira Greenberg - - - -Draw a neighborhood of houses using - -Door, Window, Roof and House classes. - -Good example of class composition, with component - -Door, Window, Roof class references encapsulated - -within House class. This arrangement allows - -House class to handle placement and sizing of - -its components, while still allowing user - -customization of the individual components.

            - - - -

            Original Processing.org Example: Neighborhood
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -void setup(){
            -
            -  size(200, 200);
            -
            -  background(190);
            -
            -  smooth();
            -
            -  // Ground plane
            -
            -  int groundHeight = 10;
            -
            -  fill(0);
            -
            -  rect(0, height-groundHeight, width, groundHeight);
            -
            -  fill(255);
            -
            -  
            -
            -  // Center the houses
            -
            -  translate(12, 0);
            -
            -
            -
            -  // Houses
            -
            -  Door door1 = new Door(20, 40);
            -
            -  Window window1 = new Window(50, 62, false, Window.DOUBLE);
            -
            -  Roof roof1 = new Roof(Roof.DOME);
            -
            -  House house1 = new House(75, 75, door1, window1, roof1, House.MIDDLE_DOOR);
            -
            -  house1.drawHouse(0, height-groundHeight-house1.h, true);
            -
            -
            -
            -  Door door2 = new Door(20, 40);
            -
            -  Window window2 = new Window(50, 62, true, Window.QUAD);
            -
            -  Roof roof2 = new Roof(Roof.GAMBREL);
            -
            -  House house2 = new House(100, 60, door2, window2, roof2, House.LEFT_DOOR);
            -
            -  house2.drawHouse(house1.x + house1.w, height-groundHeight-house2.h, true);
            -
            -}
            -
            -
            -
            -class Door{
            -
            -  //door properties
            -
            -  int x;
            -
            -  int y;
            -
            -  int w;
            -
            -  int h;
            -
            -
            -
            -  // for knob
            -
            -  int knobLoc = 1;
            -
            -  //constants
            -
            -  final static int RT = 0;
            -
            -  final static int LFT = 1;
            -
            -
            -
            -  // constructor
            -
            -  Door(int w, int h){
            -
            -    this.w = w;
            -
            -    this.h = h;
            -
            -  }
            -
            -
            -
            -  // draw the door
            -
            -  void drawDoor(int x, int y) {
            -
            -    rect(x, y, w, h);
            -
            -    int knobsize = w/10;
            -
            -    if (knobLoc == 0){
            -
            -      //right side
            -
            -      ellipse(x+w-knobsize, y+h/2, knobsize, knobsize);
            -
            -    }
            -
            -    else {
            -
            -      //left side
            -
            -      ellipse(x+knobsize, y+h/2, knobsize, knobsize);
            -
            -    }
            -
            -  }
            -
            -
            -
            -  // set knob position
            -
            -  void setKnob(int knobLoc){
            -
            -    this. knobLoc = knobLoc;
            -
            -  }
            -
            -}
            -
            -
            -
            -class Window{
            -
            -  //window properties
            -
            -  int x;
            -
            -  int y;
            -
            -  int w;
            -
            -  int h;
            -
            -
            -
            -  // customized features
            -
            -  boolean hasSash = false;
            -
            -
            -
            -  // single, double, quad pane
            -
            -  int style = 0;
            -
            -  //constants
            -
            -  final static int SINGLE = 0;
            -
            -  final static int DOUBLE = 1;
            -
            -  final static int QUAD = 2;
            -
            -
            -
            -  // constructor 1
            -
            -  Window(int w, int h){
            -
            -    this.w = w;
            -
            -    this.h = h;
            -
            -  }
            -
            -  // constructor 2
            -
            -  Window(int w, int h, int style){
            -
            -    this.w = w;
            -
            -    this.h = h;
            -
            -    this.style = style;
            -
            -  }
            -
            -  // constructor 3
            -
            -  Window(int w, int h, boolean hasSash, int style){
            -
            -    this.w = w;
            -
            -    this.h = h;
            -
            -    this.hasSash = hasSash;
            -
            -    this.style = style;
            -
            -  }
            -
            -
            -
            -  // draw the window
            -
            -  void drawWindow(int x, int y) {
            -
            -    //local variables
            -
            -    int margin = 0;
            -
            -    int winHt = 0;
            -
            -    int winWdth = 0;
            -
            -
            -
            -    if (hasSash){
            -
            -      margin = w/15;
            -
            -    }
            -
            -
            -
            -    switch(style){
            -
            -    case 0:
            -
            -      //outer window (sash)
            -
            -      rect(x, y, w, h);
            -
            -      //inner window
            -
            -      rect(x+margin, y+margin, w-margin*2, h-margin*2);
            -
            -      break;
            -
            -    case 1:
            -
            -      winHt = (h-margin*3)/2;
            -
            -      //outer window (sash)
            -
            -      rect(x, y, w, h);
            -
            -      //inner window (top)
            -
            -      rect(x+margin, y+margin, w-margin*2, winHt);
            -
            -      //inner windows (bottom)
            -
            -      rect(x+margin, y+winHt+margin*2, w-margin*2, winHt);
            -
            -      break;
            -
            -    case 2:
            -
            -      winWdth = (w-margin*3)/2;
            -
            -      winHt = (h-margin*3)/2;
            -
            -      //outer window (sash)
            -
            -      rect(x, y, w, h);
            -
            -      //inner window (top-left)
            -
            -      rect(x+margin, y+margin, winWdth, winHt);
            -
            -      //inner window (top-right)
            -
            -      rect(x+winWdth+margin*2,  y+margin, winWdth, winHt);
            -
            -      //inner windows (bottom-left)
            -
            -      rect(x+margin, y+winHt+margin*2, winWdth, winHt);
            -
            -      //inner windows (bottom-right)
            -
            -      rect(x+winWdth+margin*2,  y+winHt+margin*2, winWdth, winHt);
            -
            -      break;
            -
            -    }
            -
            -  }
            -
            -
            -
            -  // set window style (number of panes)
            -
            -  void setStyle(int style){
            -
            -    this.style = style;
            -
            -  }
            -
            -}
            -
            -
            -
            -class Roof{
            -
            -  //roof properties
            -
            -  int x;
            -
            -  int y;
            -
            -  int w;
            -
            -  int h;
            -
            -
            -
            -  // roof style
            -
            -  int style = 0;
            -
            -  //constants  
            -
            -  final static int CATHEDRAL = 0;
            -
            -  final static int GAMBREL = 1;
            -
            -  final static int DOME = 2;
            -
            -
            -
            -  // default constructor
            -
            -  Roof(){
            -
            -  }
            -
            -   
            -
            -   // constructor 2
            -
            -   Roof(int style){
            -
            -    this.style = style;
            -
            -  }
            -
            -
            -
            -  // draw the roof
            -
            -  void drawRoof(int x, int y, int w, int h) {
            -
            -    switch(style){
            -
            -    case 0:
            -
            -      beginShape();
            -
            -      vertex(x, y);
            -
            -      vertex(x+w/2, y-h/3);
            -
            -      vertex(x+w, y);
            -
            -      endShape(CLOSE);
            -
            -      break;
            -
            -    case 1:
            -
            -     beginShape();
            -
            -      vertex(x, y);
            -
            -      vertex(x+w/7, y-h/4);
            -
            -      vertex(x+w/2, y-h/2);
            -
            -      vertex(x+(w-w/7), y-h/4);
            -
            -      vertex(x+w, y);
            -
            -      endShape(CLOSE);
            -
            -      break;
            -
            -    case 2:
            -
            -      ellipseMode(CORNER);
            -
            -      arc(x, y-h/2, w, h, PI, TWO_PI);
            -
            -      line(x, y, x+w, y);
            -
            -      break;
            -
            -    }
            -
            -
            -
            -  }
            -
            -
            -
            -  // set roof style
            -
            -  void setStyle(int style){
            -
            -    this.style = style;
            -
            -  }
            -
            -}
            -
            -
            -
            -class House{
            -
            -  //house properties
            -
            -  int x;
            -
            -  int y;
            -
            -  int w;
            -
            -  int h;
            -
            -
            -
            -  //component reference variables
            -
            -  Door door;
            -
            -  Window window;
            -
            -  Roof roof;
            -
            -
            -
            -  //optional autosize variable
            -
            -  boolean AutoSizeComponents = false;
            -
            -
            -
            -  //door placement
            -
            -  int doorLoc = 0;
            -
            -  //constants
            -
            -  final static int MIDDLE_DOOR = 0;
            -
            -  final static int LEFT_DOOR = 1;
            -
            -  final static int RIGHT_DOOR = 2;
            -
            -
            -
            -  //constructor
            -
            -  House(int w, int h, Door door, Window window, Roof roof, int doorLoc) {
            -
            -    this.w = w;
            -
            -    this.h = h;
            -
            -    this.door = door;
            -
            -    this.window = window;
            -
            -    this.roof = roof;
            -
            -    this.doorLoc = doorLoc;
            -
            -  }
            -
            -
            -
            -  void drawHouse(int x, int y, boolean AutoSizeComponents) {
            -
            -    this.x = x;
            -
            -    this.y =y;
            -
            -    this.AutoSizeComponents = AutoSizeComponents;
            -
            -
            -
            -    //automatically sizes doors and windows
            -
            -    if(AutoSizeComponents){
            -
            -      //autosize door
            -
            -      door.h = h/4;
            -
            -      door.w = door.h/2;
            -
            -
            -
            -      //autosize windows
            -
            -      window.h = h/3;
            -
            -      window.w = window.h/2;
            -
            -
            -
            -    }
            -
            -    // draw bldg block
            -
            -    rect(x, y, w, h);
            -
            -
            -
            -    // draw door
            -
            -    switch(doorLoc){
            -
            -    case 0:
            -
            -      door.drawDoor(x+w/2-door.w/2, y+h-door.h);
            -
            -      break;
            -
            -    case 1:
            -
            -      door.drawDoor(x+w/8, y+h-door.h);
            -
            -      break;
            -
            -    case 2:
            -
            -      door.drawDoor(x+w-w/8-door.w,  y+h-door.h);
            -
            -      break;
            -
            -    }
            -
            -
            -
            -    // draw windows
            -
            -    int windowMargin = (w-window.w*2)/3;
            -
            -    window.drawWindow(x+windowMargin, y+h/6);
            -
            -    window.drawWindow(x+windowMargin*2+window.w, y+h/6);
            -
            -
            -
            -    // draw roof
            -
            -    roof.drawRoof(x, y, w, h);
            -
            -  }
            -
            -
            -
            -  // catch drawHouse method without boolean argument
            -
            -  void drawHouse(int x, int y){
            -
            -    // recall with required 3rd argument
            -
            -    drawHouse(x, y, false);
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/noise1d/index.html b/learning/basic/noise1d/index.html deleted file mode 100644 index f1085b9..0000000 --- a/learning/basic/noise1d/index.html +++ /dev/null @@ -1,145 +0,0 @@ ---- -layout: default ---- -

            Noise1D

            - - - -

            Using 1D Perlin Noise to assign location.

            - - - -

            Original Processing.org Example: Noise1D
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float xoff = 0.0;
            -
            -float xincrement = 0.01; 
            -
            -
            -
            -void setup() {
            -
            -  size(200,200);
            -
            -  background(0);
            -
            -  frameRate(30);
            -
            -  smooth();
            -
            -  noStroke();
            -
            -}
            -
            -
            -
            -void draw()
            -
            -{
            -
            -  // Create an alpha blended background
            -
            -  fill(0, 10);
            -
            -  rect(0,0,width,height);
            -
            -  
            -
            -  //float n = random(0,width);  // Try this line instead of noise
            -
            -  
            -
            -  // Get a noise value based on xoff and scale it according to the window's width
            -
            -  float n = noise(xoff)*width;
            -
            -  
            -
            -  // With each cycle, increment xoff
            -
            -  xoff += xincrement;
            -
            -  
            -
            -  // Draw the ellipse at the value produced by perlin noise
            -
            -  fill(200);
            -
            -  ellipse(n,height/2,16,16);
            -
            -}
            - - - - - diff --git a/learning/basic/noise2d/index.html b/learning/basic/noise2d/index.html deleted file mode 100644 index dd7e28d..0000000 --- a/learning/basic/noise2d/index.html +++ /dev/null @@ -1,181 +0,0 @@ ---- -layout: default ---- -

            Noise2D

            - - - -

            by Daniel Shiffman. - - - -Using 2D noise to create simple texture.

            - - - -

            Original Processing.org Example: Noise2D
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float increment = 0.02;
            -
            -
            -
            -void setup() {
            -
            -  size(200,200);
            -
            -  noLoop();
            -
            -}
            -
            -
            -
            -void draw() {
            -
            -  background(0);
            -
            -  
            -
            -  // Optional: adjust noise detail here
            -
            -  // noiseDetail(8,0.65f);
            -
            -  
            -
            -  loadPixels();
            -
            -
            -
            -  float xoff = 0.0; // Start xoff at 0
            -
            -  
            -
            -  // For every x,y coordinate in a 2D space, calculate a noise value and produce a brightness value
            -
            -  for (int x = 0; x < width; x++) {
            -
            -    xoff += increment;   // Increment xoff 
            -
            -    float yoff = 0.0;   // For every xoff, start yoff at 0
            -
            -    for (int y = 0; y < height; y++) {
            -
            -      yoff += increment; // Increment yoff
            -
            -      
            -
            -      // Calculate noise and scale by 255
            -
            -      float bright = noise(xoff,yoff)*255;
            -
            -
            -
            -      // Try using this line instead
            -
            -      //float bright = random(0,255);
            -
            -      
            -
            -      // Set each pixel onscreen to a grayscale value
            -
            -      pixels[x+y*width] = color(bright);
            -
            -    }
            -
            -  }
            -
            -  
            -
            -  updatePixels();
            -
            -}
            - - - - - diff --git a/learning/basic/noise3d/index.html b/learning/basic/noise3d/index.html deleted file mode 100644 index 643c54d..0000000 --- a/learning/basic/noise3d/index.html +++ /dev/null @@ -1,207 +0,0 @@ ---- -layout: default ---- -

            Noise3D

            - - - -

            Using 3D noise to create simple animated texture. - -Here, the third dimension ('z') is treated as time.

            - - - -

            Original Processing.org Example: Noise3D
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float increment = 0.01;
            -
            -// The noise function's 3rd argument, a global variable that increments once per cycle
            -
            -float zoff = 0.0;  
            -
            -// We will increment zoff differently than xoff and yoff
            -
            -float zincrement = 0.02; 
            -
            -
            -
            -void setup() {
            -
            -  size(200,200);
            -
            -  frameRate(30);
            -
            -}
            -
            -
            -
            -void draw() {
            -
            -  background(0);
            -
            -  
            -
            -  // Optional: adjust noise detail here
            -
            -  // noiseDetail(8,0.65f);
            -
            -  
            -
            -  loadPixels();
            -
            -
            -
            -  float xoff = 0.0; // Start xoff at 0
            -
            -  
            -
            -  // For every x,y coordinate in a 2D space, calculate a noise value and produce a brightness value
            -
            -  for (int x = 0; x < width; x++) {
            -
            -    xoff += increment;   // Increment xoff 
            -
            -    float yoff = 0.0f;   // For every xoff, start yoff at 0
            -
            -    for (int y = 0; y < height; y++) {
            -
            -      yoff += increment; // Increment yoff
            -
            -      
            -
            -      // Calculate noise and scale by 255
            -
            -      float bright = noise(xoff,yoff,zoff)*255;
            -
            -
            -
            -      // Try using this line instead
            -
            -      //float bright = random(0,255);
            -
            -      
            -
            -      // Set each pixel onscreen to a grayscale value
            -
            -      pixels[x+y*width] = color(bright,bright,bright);
            -
            -    }
            -
            -  }
            -
            -  updatePixels();
            -
            -  
            -
            -  zoff += zincrement; // Increment zoff
            -
            -  
            -
            -  
            -
            -}
            - - - - - diff --git a/learning/basic/noisewave/index.html b/learning/basic/noisewave/index.html deleted file mode 100644 index 56e0d78..0000000 --- a/learning/basic/noisewave/index.html +++ /dev/null @@ -1,241 +0,0 @@ ---- -layout: default ---- -

            NoiseWave

            - - - -

            by Daniel Shiffman. - - - -Using Perlin Noise to generate a wave-like pattern.

            - - - -

            Original Processing.org Example: NoiseWave
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int xspacing = 8;   // How far apart should each horizontal location be spaced
            -
            -int w;              // Width of entire wave
            -
            -
            -
            -float yoff = 0.0f;        // 2nd dimension of perlin noise
            -
            -float[] yvalues;          // Using an array to store height values for the wave (not entirely necessary)
            -
            -
            -
            -void setup() {
            -
            -  size(200,200);
            -
            -  frameRate(30);
            -
            -  colorMode(RGB,255,255,255,100);
            -
            -  smooth();
            -
            -  w = width+16;
            -
            -  yvalues = new float[w/xspacing];
            -
            -}
            -
            -
            -
            -void draw() {
            -
            -  background(0);
            -
            -  calcWave();
            -
            -  renderWave();
            -
            -
            -
            -}
            -
            -
            -
            -void calcWave() {
            -
            -  float dx = 0.05f;
            -
            -  float dy = 0.01f;
            -
            -  float amplitude = 100.0f;
            -
            -
            -
            -  // Increment y ('time')
            -
            -  yoff += dy;
            -
            -
            -
            -  //float xoff = 0.0;  // Option #1
            -
            -  float xoff = yoff; // Option #2
            -
            -
            -
            -  for (int i = 0; i < yvalues.length; i++) {
            -
            -    // Using 2D noise function
            -
            -    //yvalues[i] = (2*noise(xoff,yoff)-1)*amplitude; // Option #1
            -
            -    // Using 1D noise function
            -
            -    yvalues[i] = (2*noise(xoff)-1)*amplitude;    // Option #2
            -
            -    xoff+=dx;
            -
            -  }
            -
            -
            -
            -}
            -
            -
            -
            -void renderWave() {
            -
            -  // A simple way to draw the wave with an ellipse at each location
            -
            -  for (int x = 0; x < yvalues.length; x++) {
            -
            -    noStroke();
            -
            -    fill(255,50);
            -
            -    ellipseMode(CENTER);
            -
            -    ellipse(x*xspacing,width/2+yvalues[x],16,16);
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/noloop/index.html b/learning/basic/noloop/index.html deleted file mode 100644 index 246b243..0000000 --- a/learning/basic/noloop/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: default ---- -

            NoLoop

            - - - -

            The noLoop() function causes draw() to only - -execute once. Without calling noLoop(), draw() - -executed continually.

            - - - -

            Original Processing.org Example: NoLoop
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -// The statements in the setup() function 
            -
            -// execute once when the program begins
            -
            -void setup() 
            -
            -{
            -
            -  size(200, 200);  // Size should be the first statement
            -
            -  stroke(255);     // Set line drawing color to white
            -
            -  frameRate(30);
            -
            -  noLoop();
            -
            -}
            -
            -
            -
            -float y = 100;
            -
            -
            -
            -// The statements in draw() are executed until the 
            -
            -// program is stopped. Each statement is executed in 
            -
            -// sequence and after the last line is read, the first 
            -
            -// line is executed again.
            -
            -void draw() 
            -
            -{ 
            -
            -  background(0);   // Set the background to black
            -
            -  y = y - 1; 
            -
            -  if (y < 0) { y = height; } 
            -
            -  line(0, y, width, y);  
            -
            -}
            - - - - - diff --git a/learning/basic/objects/index.html b/learning/basic/objects/index.html deleted file mode 100644 index e84843b..0000000 --- a/learning/basic/objects/index.html +++ /dev/null @@ -1,287 +0,0 @@ ---- -layout: default ---- -

            Objects

            - - - -

            by hbarragan - - - -Move the cursor across the image to change the speed and positions - -of the geometry. The class MRect defines a group of lines.

            - - - -

            Original Processing.org Example: Objects
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -MRect r1, r2, r3, r4;
            -
            - 
            -
            -void setup()
            -
            -{
            -
            -  size(200, 200);
            -
            -  fill(255, 204);
            -
            -  noStroke();
            -
            -  r1 = new MRect(1, 134.0, 0.532, 0.083*height, 10.0, 60.0);
            -
            -  r2 = new MRect(2, 44.0, 0.166, 0.332*height, 5.0, 50.0);
            -
            -  r3 = new MRect(2, 58.0, 0.332, 0.4482*height, 10.0, 35.0);
            -
            -  r4 = new MRect(1, 120.0, 0.0498, 0.913*height, 15.0, 60.0);
            -
            -}
            -
            - 
            -
            -void draw()
            -
            -{
            -
            -  background(0);
            -
            -  
            -
            -  r1.display();
            -
            -  r2.display();
            -
            -  r3.display();
            -
            -  r4.display();
            -
            - 
            -
            -  r1.move(mouseX-(width/2), mouseY+(height*0.1), 30);
            -
            -  r2.move((mouseX+(width*0.05))%width, mouseY+(height*0.025), 20);
            -
            -  r3.move(mouseX/4, mouseY-(height*0.025), 40);
            -
            -  r4.move(mouseX-(width/2), (height-mouseY), 50);
            -
            -}
            -
            - 
            -
            -class MRect 
            -
            -{
            -
            -  int w; // single bar width
            -
            -  float xpos; // rect xposition
            -
            -  float h; // rect height
            -
            -  float ypos ; // rect yposition
            -
            -  float d; // single bar distance
            -
            -  float t; // number of bars
            -
            - 
            -
            -  MRect(int iw, float ixp, float ih, float iyp, float id, float it) {
            -
            -    w = iw;
            -
            -    xpos = ixp;
            -
            -    h = ih;
            -
            -    ypos = iyp;
            -
            -    d = id;
            -
            -    t = it;
            -
            -  }
            -
            - 
            -
            -  void move (float posX, float posY, float damping) {
            -
            -    float dif = ypos - posY;
            -
            -    if (abs(dif) > 1) {
            -
            -      ypos -= dif/damping;
            -
            -    }
            -
            -    dif = xpos - posX;
            -
            -    if (abs(dif) > 1) {
            -
            -      xpos -= dif/damping;
            -
            -    }
            -
            -  }
            -
            - 
            -
            -  void display() {
            -
            -    for (int i=0; i<t; i++) {
            -
            -      rect(xpos+(i*(d+w)), ypos, w, height*h);
            -
            -    }
            -
            -  }
            -
            -}
            - - - - - diff --git a/learning/basic/operatorprecedence/index.html b/learning/basic/operatorprecedence/index.html deleted file mode 100644 index 4860b15..0000000 --- a/learning/basic/operatorprecedence/index.html +++ /dev/null @@ -1,213 +0,0 @@ ---- -layout: default ---- -

            OperatorPrecedence

            - - - -

            by REAS - - - -If you don't explicitly state the order in which - -an expression is evaluated, they are evaluated based - -on the operator precedence. For example, in the statement - -"4 + 28", the 2 will first be multiplied by 8 and then the result will - -be added to 4. This is because the "*" has a higher precedence - -than the "+". To avoid ambiguity in reading the program, - -it is recommended that is statement is written as "4 + (28)". - -The order of evaluation can be controlled through placement of - -parenthesis in the code. A table of operator precedence follows below.

            - - - -

            Original Processing.org Example: OperatorPrecedence
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -// The highest precedence is at the top of the list and 
            -
            -// the lowest is at the bottom.
            -
            -// Multiplicative: * / %
            -
            -// Additive: + -
            -
            -// Relational: < > <= >=
            -
            -// Equality: == !=
            -
            -// Logical AND: &&
            -
            -// Logical OR: ||
            -
            -// Assignment: = += -= *= /= %=
            -
            -
            -
            -size(200, 200);
            -
            -background(51);
            -
            -noFill();
            -
            -stroke(51);
            -
            -
            -
            -stroke(204);
            -
            -for(int i=0; i< width-20; i+= 4) {
            -
            -  // The 30 is added to 70 and then evaluated
            -
            -  // if it is greater than the current value of "i"
            -
            -  // For clarity, write as "if(i > (30 + 70)) {"
            -
            -  if(i > 30 + 70) {
            -
            -    line(i, 0, i, 50);
            -
            -  }
            -
            -}
            -
            -
            -
            -stroke(255);
            -
            -// The 2 is multiplied by the 8 and the result is added to the 5
            -
            -// For clarity, write as "rect(5 + (2 * 8), 0, 90, 20);"
            -
            -rect(4 + 2 * 8, 52, 90, 48);
            -
            -rect((4 + 2) * 8, 100, 90, 49);
            -
            -  
            -
            -stroke(153);
            -
            -for(int i=0; i< width; i+= 2) {
            -
            -  // The relational statements are evaluated 
            -
            -  // first, and then the logical AND statements and 
            -
            -  // finally the logical OR. For clarity, write as:
            -
            -  // "if(((i > 10) && (i < 50)) || ((i > 80) && (i < 160))) {"
            -
            -  if(i > 20 && i < 50 || i > 100 && i < width-20) {
            -
            -    line(i, 151, i, height-1);
            -
            -  } 
            -
            -}
            - - - - - diff --git a/learning/basic/piechart/index.html b/learning/basic/piechart/index.html deleted file mode 100644 index 1ea757f..0000000 --- a/learning/basic/piechart/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: default ---- -

            PieChart

            - - - -

            By Ira Greenberg - - - -Uses the arc() function to generate a pie chart from the data - -stored in an array.

            - - - -

            Original Processing.org Example: PieChart
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -background(100);
            -
            -smooth();
            -
            -noStroke();
            -
            -
            -
            -int diameter = 150;
            -
            -int[] angs = {30, 10, 45, 35, 60, 38, 75, 67};
            -
            -float lastAng = 0;
            -
            -
            -
            -for (int i=0; i<angs.length; i++){
            -
            -  fill(angs[i] * 3.0);
            -
            -  arc(width/2, height/2, diameter, diameter, lastAng, lastAng+radians(angs[i]));
            -
            -  lastAng += radians(angs[i]);  
            -
            -}
            - - - - - diff --git a/learning/basic/pointillism/data/eames.jpg b/learning/basic/pointillism/data/eames.jpg deleted file mode 100644 index c89377e40b1ac8538f10112f7d566b5829c6172f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44496 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�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 E+2};vKL7v# diff --git a/learning/basic/pointillism/data/sunflower.jpg b/learning/basic/pointillism/data/sunflower.jpg deleted file mode 100644 index 88398d1883df996161f68cf963aeeda2e909bd46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36656 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 diff --git a/learning/basic/pointillism/index.html b/learning/basic/pointillism/index.html deleted file mode 100644 index 3dd967e..0000000 --- a/learning/basic/pointillism/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -layout: default ---- -

            Pointillism

            - - - -

            by Daniel Shiffman. - - - -Mouse horizontal location controls size of dots. - -Creates a simple pointillist effect using ellipses colored - -according to pixels in an image.

            - - - -

            Original Processing.org Example: Pointillism
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -// @pjs preload must be used to preload the image so that it will be available when used in the sketch  
            -
            -/* @pjs preload="data/eames.jpg"; */
            -
            -
            -
            -PImage a;
            -
            -
            -
            -void setup()
            -
            -{
            -
            -  a = loadImage("data/eames.jpg");
            -
            -  size(200,200);
            -
            -  noStroke();
            -
            -  background(255);
            -
            -  smooth();
            -
            -}
            -
            -
            -
            -void draw()
            -
            -{ 
            -
            -  float pointillize = map(mouseX, 0, width, 2, 18);
            -
            -  int x = int(random(a.width));
            -
            -  int y = int(random(a.height));
            -
            -  color pix = a.get(x, y);
            -
            -  fill(pix, 126);
            -
            -  ellipse(x, y, pointillize, pointillize);
            -
            -}
            - - - - - diff --git a/learning/basic/pointslines/index.html b/learning/basic/pointslines/index.html deleted file mode 100644 index 1464042..0000000 --- a/learning/basic/pointslines/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -layout: default ---- -

            PointsLines

            - - - -

            Constructing a simple dimensional form with lines and rectangles. - -Changing the value of the variable 'd' scales the image. - -The four variables set the positions based on the value of 'd'.

            - - - -

            Original Processing.org Example: PointsLines
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -int d = 40;
            -
            -int p1 = d;
            -
            -int p2 = p1+d;
            -
            -int p3 = p2+d;
            -
            -int p4 = p3+d;
            -
            -
            -
            -size(200, 200);
            -
            -background(0);
            -
            -
            -
            -// Draw gray box
            -
            -stroke(153);
            -
            -line(p3, p3, p2, p3);
            -
            -line(p2, p3, p2, p2);
            -
            -line(p2, p2, p3, p2);
            -
            -line(p3, p2, p3, p3);
            -
            -
            -
            -// Draw white points
            -
            -stroke(255);
            -
            -point(p1, p1);
            -
            -point(p1, p3); 
            -
            -point(p2, p4);
            -
            -point(p3, p1); 
            -
            -point(p4, p2);
            -
            -point(p4, p4);
            - - - - - diff --git a/learning/basic/polartocartesian/index.html b/learning/basic/polartocartesian/index.html deleted file mode 100644 index e00f6fb..0000000 --- a/learning/basic/polartocartesian/index.html +++ /dev/null @@ -1,193 +0,0 @@ ---- -layout: default ---- -

            PolarToCartesian

            - - - -

            by Daniel Shiffman. - - - -Convert a polar coordinate (r,theta) to cartesian (x,y): - -x = rcos(theta) - -y = rsin(theta)

            - - - -

            Original Processing.org Example: PolarToCartesian
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -float r;
            -
            -
            -
            -// Angle and angular velocity, accleration
            -
            -float theta;
            -
            -float theta_vel;
            -
            -float theta_acc;
            -
            -
            -
            -void setup() {
            -
            -  size(200,200);
            -
            -  frameRate(30);
            -
            -  smooth();
            -
            -  
            -
            -  // Initialize all values
            -
            -  r = 50.0f;
            -
            -  theta = 0.0f;
            -
            -  theta_vel = 0.0f;
            -
            -  theta_acc = 0.0001f;
            -
            -}
            -
            -
            -
            -void draw() {
            -
            -  background(0);
            -
            -  // Translate the origin point to the center of the screen
            -
            -  translate(width/2,height/2);
            -
            -  
            -
            -  // Convert polar to cartesian
            -
            -  float x = r * cos(theta);
            -
            -  float y = r * sin(theta);
            -
            -  
            -
            -  // Draw the ellipse at the cartesian coordinate
            -
            -  ellipseMode(CENTER);
            -
            -  noStroke();
            -
            -  fill(200);
            -
            -  ellipse(x,y,16,16);
            -
            -  
            -
            -  // Apply acceleration and velocity to angle (r remains static in this example)
            -
            -  theta_vel += theta_acc;
            -
            -  theta += theta_vel;
            -
            -
            -
            -}
            - - - - - diff --git a/learning/basic/radialgradient/index.html b/learning/basic/radialgradient/index.html deleted file mode 100644 index cb3a4ff..0000000 --- a/learning/basic/radialgradient/index.html +++ /dev/null @@ -1,231 +0,0 @@ ---- -layout: default ---- -

            RadialGradient

            - - - -

            by Ira Greenberg. - - - -Using the convenient red(), green() - -and blue() component functions, - -generate an array of radial gradients.

            - - - -

            Original Processing.org Example: RadialGradient
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -void setup(){
            -
            -  size(200, 200);
            -
            -  background(0);
            -
            -  smooth();
            -
            -
            -
            -  // create a simple table of gradients
            -
            -  int columns = 4;
            -
            -  int radius = (width/columns)/2;
            -
            -  // create some gradients
            -
            -  for (int i=radius; i< width; i+=radius*2){
            -
            -    for (int j =radius; j< height; j+=radius*2){
            -
            -      createGradient(i, j, radius, 
            -
            -      color(int(random(255)), int(random(255)), int(random(255))), 
            -
            -      color(int(random(255)), int(random(255)), int(random(255))));
            -
            -    }
            -
            -  }
            -
            -}
            -
            -
            -
            -void createGradient (float x, float y, float radius, color c1, color c2){
            -
            -  float px = 0, py = 0, angle = 0;
            -
            -
            -
            -  // calculate differences between color components 
            -
            -  float deltaR = red(c2)-red(c1);
            -
            -  float deltaG = green(c2)-green(c1);
            -
            -  float deltaB = blue(c2)-blue(c1);
            -
            -  // hack to ensure there are no holes in gradient
            -
            -  // needs to be increased, as radius increases
            -
            -  float gapFiller = 8.0;
            -
            -
            -
            -  for (int i=0; i< radius; i++){
            -
            -    for (float j=0; j<360; j+=1.0/gapFiller){
            -
            -      px = x+cos(radians(angle))*i;
            -
            -      py = y+sin(radians(angle))*i;
            -
            -      angle+=1.0/gapFiller;
            -
            -      color c = color(
            -
            -      (red(c1)+(i)*(deltaR/radius)),
            -
            -      (green(c1)+(i)*(deltaG/radius)),
            -
            -      (blue(c1)+(i)*(deltaB/radius)) 
            -
            -        );
            -
            -      set(int(px), int(py), c);      
            -
            -    }
            -
            -  }
            -
            -  // adds smooth edge 
            -
            -  // hack anti-aliasing
            -
            -  noFill();
            -
            -  strokeWeight(3);
            -
            -  ellipse(x, y, radius*2, radius*2);
            -
            -}
            - - - - - diff --git a/learning/basic/random/index.html b/learning/basic/random/index.html deleted file mode 100644 index 9015ddb..0000000 --- a/learning/basic/random/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default ---- -

            Random

            - - - -

            Random numbers create the basis of this image. - -Each time the program is loaded the result is different.

            - - - -

            Original Processing.org Example: Random
            - -

            - -
            - - - -
            // All Examples Written by Casey Reas and Ben Fry
            -
            -// unless otherwise stated.
            -
            -size(200, 200);
            -
            -smooth();
            -
            -background(0);
            -
            -strokeWeight(10);
            -
            -
            -
            -for(int i = 0; i < width; i++) {
            -
            -  float r = random(255);
            -
            -  float x = random(0, width);
            -
            -  stroke(r, 100);
            -
            -  line(i, 0, x, height);
            -
            -}
            - - - - - diff --git a/learning/basic/reading/data/cait.jpg b/learning/basic/reading/data/cait.jpg deleted file mode 100644 index bc15e16a576e8f3397025e326da16613c672208f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7920 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

    - - - -

    An image is recreated from its individual component colors. - -The many colors of the image are created through modulating the - -red, green, and blue values. This is an exageration of an LCD display.

    - - - -

    Original Processing.org Example: Reading
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// @pjs preload must be used to preload the image so that it will be available when used in the sketch  
    -
    -/* @pjs preload="data/cait.jpg"; */
    -
    -
    -
    -size(200, 200);
    -
    -noStroke();
    -
    -background(0);
    -
    -
    -
    -// Load an image from the data directory
    -
    -PImage c;
    -
    -c = loadImage("data/cait.jpg");
    -
    -
    -
    -int xoff = 0;
    -
    -int yoff = 0;
    -
    -int p = 2;
    -
    -int pix = p*3;
    -
    -
    -
    -
    -
    -for(int i = 0; i < c.width*c.height; i += 1) 
    -
    -{  
    -
    -  int here = c.pixels[i];
    -
    -  
    -
    -  fill(red(here), 0, 0);
    -
    -  rect(xoff, yoff, p, pix);
    -
    -  
    -
    -  fill(0, green(here), 0);
    -
    -  rect(xoff+p, yoff, p, pix);
    -
    -  
    -
    -  fill(0, 0, blue(here));
    -
    -  rect(xoff+p*2, yoff, p, pix);
    -
    -  
    -
    -  xoff+=pix;
    -
    -  if(xoff >= width-pix) {
    -
    -    xoff = 0;
    -
    -    yoff += pix;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/recursion/index.html b/learning/basic/recursion/index.html deleted file mode 100644 index 311b2e9..0000000 --- a/learning/basic/recursion/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -layout: default ---- -

    Recursion

    - - - -

    A demonstration of recursion, which means functions call themselves. - -Notice how the drawCircle() function calls itself at the end of its block. - -It continues to do this until the variable "level" is equal to 1.

    - - - -

    Original Processing.org Example: Recursion
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  smooth();
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  drawCircle(126, 170, 6);
    -
    -}
    -
    -
    -
    -void drawCircle(int x, int radius, int level) 
    -
    -{                    
    -
    -  float tt = 126 * level/4.0;
    -
    -  fill(tt);
    -
    -  ellipse(x, 100, radius*2, radius*2);      
    -
    -  if(level > 1) {
    -
    -    level = level - 1;
    -
    -    drawCircle(x - radius/2, radius/2, level);
    -
    -    drawCircle(x + radius/2, radius/2, level);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/recursion2/index.html b/learning/basic/recursion2/index.html deleted file mode 100644 index 2e4d335..0000000 --- a/learning/basic/recursion2/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -layout: default ---- -

    Recursion2

    - - - -

    A demonstration of recursion, which means functions call themselves. - -Notice how the drawCircle() function calls itself at the end of its block. - -It continues to do this until the variable "level" is equal to 1.

    - - - -

    Original Processing.org Example: Recursion2
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  smooth();
    -
    -  drawCircle(100, 100, 80, 8);
    -
    -}
    -
    -
    -
    -void drawCircle(float x, float y, int radius, int level) 
    -
    -{                    
    -
    -  float tt = 126 * level/6.0;
    -
    -  fill(tt, 153);
    -
    -  ellipse(x, y, radius*2, radius*2);      
    -
    -  if(level > 1) {
    -
    -    level = level - 1;
    -
    -    int num = int(random(2, 6));
    -
    -    for(int i=0; i<num; i++) {
    -
    -      float a = random(0, TWO_PI);
    -
    -      float nx = x + cos(a) * 6.0 * level;
    -
    -      float ny = y + sin(a) * 6.0 * level;
    -
    -      drawCircle(nx, ny, radius/2, level);
    -
    -    }
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/redraw/index.html b/learning/basic/redraw/index.html deleted file mode 100644 index 8fa91ac..0000000 --- a/learning/basic/redraw/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -layout: default ---- -

    Redraw

    - - - -

    The redraw() function makes draw() execute once. - -In this example, draw() is executed once every time - -the mouse is clicked.

    - - - -

    Original Processing.org Example: Redraw
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// The statements in the setup() function 
    -
    -// execute once when the program begins
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);  // Size should be the first statement
    -
    -  stroke(255);     // Set line drawing color to white
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -float y = 100;
    -
    -
    -
    -// The statements in draw() are executed until the 
    -
    -// program is stopped. Each statement is executed in 
    -
    -// sequence and after the last line is read, the first 
    -
    -// line is executed again.
    -
    -void draw() 
    -
    -{ 
    -
    -  background(0);   // Set the background to black
    -
    -  y = y - 1; 
    -
    -  if (y < 0) { y = height; } 
    -
    -  line(0, y, width, y);  
    -
    -} 
    -
    -
    -
    -void mousePressed() 
    -
    -{
    -
    -  redraw();
    -
    -}
    - - - - - diff --git a/learning/basic/relativity/index.html b/learning/basic/relativity/index.html deleted file mode 100644 index a2003de..0000000 --- a/learning/basic/relativity/index.html +++ /dev/null @@ -1,145 +0,0 @@ ---- -layout: default ---- -

    Relativity

    - - - -

    Each color is perceived in relation to other colors. - -The top and bottom bars each contain the same component colors, - -but a different display order causes individual colors to appear differently.

    - - - -

    Original Processing.org Example: Relativity
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -color a, b, c, d, e;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  a = color(165, 167, 20);
    -
    -  b = color(77, 86, 59);
    -
    -  c = color(42, 106, 105);
    -
    -  d = color(165, 89, 20);
    -
    -  e = color(146, 150, 127);
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  drawBand(a, b, c, d, e, 0, 4);
    -
    -  drawBand(c, a, d, b, e, height/2, 4);
    -
    -}
    -
    -
    -
    -void drawBand(color v, color w, color x, color y, color z, int ypos, int barWidth) {
    -
    -  int num = 5;
    -
    -  color[] colorOrder = { v, w, x, y, z };
    -
    -  for(int i = 0; i < width; i += barWidth*num) {
    -
    -    for(int j = 0; j < num; j++) {
    -
    -      fill(colorOrder[j]);
    -
    -      rect(i+j*barWidth, ypos, barWidth, height/2);
    -
    -    }
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/rotate/index.html b/learning/basic/rotate/index.html deleted file mode 100644 index 9f28b68..0000000 --- a/learning/basic/rotate/index.html +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: default ---- -

    Rotate

    - - - -

    Rotating a square around the Z axis. To get the results - -you expect, send the rotate function angle parameters that are - -values between 0 and PI*2 (TWO_PI which is roughly 6.28). If you prefer to - -think about angles as degrees (0-360), you can use the radians() - -method to convert your values. For example: scale(radians(90)) - -is identical to the statement scale(PI/2).

    - - - -

    Original Processing.org Example: Rotate
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -void setup()
    -
    -{
    -
    -  size(200,200);
    -
    -  noStroke();
    -
    -  fill(255);
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -float angle;
    -
    -float cosine;
    -
    -float jitter;
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  background(102);
    -
    -  
    -
    -  if(second()%2 == 0){
    -
    -    jitter = (random(-0.1, 0.1));
    -
    -  }
    -
    -  angle = angle + jitter;
    -
    -  cosine = cos(angle);
    -
    -  
    -
    -  translate(width/2, height/2);
    -
    -  rotate(cosine);
    -
    -  rectMode(CENTER);
    -
    -  rect(0, 0, 115, 115);   
    -
    -}
    - - - - - diff --git a/learning/basic/saturation/index.html b/learning/basic/saturation/index.html deleted file mode 100644 index 93b302f..0000000 --- a/learning/basic/saturation/index.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -layout: default ---- -

    Saturation

    - - - -

    Saturation is the strength or purity of the color and represents the - -amount of gray in proportion to the hue. A "saturated" color is pure - -and an "unsaturated" color has a large percentage of gray. - -Move the cursor vertically over each bar to alter its saturation.

    - - - -

    Original Processing.org Example: Saturation
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int barWidth = 5;
    -
    -int[] saturation;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  colorMode(HSB, 360, height, height); 
    -
    -  saturation = new int[width/barWidth];
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  int j = 0;
    -
    -  for (int i=0; i<=(width-barWidth); i+=barWidth) {  
    -
    -    noStroke();
    -
    -    if ((mouseX > i) && (mouseX < i+barWidth)) {
    -
    -      saturation[j] = mouseY;
    -
    -    }
    -
    -    fill(i, saturation[j], height/1.5);
    -
    -    rect(i, 0, barWidth, height);  
    -
    -    j++;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/scale/index.html b/learning/basic/scale/index.html deleted file mode 100644 index b747fcc..0000000 --- a/learning/basic/scale/index.html +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: default ---- -

    Scale

    - - - -

    by Denis Grutze. - - - -Paramenters for the scale() function are values specified - -as decimal percentages. For example, the method call scale(2.0) - -will increase the dimension of the shape by 200 percent. - -Objects always scale from the origin.

    - - - -

    Original Processing.org Example: Scale
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float a = 0.0;
    -
    -float s = 0.0;
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200,200);
    -
    -  noStroke();
    -
    -  rectMode(CENTER);
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  background(102);
    -
    -  
    -
    -  a = a + 0.04;
    -
    -  s = cos(a)*2;
    -
    -  
    -
    -  translate(width/2, height/2);
    -
    -  scale(s); 
    -
    -  fill(51);
    -
    -  rect(0, 0, 50, 50); 
    -
    -  
    -
    -  translate(75, 0);
    -
    -  fill(255);
    -
    -  scale(s);
    -
    -  rect(0, 0, 50, 50);       
    -
    -}
    - - - - - diff --git a/learning/basic/setupdraw/index.html b/learning/basic/setupdraw/index.html deleted file mode 100644 index 659f5e3..0000000 --- a/learning/basic/setupdraw/index.html +++ /dev/null @@ -1,119 +0,0 @@ ---- -layout: default ---- -

    SetupDraw

    - - - -

    The draw() function creates a structure in which - -to write programs that change with time.

    - - - -

    Original Processing.org Example: SetupDraw
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// The statements in the setup() function 
    -
    -// execute once when the program begins
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);  // Size should be the first statement
    -
    -  stroke(255);     // Set line drawing color to white
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -float y = 100;
    -
    -
    -
    -// The statements in draw() are executed until the 
    -
    -// program is stopped. Each statement is executed in 
    -
    -// sequence and after the last line is read, the first 
    -
    -// line is executed again.
    -
    -void draw() 
    -
    -{ 
    -
    -  background(0);   // Set the background to black
    -
    -  y = y - 1; 
    -
    -  if (y < 0) { y = height; } 
    -
    -  line(0, y, width, y);  
    -
    -}
    - - - - - diff --git a/learning/basic/shapeprimitives/index.html b/learning/basic/shapeprimitives/index.html deleted file mode 100644 index 8ee3eb4..0000000 --- a/learning/basic/shapeprimitives/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: default ---- -

    ShapePrimitives

    - - - -

    The basic shape primitive functions are triangle(), - -rect(), quad(), and ellipse(). Squares are made - -with rect() and circles are made with - -ellise(). Each of these functions requires a number - -of parameters which determines their position and size.

    - - - -

    Original Processing.org Example: ShapePrimitives
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -size(200, 200);
    -
    -smooth(); 
    -
    -background(0);
    -
    -noStroke();
    -
    -fill(226);
    -
    -triangle(10, 10, 10, 200, 45, 200);
    -
    -rect(45, 45, 35, 35);
    -
    -quad(105, 10, 120, 10, 120, 200, 80, 200);
    -
    -ellipse(140, 80, 40, 40);
    -
    -triangle(160, 10, 195, 200, 160, 200);
    - - - - - diff --git a/learning/basic/simplecurves/index.html b/learning/basic/simplecurves/index.html deleted file mode 100644 index 15fe654..0000000 --- a/learning/basic/simplecurves/index.html +++ /dev/null @@ -1,323 +0,0 @@ ---- -layout: default ---- -

    SimpleCurves

    - - - -

    Simple curves are drawn with simple equations. - -By using numbers with values between 0 and 1 in - -the equations, a series of elegant curves - -are created. The numbers are then scaled to fill the screen.

    - - - -

    Original Processing.org Example: SimpleCurves
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  colorMode(RGB, 100);
    -
    -  background(0);
    -
    -  noFill();
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  stroke(40);
    -
    -  beginShape();
    -
    -  for(int i=0; i<width; i++) {
    -
    -   vertex(i, singraph((float)i/width)*height);
    -
    -  }
    -
    -  endShape();
    -
    -  
    -
    -  stroke(55);
    -
    -  beginShape();
    -
    -  for(int i=0; i<width; i++) {
    -
    -   vertex(i, quad((float)i/width)*height);
    -
    -  }
    -
    -  endShape();
    -
    -  
    -
    -  stroke(70);
    -
    -  beginShape();
    -
    -  for(int i=0; i<width; i++) {
    -
    -   vertex(i, quadHump((float)i/width)*height);
    -
    -  }
    -
    -  endShape();
    -
    -  
    -
    -  stroke(85);
    -
    -  beginShape();
    -
    -  for(int i=0; i<width; i++) {
    -
    -   vertex(i, hump((float)i/width)*height);
    -
    -  }
    -
    -  endShape();
    -
    -  
    -
    -  stroke(100);
    -
    -  beginShape();
    -
    -  for(int i=0; i<width; i++) {
    -
    -   vertex(i, squared((float)i/width)*height);
    -
    -  }
    -
    -  endShape();
    -
    -}
    -
    -
    -
    -float singraph(float sa) {
    -
    -  sa = (sa - 0.5) * 1.0; //scale from -1 to 1
    -
    -  sa = sin(sa*PI)/2 + 0.5;
    -
    -  return sa;
    -
    -}
    -
    -
    -
    -float quad(float sa) {
    -
    -  return sa*sa*sa*sa;
    -
    -}
    -
    -
    -
    -float quadHump(float sa) {
    -
    -  sa = (sa - 0.5); //scale from -2 to 2
    -
    -  sa = sa*sa*sa*sa * 16;
    -
    -  return sa;
    -
    -}
    -
    -
    -
    -float hump(float sa) {
    -
    -  sa = (sa - 0.5) * 2; //scale from -2 to 2
    -
    -  sa = sa*sa;
    -
    -  if(sa > 1) { sa = 1; }
    -
    -  return 1-sa;
    -
    -}
    -
    -
    -
    -float squared(float sa) {
    -
    -  sa = sa*sa;
    -
    -  return sa;
    -
    -}
    - - - - - diff --git a/learning/basic/sine/index.html b/learning/basic/sine/index.html deleted file mode 100644 index c19c319..0000000 --- a/learning/basic/sine/index.html +++ /dev/null @@ -1,185 +0,0 @@ ---- -layout: default ---- -

    Sine

    - - - -

    Smoothly scaling size with the sin() function.

    - - - -

    Original Processing.org Example: Sine
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float spin = 0.0; 
    -
    -float diameter = 84.0; 
    -
    -float angle;
    -
    -
    -
    -float angle_rot; 
    -
    -int rad_points = 90;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  smooth();
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{ 
    -
    -  background(153);
    -
    -  
    -
    -  translate(130, 65);
    -
    -  
    -
    -  fill(255);
    -
    -  ellipse(0, 0, 16, 16);
    -
    -  
    -
    -  angle_rot = 0;
    -
    -  fill(51);
    -
    -
    -
    -  for(int i=0; i<5; i++) {
    -
    -    pushMatrix();
    -
    -    rotate(angle_rot + -45);
    -
    -    ellipse(-116, 0, diameter, diameter);
    -
    -    popMatrix();
    -
    -    angle_rot += PI*2/5;
    -
    -  }
    -
    -
    -
    -  diameter = 34 * sin(angle) + 168;
    -
    -  
    -
    -  angle += 0.02;
    -
    -  if (angle > TWO_PI) { angle = 0; }
    -
    -}
    - - - - - diff --git a/learning/basic/sinecosine/index.html b/learning/basic/sinecosine/index.html deleted file mode 100644 index 198815a..0000000 --- a/learning/basic/sinecosine/index.html +++ /dev/null @@ -1,231 +0,0 @@ ---- -layout: default ---- -

    SineCosine

    - - - -

    Linear movement with sin() and cos(). - -Numbers between 0 and PI*2 (TWO_PI which is roughly 6.28) - -are put into these functions and numbers between -1 and 1 are - -returned. These values are then scaled to produce larger movements.

    - - - -

    Original Processing.org Example: SineCosine
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int i = 45;
    -
    -int j = 225; 
    -
    -float pos1 = 0; 
    -
    -float pos2 = 0; 
    -
    -float pos3 = 0; 
    -
    -float pos4 = 0;
    -
    -int sc = 40;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  smooth();
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(0);
    -
    -  
    -
    -  fill(51);
    -
    -  rect(60, 60, 80, 80);
    -
    -
    -
    -  fill(255);
    -
    -  ellipse(pos1, 36, 32, 32);
    -
    -
    -
    -  fill(153);
    -
    -  ellipse(36, pos2, 32, 32);
    -
    -
    -
    -  fill(255);
    -
    -  ellipse(pos3, 164, 32, 32);
    -
    -
    -
    -  fill(153);
    -
    -  ellipse(164, pos4, 32, 32);
    -
    -
    -
    -  i += 3;
    -
    -  j -= 3;
    -
    -
    -
    -  if(i > 405) {
    -
    -    i = 45;
    -
    -    j = 225;
    -
    -  }
    -
    -
    -
    -  float ang1 = radians(i); // convert degrees to radians
    -
    -  float ang2 = radians(j); // convert degrees to radians
    -
    -  pos1 = width/2 + (sc * cos(ang1));
    -
    -  pos2 = width/2 + (sc * sin(ang1));
    -
    -  pos3 = width/2 + (sc * cos(ang2));
    -
    -  pos4 = width/2 + (sc * sin(ang2));
    -
    -}
    - - - - - diff --git a/learning/basic/sinewave/index.html b/learning/basic/sinewave/index.html deleted file mode 100644 index 5604199..0000000 --- a/learning/basic/sinewave/index.html +++ /dev/null @@ -1,221 +0,0 @@ ---- -layout: default ---- -

    SineWave

    - - - -

    by Daniel Shiffman. - - - -Render a simple sine wave.

    - - - -

    Original Processing.org Example: SineWave
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int xspacing = 8;   // How far apart should each horizontal location be spaced
    -
    -int w;              // Width of entire wave
    -
    -
    -
    -float theta = 0.0;       // Start angle at 0
    -
    -float amplitude = 75.0;  // Height of wave
    -
    -float period = 500.0;    // How many pixels before the wave repeats
    -
    -float dx;                 // Value for incrementing X, to be calculated as a function of period and xspacing
    -
    -float[] yvalues;          // Using an array to store height values for the wave (not entirely necessary)
    -
    -
    -
    -void setup() {
    -
    -  size(200,200);
    -
    -  frameRate(30);
    -
    -  colorMode(RGB,255,255,255,100);
    -
    -  smooth();
    -
    -  w = width+16;
    -
    -  dx = (TWO_PI / period) * xspacing;
    -
    -  yvalues = new float[w/xspacing];
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(0);
    -
    -  calcWave();
    -
    -  renderWave();
    -
    -
    -
    -}
    -
    -
    -
    -void calcWave() {
    -
    -  // Increment theta (try different values for 'angular velocity' here
    -
    -  theta += 0.02;
    -
    -
    -
    -  // For every x value, calculate a y value with sine function
    -
    -  float x = theta;
    -
    -  for (int i = 0; i < yvalues.length; i++) {
    -
    -    yvalues[i] = sin(x)*amplitude;
    -
    -    x+=dx;
    -
    -  }
    -
    -}
    -
    -
    -
    -void renderWave() {
    -
    -  // A simple way to draw the wave with an ellipse at each location
    -
    -  for (int x = 0; x < yvalues.length; x++) {
    -
    -    noStroke();
    -
    -    fill(255,50);
    -
    -    ellipseMode(CENTER);
    -
    -    ellipse(x*xspacing,width/2+yvalues[x],16,16);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/sprite/data/sky.jpg b/learning/basic/sprite/data/sky.jpg deleted file mode 100644 index 57371b9f4022a5776d1d4cd8b15982947f16a79b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3766 zcmY*a2{hDQ8~+>oHW|AyiLr*rp0Sj52-%sj8*3w#tw;!AB&0%?^jb!iv5ajLUTgM! zkDlB{|6doCMISUW>#iqRxm3&D;NSk1BC0} z1YG=(b7z3?^YU?XbMx{3kwc*(BEljf|Il4TyX#(8W1fVBO{28p8j7A4G2OjqClr($w}`XkWYjw zGDN4f2XcujVZ_FEYPh#`J%W^%tYY+HA%CQFw2ZVM#{WJ>15%)chy>8-xGP$=bHW3a z=(nRqxs~&Yx|o;_vC}z#jrOb#2rUG-3Z%gvCoXFh=(dW=h}s=kuU-lk|#F03K|el%$v7XuZx4bb}FqhJzUhkA#x^TWqhUb`N|1tOD#r)|9IH!XN z2Q$Ag4UUZf^`hz)WHa^Qi8y|y;*E~=0&NEQ?ey2GuJ6gA-OFoaG?`GLDAcsu^6?q8 z&?}y_%i&cw-Eds4cQt5hz+$_=TgaONvnrc&Lj`c9f(`d!akzl)n65d^oh^-SoF$qa z#LRmo3Dy}8?~1>h1{I8X0zJne0G|NKy`}5(gUeMQKrpPWeOG^_2O*7OLu$4k;ujV!TS_fdNg zVq*f5n=xf}=u-={{V=1F#urB9p*RTG=c$RU=alaBkllCv@d-B{$EMPTrCv(|!wY@) z-ZmbxpZ^6)@wgUafE#n!E*zIN@?nK|n5rc}FwfXtDhGZS#m*$m8r$Xz+Eaillf`$s zk67~jB$j7x-Z}+DXKnVpmV!Yxvh!5K7R|+7*@lDXZ&!VjMXZ!L`{?6`3TO9(JxT0u z_e28!>a{&@Kl)~8OS>@to2_yXH8V(kEni{6d^XtRitn1)_?EZIqIR)EW}tMHr=9DZ zgG*m}_ESNw2hr%#FImMuGD_ADGMl1v%Pd`;Lq@61{l>nZ7nvPVm9KIu*VYbVcV7Lr zT3ss`Cd5_M3*L9S^f^Q9q8)*_dRxX~JX}FWQY;-!yh&mrIk7E_Tec|IwAX%^e(4z5 z$(CF2#bNp#zY^QyoXN|*`Y?UNzBPlCL3*6!DZu3W%!pVr#sdGqG0ZF4#-9uY`XHVL zQ(ygxKFL;R`-$sfumZZy_# zS;wEFbH7+Z%8(aj2u-ICRb08f!zd>gFsAKFl28mYuSPu12zBp|745Vz zB(A}D6E0M)i0w@*>lG3eu`0$smkz7lu5((j$wCfGzmHBA@cv|_@+<2{+S}L0TzfQH zlzYBCc%h5-i{TBWqRUjRc1#>G(cx2o8YwQ1bL>}AD*Pidca@~~ zT}x^|ev{c+>8~&xpWZSppIo(X>B>j$aTZy?-AyPJZP7Bl%YFWHgklZpshZvc!vj z*XmRrQTXjspUowqDzW!9)6Cofu|V*T+EZsNpqM#)L!6{`oC5Po^0rjeG1Tc!pbe#{w|4l@|9Oc_=}}So}j+b zL(7IEo%#yWMD#2nQsNYtxbg|FiI_LX+iW=8|D1CQnA2+SyA+=1eXLQgSZ;qj;P_6l z%0A0(pSISjHB0_{(Lt&EhI%(Ka;a)+2Vt&$6RX@T_zA1t-4aQ4RqMKt{JYYxB~uMO zAG@l*${t~gt(NhcMF%l17yDKQmsa@|AOz+|9$f1WHfwI+k7xpm+qs3giC!f(BMGQg zm_cGgSi2plOKM|I*+>kP42^?eST%6OMa=*PncuN`MGQv0Nrc_!1;}Z6px)w(Ro>dG z8THA?CE~*1%)5b|eYm*pW?r2|pEd9rtK1QaVDgSZ3l$hOJW7-v@2yZp#i-sfts=Km zo*)j=r^&7JKXWrD0)CA}NTSACYb8nFUdq{0VLxfYC2Xm+m+pAlQpX&&?XWn_VQGhC zXy?W7arF_UPFpRqD_60f)&06Y*-)qQ(dA*UVL^wSm$Pj@$*VI5hc&C;mb|q4c#e9$ z6wczVNZLQ|$|}vgz}8S#rk7#WQ9Q_(F5!I}df%}}GF$Wd%R6E5=6wl`ZSPpsLX%(} zIO3-2h-&wfLsnQ!%Fr@i7p$iT!EiI+WYaL3G>^tW`pKNywY^3-Xse{r9}lt*ZcV?d zCG4m=&NlcpFAB*$^3mPTE3zCEuqsLih%c=YU>T1 z6aC>gMN!_a@b5^?A17r_re6`J{w5S>3R}PqmS-v!qMAz9CZk+&3+MORBH2WDmSi>vHY6+JB-&+3Y`tH5;g` z2a!I%7=Xj(j3hyl`s0_suBqgBBz44!k>GO;oF_6PFlGwVn3K$R1v=9A6iwXT3y_a zv~ynPfjTqcr&hWa^LfkkCZoRQQ5JL5*EF}+C64^&f}M2WcM={rzcsT*@>b8_Un<2q8l-SeonjN#+frscNv-k@V z#InH-owh{_A~P$@taB(CVt>s7DqLe8aP~un#>C-dmp;eiE<@of=8%lfA=qjGPw-p8 zTlALC$}U#AeXQEM|0O>vNKMaWb+~qmAy`?qO7UX$A~Ji2(?N7Ny_c}){TwYi$$J$v zpIP;evy9n>L|NZL5=tXh22|4~BQ#jP-bO@a;1_ab#-EIs8NO$IBf2HKDXlW;^RZ~3 zFx4LILw8DMgvkp;Ni+{c0FV~rOl+wE3T+owZ94PfAu z@4J!u(OQ3Bg(OJ!_mGrC?)Aq+YArQ(*5A(-e7v~ml#JOB=UaBZX7bPTdOp~qO#z;% zW^ggd-y1_VHZIyhW=+2|6slgjyoJ2mwNO}%s(wc7Q_2zvGb+3pwaLzAPSRH#3Yz zu#OqV_QlXylRO|HtN-<)g2!%Jyj9LMkY3}v1iCJz{@bhH9T5rApbbB0qg0=@S{8#> zd`-H|9F9|MleA8fsO9y;yix^qc%Vf>ZW4sdlI!vggXT-~G zXsJ+kE;c^VxNB6uHup!;PvfqiHwf(qd#(q3c7NogB5TX@2B`G0X1h30GLCW!Z*U6y z-p9puaSMU=9-D2^fCe5;ZHwc-IQw?8WFW*#l76pG?v=Z!bH8sX=9k_C)!QH^#RV12 zB?Bi8+s0aMl;7k3*;xFhCh&5*;5o9adNyCw9r?;mrzwxlNu3uaN^EKsKMEy-wpuvA T*ig+2?(zIWu5CAbPCxz!F0ARL diff --git a/learning/basic/sprite/data/teddy.gif b/learning/basic/sprite/data/teddy.gif deleted file mode 100644 index 8994c1bdd611dc47c37554778e8fd9d2f67fa0b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmVi|3L_yF&8i-mV88xd0mnj%eW{u~%qwh;h8VQBHqA^Fb{QxZH z@Cl7db<(NwR?RxI-0rZ&S$Uh1@u=nnhs|Zp7|B)hwsATuZ9j{na#x=Jw+EQCRc2Ko zXrTqw-hwS%nkL2RODVUUP0Nur`BaU3s{qlC3gd9jhgImTXAjEGa9FOS8H zihMLH)5N{b{j+|Gr ztz$2JGK(B|qBhEh{UU7|TK2or`$l3DEp{>NVX+=2*1emx#(dv=#~v-fqS#MBQmdZr z6!OzHV)b%99^2n>=*>B~uG2lD@Z6|waXejiwQ{>}KXN~|p8a-!LGgdPZ|GcDInkp9 zSJB-Cm3ZJG$CQHS(FWdVaDj#oU-tZG;cyUkCYXHlEeK+6Q^6yhf**F6+=&`}7GQQ< zmB<=(zr~j#hc1p&(1qA72v>%Lz1UNb#kmCGh(d0tR$4mN=u~(W%7tQsN`|PGK1)h@ z8!vacXWMn8p$E{A%1u(sgUt0PCW$4WDQ25$eRgyrQ7 cVaVXaBhU$oC{uhU%IF+w$k1q{4-^0ZJEcu&`2YX_ diff --git a/learning/basic/sprite/index.html b/learning/basic/sprite/index.html deleted file mode 100644 index 29d6305..0000000 --- a/learning/basic/sprite/index.html +++ /dev/null @@ -1,185 +0,0 @@ ---- -layout: default ---- -

    Sprite

    - - - -

    by James Patterson. - - - -Demonstrates loading and displaying a transparent GIF image. - - - -Created 27 January 2003.

    - - - -

    Original Processing.org Example: Sprite
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// @pjs preload must be used to preload the image so that it will be available when used in the sketch  
    -
    -/* @pjs preload="data/teddy.gif"; */
    -
    -
    -
    -PImage teddy;
    -
    -
    -
    -float xpos;
    -
    -float ypos;
    -
    -float drag = 30.0;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200,200);
    -
    -  teddy = loadImage("data/teddy.gif");
    -
    -  xpos = width/2;
    -
    -  ypos = height/2;
    -
    -  frameRate(60);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{ 
    -
    -  background(102);
    -
    -  
    -
    -  float difx = mouseX - xpos-teddy.width/2;
    -
    -  if(abs(difx) > 1.0) {
    -
    -    xpos = xpos + difx/drag;
    -
    -    xpos = constrain(xpos, 0, width-teddy.width);
    -
    -  }  
    -
    -  
    -
    -  float dify = mouseY - ypos-teddy.height/2;
    -
    -  if(abs(dify) > 1.0) {
    -
    -    ypos = ypos + dify/drag;
    -
    -    ypos = constrain(ypos, 0, height-teddy.height);
    -
    -  }  
    -
    -  
    -
    -  // Display the sprite at the position xpos, ypos
    -
    -  image(teddy, xpos, ypos);
    -
    -}
    - - - - - diff --git a/learning/basic/statementscomments/index.html b/learning/basic/statementscomments/index.html deleted file mode 100644 index d48ac63..0000000 --- a/learning/basic/statementscomments/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: default ---- -

    StatementsComments

    - - - -

    Statements are the elements that make up programs. - -The ";" (semi-colon) symbol is used to end statements. - -It is called the "statement terminator." - -Comments are used for making notes to help people better understand programs. - -A comment begins with two forward slashes ("//").

    - - - -

    Original Processing.org Example: StatementsComments
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// The size function is a statement that tells the computer 
    -
    -// how large to make the window.
    -
    -// Each function statement has zero or more parameters. 
    -
    -// Parameters are data passed into the function
    -
    -// and used as values for specifying what the computer will do.
    -
    -size(200, 200);
    -
    -
    -
    -// The background function is a statement that tells the computer
    -
    -// which color to make the background of the window 
    -
    -background(102);
    - - - - - diff --git a/learning/basic/storinginput/index.html b/learning/basic/storinginput/index.html deleted file mode 100644 index d45bb18..0000000 --- a/learning/basic/storinginput/index.html +++ /dev/null @@ -1,157 +0,0 @@ ---- -layout: default ---- -

    StoringInput

    - - - -

    Move the mouse across the screen to change the position - -of the circles. The positions of the mouse are recorded - -into an array and played back every frame. Between each - -frame, the newest value are added to the end of each array - -and the oldest value is deleted.

    - - - -

    Original Processing.org Example: StoringInput
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int num = 60;
    -
    -float mx[] = new float[num];
    -
    -float my[] = new float[num];
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  smooth();
    -
    -  noStroke();
    -
    -  fill(255, 153); 
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(51); 
    -
    -  
    -
    -  // Reads throught the entire array
    -
    -  // and shifts the values to the left
    -
    -  for(int i=1; i<num; i++) {
    -
    -    mx[i-1] = mx[i];
    -
    -    my[i-1] = my[i];
    -
    -  } 
    -
    -  // Add the new values to the end of the array
    -
    -  mx[num-1] = mouseX;
    -
    -  my[num-1] = mouseY;
    -
    -  
    -
    -  for(int i=0; i<num; i++) {
    -
    -    ellipse(mx[i], my[i], i/2, i/2);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/translate/index.html b/learning/basic/translate/index.html deleted file mode 100644 index 9a81d79..0000000 --- a/learning/basic/translate/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -layout: default ---- -

    Translate

    - - - -

    The translate() function allows objects to be moved - -to any location within the window. The first parameter - -sets the x-axis offset and the second parameter sets the - -y-axis offset.

    - - - -

    Original Processing.org Example: Translate
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float x, y;
    -
    -float s = 40.0;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200,200);
    -
    -  noStroke();
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(102);
    -
    -  
    -
    -  x = x + 0.8;
    -
    -  
    -
    -  if (x > width + s) {
    -
    -    x = -s;
    -
    -  } 
    -
    -  
    -
    -  translate(x, height/2-s/2);
    -
    -  fill(255);
    -
    -  rect(-s/2, -s/2, s, s);
    -
    -  
    -
    -  // Transforms accumulate.
    -
    -  // Notice how this rect moves twice
    -
    -  // as fast as the other, but it has
    -
    -  // the same parameter for the x-axis value
    -
    -  translate(x, s);
    -
    -  fill(0);
    -
    -  rect(-s/2, -s/2, s, s);
    -
    -}
    - - - - - diff --git a/learning/basic/transparency/data/construct.jpg b/learning/basic/transparency/data/construct.jpg deleted file mode 100644 index 648678bb98b415858e68f0e4f655bb0f1c9d1d9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34699 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

    XZAl|-y)^|SzybgRG$2L^^kzfJQ9 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 jsGYniDx1d|SVcPQ1Py#&2Pp}S<@ diff --git a/learning/basic/transparency/index.html b/learning/basic/transparency/index.html deleted file mode 100644 index adc0433..0000000 --- a/learning/basic/transparency/index.html +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: default ---- -

    Transparency

    - - - -

    Move the pointer left and right across the image to change - -its position. This program overlays one image over another - -by modifying the alpha value of the image with the tint() function.

    - - - -

    Original Processing.org Example: Transparency
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// @pjs preload must be used to preload the image so that it will be available when used in the sketch  
    -
    -/* @pjs preload="data/construct.jpg,data/wash.jpg"; */
    -
    -PImage a, b;
    -
    -float offset;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  a = loadImage("data/construct.jpg");  // Load an image into the program 
    -
    -  b = loadImage("data/wash.jpg");   // Load an image into the program 
    -
    -  frameRate(60);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{ 
    -
    -  image(a, 0, 0);
    -
    -  float offsetTarget = map(mouseX, 0, width, -b.width/2 - width/2, 0);
    -
    -  offset += (offsetTarget-offset)*0.05; 
    -
    -  tint(255, 153);
    -
    -  image(b, offset, 20);
    -
    -}
    - - - - - diff --git a/learning/basic/triangleflower/index.html b/learning/basic/triangleflower/index.html deleted file mode 100644 index 6da4838..0000000 --- a/learning/basic/triangleflower/index.html +++ /dev/null @@ -1,183 +0,0 @@ ---- -layout: default ---- -

    TriangleFlower

    - - - -

    By Ira Greenberg - - - -Using rotate() and triangle() - -functions generate a pretty - -flower. Uncomment the line - -// rotate(rot+=radians(spin)); - -in the triBlur() function for - -a nice variation.

    - - - -

    Original Processing.org Example: TriangleFlower
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -PVector[] p = new PVector[3];
    -
    -float shift = 1.0;
    -
    -float fade = 0;
    -
    -float fillCol = 0;
    -
    -float rot = 0;
    -
    -float spin = 0;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  background(0);
    -
    -  smooth();
    -
    -  fade = 255.0 / (width/2.0/shift);
    -
    -  spin = 360.0 / (width/2.0/shift);
    -
    -  p[0] = new PVector(-width/2, height/2);
    -
    -  p[1] = new PVector(width/2, height/2);
    -
    -  p[2] = new PVector(0, -height/2);
    -
    -  noStroke();
    -
    -  translate(width/2, height/2);
    -
    -  triBlur();
    -
    -}
    -
    -
    -
    -void triBlur() {
    -
    -  fill(fillCol);
    -
    -  fillCol += fade;
    -
    -  rotate(spin);
    -
    -  // another interesting variation: uncomment the line below 
    -
    -  // rotate(rot+=radians(spin));
    -
    -  triangle(p[0].x += shift, p[0].y -= shift/2, 
    -
    -           p[1].x -= shift, p[1].y -= shift/2, 
    -
    -           p[2].x, p[2].y += shift); 
    -
    -  if (p[0].x < 0) {
    -
    -    // recursive call
    -
    -    triBlur();
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/trianglestrip/index.html b/learning/basic/trianglestrip/index.html deleted file mode 100644 index 8273d9c..0000000 --- a/learning/basic/trianglestrip/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: default ---- -

    TriangleStrip

    - - - -

    By Ira Greenberg - - - -Generate a closed ring using vertex() - -function and beginShape(TRIANGLE_STRIP) - -mode. outerRad and innerRad variables - -control ring's outer/inner radii respectively. - -Trig functions generate ring.

    - - - -

    Original Processing.org Example: TriangleStrip
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -size(200, 200);
    -
    -background(204);
    -
    -smooth();
    -
    -
    -
    -int x = width/2;
    -
    -int y = height/2;
    -
    -int outerRad = 80;
    -
    -int innerRad = 50;
    -
    -float px = 0, py = 0, angle = 0;
    -
    -float pts = 36;
    -
    -float rot = 360.0/pts;
    -
    -
    -
    -beginShape(TRIANGLE_STRIP); 
    -
    -for (int i=0; i<pts; i++) {
    -
    -  px = x+cos(radians(angle))*outerRad;
    -
    -  py = y+sin(radians(angle))*outerRad;
    -
    -  angle+=rot;
    -
    -  vertex(px, py);
    -
    -  px = x+cos(radians(angle))*innerRad;
    -
    -  py = y+sin(radians(angle))*innerRad;
    -
    -  vertex(px, py); 
    -
    -  angle+=rot;
    -
    -}
    -
    -endShape();
    - - - - - diff --git a/learning/basic/truefalse/index.html b/learning/basic/truefalse/index.html deleted file mode 100644 index ae28643..0000000 --- a/learning/basic/truefalse/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -layout: default ---- -

    TrueFalse

    - - - -

    Boolean data is one bit of information. True or false. - -It is common to use Booleans with control statements to - -determine the flow of a program. In this example, when the - -boolean value "x" is true, vertical black lines are drawn and when - -the boolean value "x" is false, horizontal gray lines are drawn.

    - - - -

    Original Processing.org Example: TrueFalse
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -boolean x = false;
    -
    -
    -
    -size(200, 200);
    -
    -background(0);
    -
    -stroke(0);
    -
    -
    -
    -for (int i = 1; i < width; i += 2) 
    -
    -{
    -
    -  if (i < width/2) {
    -
    -    x = true;
    -
    -  } else {
    -
    -    x = false;
    -
    -  }
    -
    -  
    -
    -  if (x) {
    -
    -    stroke(255);
    -
    -    line(i, 1, i, height-1);
    -
    -  }
    -
    -  
    -
    -  if (!x) {
    -
    -    stroke(126);
    -
    -    line(width/2 , i, width-2, i);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/variables/index.html b/learning/basic/variables/index.html deleted file mode 100644 index b9a0439..0000000 --- a/learning/basic/variables/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: default ---- -

    Variables

    - - - -

    Variables are used for storing values. In this example, changing - -the values of variables 'a' and 'b' significantly change the composition.

    - - - -

    Original Processing.org Example: Variables
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -size(200, 200);
    -
    -background(0);
    -
    -stroke(153);
    -
    -
    -
    -int a = 20;
    -
    -int b = 50;
    -
    -int c = a*8;
    -
    -int d = a*9;
    -
    -int e = b-a;
    -
    -int f = b*2;
    -
    -int g = f+e;
    -
    -
    -
    -line(a, f, b, g);
    -
    -line(b, e, b, g);
    -
    -line(b, e, d, c);
    -
    -line(a, e, d-e, c);
    - - - - - diff --git a/learning/basic/variablescope/index.html b/learning/basic/variablescope/index.html deleted file mode 100644 index 84cd5a8..0000000 --- a/learning/basic/variablescope/index.html +++ /dev/null @@ -1,233 +0,0 @@ ---- -layout: default ---- -

    VariableScope

    - - - -

    Variables may either have a global or local "scope". - -For example, variables declared within either the - -setup() or loop() functions may be only used in these - -functions. Global variables, variables declared outside - -of setup() and loop(), may be used anywhere within the program. - -If a local variable is declared with the same name as a - -global variable, the program will use the local variable to make - -its calculations within the current scope. Variables may be localized - -within classes, functions, and iterative statements.

    - - - -

    Original Processing.org Example: VariableScope
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int a = 20;  // Create a global variable "a"
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  background(51);
    -
    -  stroke(255);
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  // Draw a line using the global variable "a"
    -
    -  line(a, 0, a, height);
    -
    -  
    -
    -  // Create a new variable "a" local to the for() statement 
    -
    -  for(int a=50; a<80; a += 2) {
    -
    -    line(a, 0, a, height);
    -
    -  }
    -
    -  
    -
    -  // Create a new variable "a" local to the loop() method
    -
    -  int a = 100;
    -
    -  // Draw a line using the new local variable "a"
    -
    -  line(a, 0, a, height);  
    -
    -  
    -
    -  // Make a call to the custom function drawAnotherLine()
    -
    -  drawAnotherLine();
    -
    -  
    -
    -  // Make a call to the custom function setYetAnotherLine()
    -
    -  drawYetAnotherLine();
    -
    -}
    -
    -
    -
    -void drawAnotherLine() 
    -
    -{
    -
    -  // Create a new variable "a" local to this method
    -
    -  int a = 185;
    -
    -  // Draw a line using the local variable "a"
    -
    -  line(a, 0, a, height);
    -
    -}
    -
    -
    -
    -void drawYetAnotherLine() 
    -
    -{
    -
    -  // Because no new local variable "a" is set, 
    -
    -  // this lines draws using the original global
    -
    -  // variable "a" which is set to the value 20.
    -
    -  line(a+2, 0, a+2, height);
    -
    -}
    - - - - - diff --git a/learning/basic/vertices/index.html b/learning/basic/vertices/index.html deleted file mode 100644 index 0705488..0000000 --- a/learning/basic/vertices/index.html +++ /dev/null @@ -1,179 +0,0 @@ ---- -layout: default ---- -

    Vertices

    - - - -

    The beginShape() function begins recording vertices - -for a shape and endShape() stops recording. - -A vertex is a location in space specified by X, Y, - -and sometimes Z coordinates. After calling the beginShape() function, - -a series of vertex() functions must follow. - -To stop drawing the shape, call the endShape() functions.

    - - - -

    Original Processing.org Example: Vertices
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -size(200, 200);
    -
    -background(0);
    -
    -noFill();
    -
    -
    -
    -stroke(102);
    -
    -beginShape();
    -
    -curveVertex(168, 182);
    -
    -curveVertex(168, 182);
    -
    -curveVertex(136, 38);
    -
    -curveVertex(42, 34);
    -
    -curveVertex(64, 200);
    -
    -curveVertex(64, 200);
    -
    -endShape();
    -
    -
    -
    -stroke(51);
    -
    -beginShape(LINES);
    -
    -vertex(60, 40);
    -
    -vertex(160, 10);
    -
    -vertex(170, 150);
    -
    -vertex(60, 150);
    -
    -endShape();
    -
    -
    -
    -stroke(126);
    -
    -beginShape();
    -
    -vertex(60, 40);
    -
    -bezierVertex(160, 10, 170, 150, 60, 150);
    -
    -endShape();
    -
    -
    -
    -stroke(255);
    -
    -beginShape(POINTS);
    -
    -vertex(60, 40);
    -
    -vertex(160, 10);
    -
    -vertex(170, 150);
    -
    -vertex(60, 150);
    -
    -endShape();
    - - - - - diff --git a/learning/basic/wavegradient/index.html b/learning/basic/wavegradient/index.html deleted file mode 100644 index 3601639..0000000 --- a/learning/basic/wavegradient/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -layout: default ---- -

    WaveGradient

    - - - -

    by Ira Greenberg. - - - -Generate a gradient along a sin() wave.

    - - - -

    Original Processing.org Example: WaveGradient
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -size(200, 200);
    -
    -background(200,200,200);
    -
    -float angle = 0;
    -
    -float px = 0, py = 0;
    -
    -float amplitude = 30;
    -
    -float frequency = 0;
    -
    -float fillGap = 2.5;
    -
    -color c;
    -
    -
    -
    -for (int i =- 75; i < height+75; i++){
    -
    -  // reset angle to 0, so waves stack properly
    -
    -  angle = 0;
    -
    -  // increasing frequency causes more gaps
    -
    -  frequency+=.006;
    -
    -  for (float j=0; j<width+75; j++){
    -
    -    py = i+sin(radians(angle))*amplitude;
    -
    -    angle+=frequency;
    -
    -    c =  color(abs(py-i)*255/amplitude, 255-abs(py-i)*255/amplitude, j*(255.0/(width+50)));
    -
    -    // hack to fill gaps. Raise value of fillGap
    -
    -    // if you increase frequency
    -
    -    for (int filler = 0; filler<fillGap; filler++){
    -
    -      set(int(j-filler), int(py)-filler, c);
    -
    -      set(int(j), int(py), c);
    -
    -      set(int(j+filler), int(py)+filler, c);
    -
    -    }
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/basic/widthheight/index.html b/learning/basic/widthheight/index.html deleted file mode 100644 index 34056b9..0000000 --- a/learning/basic/widthheight/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: default ---- -

    WidthHeight

    - - - -

    The 'width' and 'height' variables contain the width and height - -of the display window as defined in the size() function.

    - - - -

    Original Processing.org Example: WidthHeight
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -size(200, 200);
    -
    -background(127);
    -
    -noStroke();
    -
    -for(int i=0; i<height; i+=20) {
    -
    -  fill(0);
    -
    -  rect(0, i, width, 10);
    -
    -  fill(255);
    -
    -  rect(i, 0, 10, height);
    -
    -}
    - - - - - diff --git a/learning/basic/words/index.html b/learning/basic/words/index.html deleted file mode 100644 index 9728000..0000000 --- a/learning/basic/words/index.html +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: default ---- -

    Words

    - - - -

    The text() function is used for writing words to the screen.

    - - - -

    Original Processing.org Example: Words
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -size(200, 200);
    -
    -background(102);
    -
    -
    -
    -// Load the font. Fonts are located within the 
    -
    -// main Processing directory/folder and they
    -
    -// must be placed within the data directory
    -
    -// of your sketch for them to load
    -
    -PFont fontA = loadFont("Arial");
    -
    -
    -
    -// Set the font and its size (in units of pixels)
    -
    -textFont(fontA, 32);
    -
    -
    -
    -int x = 30;
    -
    -
    -
    -// Use fill() to change the value or color of the text
    -
    -fill(0);
    -
    -text("ichi", x, 60);
    -
    -fill(51);
    -
    -text("ni", x, 95);
    -
    -fill(204);
    -
    -text("san", x, 130);
    -
    -fill(255);
    -
    -text("shi", x, 165);
    - - - - - diff --git a/learning/custom/index.html b/learning/custom/index.html deleted file mode 100644 index 83e27db..0000000 --- a/learning/custom/index.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default ---- -

    Custom Demos

    - -

    Demonstrations built from scratch or found in the wild.

    - -

    Custom Built

    - - -

    Found "In The Wild"

    - -

    diff --git a/learning/custom/intersect/index.html b/learning/custom/intersect/index.html deleted file mode 100644 index 6d9fbd8..0000000 --- a/learning/custom/intersect/index.html +++ /dev/null @@ -1,244 +0,0 @@ ---- -layout: default ---- -

    Line Intersections

    - -

    Move mouse to view line intersections.

    - -

    Original Example: Line Intersections
    -

    -
    - -
    int DONT_INTERSECT = 0;
    -int COLLINEAR = 1;
    -int DO_INTERSECT = 2;
    -
    -float x =0, y=0;
    -
    -void setup(){
    -  size(200,200);
    -  fill(255,0,0);
    -}
    -
    -void draw(){
    -
    -  int intersected;
    -
    -  background(255);
    -  
    -  // lignes
    -  stroke(0);
    -  
    -  // ligne fixe
    -  line(20,height/2, width-20, (height/2)-20);
    -  
    -  // ligne en mouvement
    -  line(10,10,mouseX, mouseY);
    -  
    -  intersected = intersect(20, height/2, width-20, (height/2)-20, 10, 10, mouseX, mouseY);
    -  
    -  // dessiner le point d'intersection
    -  noStroke();
    -  if (intersected == DO_INTERSECT) ellipse(x, y, 5, 5);
    -
    -}
    -
    -
    -int intersect(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4){
    -
    -  float a1, a2, b1, b2, c1, c2;
    -  float r1, r2 , r3, r4;
    -  float denom, offset, num;
    -
    -  // Compute a1, b1, c1, where line joining points 1 and 2
    -  // is "a1 x + b1 y + c1 = 0".
    -  a1 = y2 - y1;
    -  b1 = x1 - x2;
    -  c1 = (x2 * y1) - (x1 * y2);
    -
    -  // Compute r3 and r4.
    -  r3 = ((a1 * x3) + (b1 * y3) + c1);
    -  r4 = ((a1 * x4) + (b1 * y4) + c1);
    -
    -  // Check signs of r3 and r4. If both point 3 and point 4 lie on
    -  // same side of line 1, the line segments do not intersect.
    -  if ((r3 != 0) && (r4 != 0) && same_sign(r3, r4)){
    -    return DONT_INTERSECT;
    -  }
    -
    -  // Compute a2, b2, c2
    -  a2 = y4 - y3;
    -  b2 = x3 - x4;
    -  c2 = (x4 * y3) - (x3 * y4);
    -
    -  // Compute r1 and r2
    -  r1 = (a2 * x1) + (b2 * y1) + c2;
    -  r2 = (a2 * x2) + (b2 * y2) + c2;
    -
    -  // Check signs of r1 and r2. If both point 1 and point 2 lie
    -  // on same side of second line segment, the line segments do
    -  // not intersect.
    -  if ((r1 != 0) && (r2 != 0) && (same_sign(r1, r2))){
    -    return DONT_INTERSECT;
    -  }
    -
    -  //Line segments intersect: compute intersection point.
    -  denom = (a1 * b2) - (a2 * b1);
    -
    -  if (denom == 0) {
    -    return COLLINEAR;
    -  }
    -
    -  if (denom < 0){ 
    -    offset = -denom / 2; 
    -  } 
    -  else {
    -    offset = denom / 2 ;
    -  }
    -
    -  // The denom/2 is to get rounding instead of truncating. It
    -  // is added or subtracted to the numerator, depending upon the
    -  // sign of the numerator.
    -  num = (b1 * c2) - (b2 * c1);
    -  if (num < 0){
    -    x = (num - offset) / denom;
    -  } 
    -  else {
    -    x = (num + offset) / denom;
    -  }
    -
    -  num = (a2 * c1) - (a1 * c2);
    -  if (num < 0){
    -    y = ( num - offset) / denom;
    -  } 
    -  else {
    -    y = (num + offset) / denom;
    -  }
    -
    -  // lines_intersect
    -  return DO_INTERSECT;
    -}
    -
    -
    -boolean same_sign(float a, float b){
    -
    -  return (( a * b) >= 0);
    -}
    - - diff --git a/learning/custom/molten/index.html b/learning/custom/molten/index.html deleted file mode 100644 index 97c621f..0000000 --- a/learning/custom/molten/index.html +++ /dev/null @@ -1,292 +0,0 @@ ---- -layout: default ---- -

    Molten Bar Chart

    - -

    A dynamically-generated bar chart. Move mouse to view dynamic pie chart.

    - -

    Molten Bar Chart
    -

    -
    - -
     int xspacing = 16;   // How far apart should each horizontal location be spaced
    -int w;              // Width of entire wave
    -int maxwaves = 4;   // total # of waves to add together
    -int total = 0;
    -
    -float theta = 0.0f;
    -float[] amplitude = new float[maxwaves];   // Height of wave
    -float[] dx = new float[maxwaves];          // Value for incrementing X, to be calculated as a function of period and xspacing
    -float[] yvalues;                           // Using an array to store height values for the wave (not entirely necessary)
    -float[] last;
    -
    -int pos;
    -int rel;
    -int numLines;
    -int idealLines;
    -int idealSpacing;
    -int targetX;
    -
    -void setup() {
    -  size(600, 150);
    -  //frameRate(24);
    -  colorMode(RGB,255,255,255,100);
    -  //background(0);
    -  smooth();
    -  w = width+16;
    -
    -  for (int i = 0; i < maxwaves; i++) {
    -    amplitude[i] = random(20,30);
    -    float period = random(100,300); // How many pixels before the wave repeats
    -    dx[i] = (TWO_PI / period) * xspacing;
    -  }
    -
    -  last = new float[maxwaves];
    -  idealLines = numLines = int(w/xspacing);
    -  idealSpacing = xspacing;
    -  yvalues = new float[numLines];
    -}
    -
    -void draw() {
    -  pos = constrain(mouseX, 75, width-75);
    -  rel = 1 - ((pos - 75) / (width - 150));
    -  
    -  //background(0);
    -  fill(0, 10 + ((1 - rel) * 100));
    -  rect(0, 0, width, height);
    -  
    -  //numLines = idealLines + ((1 - rel) * idealLines);
    -  //xspacing = idealSpacing - (((1 - rel) * idealSpacing) / 2);
    -  
    -  calcWave();
    -  renderWave();
    -  renderChart();
    -}
    -
    -void calcWave() {
    -  // Increment theta (try different values for 'angular velocity' here
    -  theta += 0.02;
    -
    -  // Set all height values to zero
    -  for (int i = 0; i < numLines; i++) {
    -    yvalues[i] = 0.0f;
    -  }
    -  
    -  total = 0;
    - 
    -  // Accumulate wave height values
    -  for (int j = 0; j < maxwaves; j++) {
    -    float x = theta;
    -    last[j] = 0;
    -    
    -    for (int i = 0; i < numLines; i++) {
    -      // Every other wave is cosine instead of sine
    -      int diff = j % 2 == 0 ? sin(x) : cos(x);
    -      int add = diff*amplitude[j];
    -      
    -      last[j] += add;
    -      
    -      yvalues[i] += add;
    -      
    -      total += add;
    -      
    -      x+=dx[j]; // - (((1 - rel) * dx[j]) / 2);
    -    }
    -  }
    -}
    -
    -void renderWave() {
    -  noStroke();
    -  
    -  fill(254,60,0, 120 * rel);
    -  beginShape();
    -  vertex(0,height);
    -  for (int x = 0; x < numLines; x++) {
    -    vertex(x*xspacing,height/2+yvalues[x]+-5);
    -    vertex((x*xspacing) + 10,height/2+yvalues[x]-5);
    -  }
    -  vertex(width,height);
    -  endShape(CLOSE);
    -  
    -  fill(255,0,0, 120 * rel);
    -  beginShape();
    -  vertex(0,height);
    -  for (int x = 0; x < numLines; x++) {
    -    vertex(x*xspacing,height/2+yvalues[x]);
    -    vertex((x*xspacing) + 10,height/2+yvalues[x]);
    -  }
    -  vertex(width,height);
    -  endShape(CLOSE);
    -  
    -  //fill(255,0,0,255 - ((x/numLines)*200));
    -  //rect(x*xspacing,height/2+yvalues[x],10,height*2);
    -  // - ((1-rel) * 4)
    -  
    -  for (int x = 0; x < numLines; x++) {
    -    fill(255,0,0,255 - ((x/numLines)*200));
    -    rect(x*xspacing,height/2+yvalues[x],10,height*2);
    -    // - ((1-rel) * 4)
    -  }
    -}
    -
    -void renderChart() {
    -  int h = 0;
    -  
    -  for (int i=0; i
    - - diff --git a/learning/custom/snake/data/dirt.jpg b/learning/custom/snake/data/dirt.jpg deleted file mode 100644 index 3eed597438d4a93b396025f70ef6dc17b609d2c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34606 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 YE$2|7-zr82T#!$Gnf3Ihf#`q#*;+;pcK`qY diff --git a/learning/custom/snake/index.html b/learning/custom/snake/index.html deleted file mode 100644 index 40f0dd9..0000000 --- a/learning/custom/snake/index.html +++ /dev/null @@ -1,159 +0,0 @@ ---- -layout: default ---- -

    Snake

    - -

    A snake that follows your cursor.

    - -

    Snake
    -

    -
    - -
    -// @pjs preload must be used to preload the image so that it will be available when used in the sketch  
    -/* @pjs preload="data/dirt.jpg"; */
    -
    -float[] x = new float[20];
    -float[] y = new float[20];
    -float segLength = 10;
    -PImage a;
    -
    -void setup() {
    -  size(320, 240);
    -  smooth();
    -  a = loadImage("data/dirt.jpg");
    -}
    -
    -void draw() {
    -  background(226);
    -  image( a, 0, 0 );
    -  dragSegment(0, mouseX - 8, mouseY - 8);
    -  for(int i=0; i < x.length-1; i++) {
    -    dragSegment(i+1, x[i], y[i]);
    -  }
    -}
    -
    -void dragSegment(int i, float xin, float yin) {
    -  float dx = xin - x[i];
    -  float dy = yin - y[i];
    -  float angle = atan2(dy, dx);  
    -  x[i] = xin - cos(angle) * segLength;
    -  y[i] = yin - sin(angle) * segLength;
    -  //stroke(23, 79, 4, 220);
    -  
    -  pushMatrix();
    -  translate(x[i], y[i]);
    -  rotate(angle);
    -  
    -  color c;
    -  
    -  if ( i % 3 == 1 )
    -    c = color(0, 0, 0, 255);
    -  else if ( i % 3 == 2 )
    -    c = color(255, 255, 0, 255);
    -  else
    -    c = color(255, 0, 0, 255);
    -
    -  stroke( c );
    -  strokeWeight(10);
    -  line(0, 0, segLength, 0);
    -  
    -  if ( i == x.length - 1 )
    -  {
    -    fill( c );
    -    noStroke();
    -    beginShape(TRIANGLES);
    -    vertex(0, 5);
    -    vertex(-2 * segLength, 0);
    -    vertex(0, -5);
    -    endShape();
    -  }
    -  
    -  if ( i == 0 )
    -  {
    -   // stroke(0, 255);
    -   noStroke();
    -   fill(0, 255);
    -   ellipse(segLength, -2, 3, 3);
    -   ellipse(segLength, 2, 3, 3);
    -    //point(segLength, -2);
    -    //point(segLength, 2);
    -  }
    -  
    -  popMatrix();
    -}
    - - diff --git a/learning/index.html b/learning/index.html deleted file mode 100644 index 0b44057..0000000 --- a/learning/index.html +++ /dev/null @@ -1,388 +0,0 @@ ---- -layout: default ---- -

    Learning

    - -

    Basic Syntax

    - -
    - - -
    - -

    A brief look at the structure of a Processing sketch reveals how easy it is to program interactive visualizations.

    - -

    As with any language, you begin by defining your global variables. Then you create a setup() function, where you control the visualization's properties, like the canvas size, frame rate and perhaps variables such as the stoke-weight or background-color.

    - -

    The next step is to create your draw() function, which controls the behavior of each frame in your animation. The draw function loops continuously unless you tell it otherwise by using the exit() command.

    - -

    To the right is a basic example of Processing.js in action. If you take a moment to read the source code below, you will see that a few lines of Processing code can go a very long way. You may also notice that Processing syntax is almost identical to Java.

    - -{% highlight java %} -// Global variables -float radius = 50.0; -int X, Y; -int nX, nY; -int delay = 16; - -// Setup the Processing Canvas -void setup(){ - size( 200, 200 ); - strokeWeight( 10 ); - frameRate( 15 ); - X = width / 2; - Y = height / 2; - nX = X; - nY = Y; -} - -// Main draw loop -void draw(){ - - radius = radius + sin( frameCount / 4 ); - - // Track circle to new destination - X+=(nX-X)/delay; - Y+=(nY-Y)/delay; - - // Fill canvas grey - background( 100 ); - - // Set fill-color to blue - fill( 0, 121, 184 ); - - // Set stroke-color white - stroke(255); - - // Draw circle - ellipse( X, Y, radius, radius ); -} - - -// Set circle's next destination -void mouseMoved(){ - nX = mouseX; - nY = mouseY; -} -{% endhighlight %} - -

    Adding interactivity to your visualization is incredibly simple. There are a host of -built-in functions such as: mousePressed(), which controls the -behavior of your script on click events; or mouseMoved() which -defines what should happen as your mouse moves across the Canvas.

    - -

    Processing.js also tracks a range of pre-defined variables like key, which -stores the value of the last key pressed; or mouseX and -mouseY, which store the last recorded position of the mouse -pointer.

    - -

    Using Processing

    - -

    There are two ways of implementing processing. The first way is the recommended one. -Let me illustrate both of these:

    - -

    First Method

    -

    Needed files:

    -
      -
    1. processing.js
    2. -
    3. anything.html
    4. -
    5. anything.pde
    6. -
    -

    The anything.html file will look like:

    -
    -
    -<script src="processing.js"></script> 
    -<canvas data-processing-sources="anything.pde"></canvas>
    -
    -

    The anything.pde file will look like:

    -
    -
    -void setup()
    -{
    -  size(200,200);
    -  background(125);
    -  fill(255);
    -  noLoop();
    -  PFont fontA = loadFont("courier");
    -  textFont(fontA, 14);  
    -}
    -
    -void draw(){  
    -  text("Hello Web!",20,20);
    -  println("Hello ErrorLog!");
    -}
    -
    - -

    Second Method

    -

    Needed files:

    -
      -
    1. processing.js
    2. -
    3. anything.html
    4. -
    -

    In this method the anything.html file will look like:

    -
    -
    -<script src="processing.js"></script>
    -<script type="text/processing" data-processing-target="mycanvas">
    -void setup()
    -{
    -  size(200,200);
    -  background(125);
    -  fill(255);
    -  noLoop();
    -  PFont fontA = loadFont("courier");
    -  textFont(fontA, 14);  
    -}
    -
    -void draw(){  
    -  text("Hello Web!",20,20);
    -  println("Hello ErrorLog!");
    -}
    -</script>
    -<canvas id="mycanvas"></canvas>
    -
    -

    Notice no data-processing-sources attribute on the canvas?

    - -

    Writing Processing code with JavaScript

    -

    If you love JavaScript and want to write processing examples with it you can. Here are -a couple of examples that showcase how to do this.

    - -

    -
    -<html>
    -<head>
    -  <script src="processing.js"></script>
    -</head>
    -<body><h1>Processing.js</h1>
    -<h2>Simple processing.js via JavaScript</h2>
    -<p>Clock</p>
    -
    -<p><canvas id="canvas1" width="200" height="200"></canvas></p>
    -
    -<script id="script1" type="text/javascript">
    -
    -// Simple way to attach js code to the canvas is by using a function
    -function sketchProc(processing) {
    -  // Override draw function, by default it will be called 60 times per second
    -  processing.draw = function() {
    -    // determine center and max clock arm length
    -    var centerX = processing.width / 2, centerY = processing.height / 2;
    -    var maxArmLength = Math.min(centerX, centerY);
    -
    -    function drawArm(position, lengthScale, weight) {      
    -      processing.strokeWeight(weight);
    -      processing.line(centerX, centerY, 
    -        centerX + Math.sin(position * 2 * Math.PI) * lengthScale * maxArmLength,
    -        centerY - Math.cos(position * 2 * Math.PI) * lengthScale * maxArmLength);
    -    }
    -
    -    // erase background
    -    processing.background(224);
    -
    -    var now = new Date();
    -
    -    // Moving hours arm by small increments
    -    var hoursPosition = (now.getHours() % 12 + now.getMinutes() / 60) / 12;
    -    drawArm(hoursPosition, 0.5, 5);
    -
    -    // Moving minutes arm by small increments
    -    var minutesPosition = (now.getMinutes() + now.getSeconds() / 60) / 60;
    -    drawArm(minutesPosition, 0.80, 3);
    -
    -    // Moving hour arm by second increments
    -    var secondsPosition = now.getSeconds() / 60;
    -    drawArm(secondsPosition, 0.90, 1);
    -  };
    -  
    -}
    -
    -var canvas = document.getElementById("canvas1");
    -// attaching the sketchProc function to the canvas
    -var p = new Processing(canvas, sketchProc);
    -// p.exit(); to detach it
    -</script>
    -</body>
    -</html>
    -
    - -

    Here is another example that uses 3D

    -
    -
    -<html>
    -<head>
    -  <script src="processing.js"></script>
    -</head>
    -<body><h1>Processing.js</a></h1>
    -<h2>Advanced processing.js via JavaScript</h2>
    -<p>Processing.js Cube</p>
    -<em>Note: runs via a web server or requres local files access in the web browser settings.</em>
    -Converted to the JavaScript language from the Processing code<br>
    -Original souce code:<a href="http://processing.org/learning/3d/texturecube.html">TexturedCube</a> 
    -by Dave Bollinger.
    -
    -<canvas id="canvas1" width="200" height="200"></canvas>
    -
    -<script id="script1" type="text/javascript">
    -
    -// Attaching js code to the canvas by using a sketch object
    -
    -var sketch = new Processing.Sketch();
    -// define 3D context
    -sketch.use3DContext = true;
    -// preload the images
    -sketch.imageCache.add("pjs.png");
    -// attach function (also, can be specified as the single parameter 
    -// in the Processing.Sketch object constructor)
    -sketch.attachFunction = function(processing) {
    -  var tex;
    -  var rotx = Math.PI/4;
    -  var roty = Math.PI/4;
    -
    -  processing.setup = function() {
    -    processing.size(640, 360, processing.P3D);
    -    tex = processing.loadImage("pjs.png");
    -    processing.textureMode(processing.NORMALIZED);
    -    processing.fill(255);
    -    processing.stroke(processing.color(44,48,32));
    -  };
    -
    -  processing.draw = function() {
    -    processing.background(0);
    -    processing.noStroke();
    -    processing.translate(processing.width/2.0, 
    -                         processing.height/2.0, -100);
    -    processing.rotateX(rotx);
    -    processing.rotateY(roty);
    -    processing.scale(90);
    -    texturedCube(tex);
    -  }
    -
    -  function texturedCube(tex) {
    -    processing.beginShape(processing.QUADS);
    -    processing.texture(tex);
    -
    -    // Given one texture and six faces, we can easily set up the uv coordinates
    -    // such that four of the faces tile "perfectly" along either u or v, but the other
    -    // two faces cannot be so aligned.  This code tiles "along" u, "around" the X/Z faces
    -    // and fudges the Y faces - the Y faces are arbitrarily aligned such that a
    -    // rotation along the X axis will put the "top" of either texture at the "top"
    -    // of the screen, but is not otherwised aligned with the X/Z faces. (This
    -    // just affects what type of symmetry is required if you need seamless
    -    // tiling all the way around the cube)
    -    
    -    // +Z "front" face
    -    processing.vertex(-1, -1,  1, 0, 0);
    -    processing.vertex( 1, -1,  1, 1, 0);
    -    processing.vertex( 1,  1,  1, 1, 1);
    -    processing.vertex(-1,  1,  1, 0, 1);
    -
    -    // -Z "back" face
    -    processing.vertex( 1, -1, -1, 0, 0);
    -    processing.vertex(-1, -1, -1, 1, 0);
    -    processing.vertex(-1,  1, -1, 1, 1);
    -    processing.vertex( 1,  1, -1, 0, 1);
    -
    -    // +Y "bottom" face
    -    processing.vertex(-1,  1,  1, 0, 0);
    -    processing.vertex( 1,  1,  1, 1, 0);
    -    processing.vertex( 1,  1, -1, 1, 1);
    -    processing.vertex(-1,  1, -1, 0, 1);
    -
    -    // -Y "top" face
    -    processing.vertex(-1, -1, -1, 0, 0);
    -    processing.vertex( 1, -1, -1, 1, 0);
    -    processing.vertex( 1, -1,  1, 1, 1);
    -    processing.vertex(-1, -1,  1, 0, 1);
    -
    -    // +X "right" face
    -    processing.vertex( 1, -1,  1, 0, 0);
    -    processing.vertex( 1, -1, -1, 1, 0);
    -    processing.vertex( 1,  1, -1, 1, 1);
    -    processing.vertex( 1,  1,  1, 0, 1);
    -
    -    // -X "left" face
    -    processing.vertex(-1, -1, -1, 0, 0);
    -    processing.vertex(-1, -1,  1, 1, 0);
    -    processing.vertex(-1,  1,  1, 1, 1);
    -    processing.vertex(-1,  1, -1, 0, 1);
    -
    -    processing.endShape();
    -  }
    -
    -  // mouse event
    -  processing.mouseDragged = function() {
    -    var rate = 0.01;
    -    rotx += (processing.pmouseY-processing.mouseY) * rate;
    -    roty += (processing.mouseX-processing.pmouseX) * rate;
    -  };
    -};
    -
    -var canvas = document.getElementById("canvas1");
    -// attaching the sketch to the canvas
    -var p = new Processing(canvas, sketch);
    -
    -</script>
    -
    -

    Read Quick Start Guides for Processing Developers -or JavaScript Developers, to -learn about the Processing language.

    - -
    - - - - - - - -
    diff --git a/learning/screens/Picture-14.png b/learning/screens/Picture-14.png deleted file mode 100644 index 79890f468fd1327d0434dafcbf8ad0ab7e2ace2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18978 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 N002ovPDHLkV1i+B9I5~S diff --git a/learning/screens/Picture-15.png b/learning/screens/Picture-15.png deleted file mode 100644 index a5cdbe19de0b93a48b1a4d73ae1f284ab8ef9b52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29282 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 SEO+Ubp}a`G?zf3yng0On`ugMJ;M1? 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 X{pjvj=DA~K00000NkvXXu0mjf7|~3D diff --git a/learning/screens/Picture-18.png b/learning/screens/Picture-18.png deleted file mode 100644 index 4cb164be2f5f67a0367f733544c36f96cb91285e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4099 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 FV1oKp@ACiv diff --git a/learning/screens/Picture-20.png b/learning/screens/Picture-20.png deleted file mode 100644 index 45633d49bb9e8a474c9e9e5ec1598b0c8b3a3cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8807 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 diff --git a/learning/screens/Picture-25.png b/learning/screens/Picture-25.png deleted file mode 100644 index 7d41b8642fd3e0963f5b86820d4639b84c84d21b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3673 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 diff --git a/learning/screens/Picture-26.png b/learning/screens/Picture-26.png deleted file mode 100644 index 26760b795462bd277934529fdeec45d37a83313a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmeAS@N?(olHy`uVBq!ia0vp^CxQ3`2Q!c?bupa;q*&4&eH|GX)}JtE?Rp91OP07s zlmzFem6RtIr7}3C zU%wg~8>_3U-@AA3*RNm8moI<$@};!2^rugsZr;2Z6BF~}$B#EY^O_kLn9h2-IEGZ* zdUKnvDWrIE!L*Y` zTa!4AWKJ8+HB6iqmeZ0_HB%#5bDM+I(j1M+DPQoh{LmT5X zPj1pw^>}opi*Naqj85SkRY`5ZW|dPhr@Vx;I^A`jteUiN%375$BdZn_y{Vg~`AnTL zPi5+-&`DgJLMk2;6dapaV2mf7C3Z`Nr7+^Pw(Xx(+B8YexLWY(*-2&mNqW;KSKRLZoHXh0&abC`ehup^|F$dWp4Q2?23w~r zDLy`Fk?^D`{~DKk^qTwQQAEzHVQm!0$aV`f9uB6T79Ndw$=Y8^86z-S_X#hOOP9ELh(8PHl$pT~)98 zulF|=o4;GO?DI~g>Gyp9E|Ps$@qb6vwP|}4P<;mXA_WXPv!!#rP6Z{;DN}l+vHtH$ zm*${p&*!dS;hgk;>TTgkvyUv^GuP|Tah79mB~SVuNjhJmG~v0`MGjCPYj|}TcLsaN z7v1Xgl9|*$ZA)+$c7XX0V_`q)cDPn07cm?;=M MUHx3vIVCg!0KPqg(*OVf diff --git a/learning/screens/Picture-27.png b/learning/screens/Picture-27.png deleted file mode 100644 index 57418652b9572c4b27c1f1c08db5bc322717f0ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 698 zcmeAS@N?(olHy`uVBq!ia0vp^CxG}Q2Q!ciyw%GIq*&4&eH|GX)}JtE?Rp91OP07s zlmzFem6RtIr7}3C&lBadu&SW_O6IqUP9IX2HdtnTLqtu~sq z*lAnk1?ua!_IsU*WEP&(u*1o4-ODKlb)CkqecYT|xCw2xq1!<*YyWO71GV77L$j+0@R?{$Witr?avMj?*`b}KFwxINd)&gIe6H@`VP zI%zqxZ@S{O&vDNLPrf2XCKe6>1&0O(QW$^OPdq-k$NGuk)8$6C_hcv8&-Y>@WX^s@ z&+~t6=H8S2l>X1)!zPmKgDc)6p)`q=V?wx7ShG%4A5&z#LzJq~6jhn96C5k2?r>56 z9(96qh$VaG`Z-`!U=qaoq;Wz*3~)xN)h$&*rIXl1z-D6)(kIwV^=9o=xS(@Pzronc6 d&VCjNhWL=?z`TifT7e0L!PC{xWt~$(69COo4gCNB diff --git a/learning/screens/Picture-28.png b/learning/screens/Picture-28.png deleted file mode 100644 index 986b5ae05c0d2dcc4c78b5a07e69387cac57359a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1415 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 N002ovPDHLkV1hcYcUk}d diff --git a/learning/screens/Picture-30.png b/learning/screens/Picture-30.png deleted file mode 100644 index 188dddfd836e74f4b7cb5ea07af717fee7295fa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1336 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 QkpKVy07*qoM6N<$g3UMRCIA2c diff --git a/learning/screens/Picture-32.png b/learning/screens/Picture-32.png deleted file mode 100644 index aa8c6c7f9a76487afb00c72e6ae4b770bc7e9d54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1858 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

    LRaA7U>_?dqcN*S>MR|{^~#_p8pf)hx2X0_H;#i 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 N002ovPDHLkV1g-+0ipl^ diff --git a/learning/screens/Picture-35.png b/learning/screens/Picture-35.png deleted file mode 100644 index 9a6c5dd2c1ad160a4f202a18bd13d1ab5b856b41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8575 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 FV1oV9Hzoi8 diff --git a/learning/screens/Picture-36.png b/learning/screens/Picture-36.png deleted file mode 100644 index d95e81cdb08e3066d0d7b2e20ab565ad9889e242..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 842 zcmV-Q1GW5#P)(Gl$81T`R(oPx3{E-3+^78WG;o;fY*&+Oj#sB~U zph-kQRCwB~mw|SxFbIZG6Kgca_kY{V4;W+D)3EE%b!S?>{a^$_!+#p#Dg^#G&rlZwfg>A%Z`yZ(dW# zse&~KKyC$xZ9yRyVju&^{oQefa3M4b0f@WLl);D^hXHVN?wc`yNT-Mjn0;0eSGMMz3Ll)5z>WxEH#>k1X#qXFxPJM#9{gQP>JoE#b!nQ!<}-rF4)=MYLm`0{RQ z5V_<}ecSUa)+iEwj1&beqImK!j`}du&)J3NACCqQw5r?(IPFm6(?IQ@d5xelx;g5@ zYA^TD9H;R+O?)#g;N$4159@li+@=vKxH?eDewCCj(@K1mN0EL@! Uav_-PegFUf07*qoM6N<$f*bINk^lez diff --git a/learning/screens/Picture-37.png b/learning/screens/Picture-37.png deleted file mode 100644 index 1ed7ed868110db0c93cb6226cd14e3ee7277878d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 916 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 z 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 diff --git a/learning/screens/Picture-41.png b/learning/screens/Picture-41.png deleted file mode 100644 index aa857e6c016587be82f70e2ffbc180a3a7a2d389..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 779 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

    e#B%z{Pt^c7Xt0}l7% z=eK|jPsbPgG7qoc(>2@g>lVki-sgd^17UD{IYuUIUn`J*0t^6geXY}-keSs00000< KMNUMnLSTX|P@P5q diff --git a/learning/screens/Picture-43.png b/learning/screens/Picture-43.png deleted file mode 100644 index aed09f59c570bedee8c02b8e4aef096da2ce2bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1603 zcmV-J2E6%+P)-L?&Rd;{{H^d)YSF$^*cK|4h|0K>FM(F@=#Dvd3kvN007U=&mW0BRsaA6 znMp)JRCwC#+v{ShAPfND%GwQDm%jho9=Qq%0#*m{B=twDsQC=eirww~et*BeF~*el z954>{;Mcr6E@cQl6__WkNw4nXe^*Kz=Qhag91_k%4V_~P`Wjt4#R23X$HC7(8bQc$afi5+1IR&+gP%KJ%CQ3i0?<3))5nZw z{GOpY9S8%f1K@MWX%5)W*aKxkyO3)0k)$aoLr zoZt18rIE~c2joNt6gsMwbm-Vfw!R?k9GkgTLr(hLYq?|B(vBRtL@Oa@I^aKWzyU4# zafsd>xf7%$$tuXH4*2K~v*_OepI#`tavXVMdD{Pf9C4AWC`d!cp*LjbI^e^@T;8&s z~QjY7vC8usIWLWhVy{A}eAi7NpV4~mu-q=5q}1{0x2 zN7aM=hy$8Bpzubc0MenOa*UxT2Yl>+Mh=m5R1f;}>8PqF^yOHWBMa-x5zo5l2Uq2g z7LKyoa>kv1|pKr1rx(`8$)=1?%<;etAN~Bsf{7W zrVgeQEFM0TpE{LqN47WMH-w|$UojsG=XS&rgE46&V@V2&0c|B8aR_#NtTkK%- zTE1gUDD)!Em|8EwSgh+-V#|KVY&*}vZEHRsf=7WPSS!qB^hz6MG_{uw#!M#yf4AZB z^wu$r!b87wjKSXZyL>&^xITbvk&7!A_fukgqF4qqjf13_V8Lgz+MIQ)Nd7+D_OcE( zjw=XX96xtP2)0a#i(uzso%T9Z8)5OQf`mI53mxI%TXzKJJ~FY+l37Pd{^6QzK3>ds z@M!bAgZVGb@Mn$8eq_OXvvkxQYrQ1*QWX1MIpmhqL5#duLBH~w>j-A~qR0+Ld8YGf z#$sFYZ=c-#;vmkif_gA-GDm$eOHa!MZZ=CU+n(YZi#N^J14od99LERGJEkjg{}baS z4%4*bH@v{XP0PODpN>Hg##C}K$0W5C6@ zrsI8kKEGbrAcpb!dIkmS42s$gjP%pTaNe5gP;n>unq&6C=&+Br1HJH zau|n{XbPUV-{)#f4C%0v$%16k2*uF7>izyFzyLVQ)O>qVTeJWG002ovPDHLkV1kMO B{+|E< diff --git a/learning/screens/Picture-44.png b/learning/screens/Picture-44.png deleted file mode 100644 index 28562a95e13280a4eaec13e8f5a1877b49670351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 781 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 m1~6)+s+&#d}17hyy`pCoD!__@3u-60j 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 yr8kn@icAFIucewYPvmjD0+ z=t)FDRCwC#-3@c2AP@#%U|XGYs-JT0RH2S{R&t3mS2L`)8$1(Av`buP(}kwL3^OOoVB#F&SmS7RnK z$jDGaQ8`A4eua#AC{mRr6C?+s6h+AtNrt4Kb*k&sgGi|vBqx#s=~7XGh?hjBKxje6 zNE(K83}FaE7{U;SFoYotVF*JQ!Vrcqgdq%J2tydc5QZ>>AtypCwgCZDp#=z{m8Jnm za`-M#hXj;bSRj9m1R*iB(zP6qBTYa69T`YizIt3h4P+oFf?H|YA`pQ9O1tbxpKGT9 z0lWOB$1zkHBBvI_d5c(pSnvNh`kW83T1i;SBPkpWh&gE1LVG}*wQ=H*X~-cB3A64; z8WP7GDH?!8hF5S9#8% zfS~pInm~4ixY$SV@whRh@=XrL925uGeIQV^_H@VX#=&y{-v;^HD!Tq#ku~8ekypHk9@%%1xvK63}cvvr?*WJ2RlQ zMy*8Rf)zIGaj~P8d(2d=?BI8-X#!i=?Jk~Gl@QQ7j1B4Rc=xtykFdVm;GnJ-mLc)? zyY1~$y?@s$Hccvj`NomG?%E0Z_}TqNh^Wdv1n2GzfvSc=VA2>@{~8*A#HoXq;lgG6 zUXVB>ziG{I$r^DBBo4XoE+%<}WDCT;opZ$N#&p5afw&+S=1yJ&YF+EyiDd+kyV&1U zoN%8T$3dIeh&vAAH8)*JqmG;;#yKT7Vc98T29DRs2@+ORJ5VM>H1WFKC zS%4Z+r`FoofQ~+-U)-5M9ugf^(oe)eQiO*ie~nnUbZ?p0r9$QOxnUuB3R@QBq&A`Br3`T3&omH&&%C5TGT>yMj%FD4S7IX~|D z{iiEJUL?2t-hY)7AyQo{5XBIN98%wijZRrq=(oUq?b@CF@yApm-3;pRm60N&HhZ0Ry{tXy*0Cb>@OX2s^VVY6&BIn>6Qq%p^Jt#uMNtP_%ZwDK?$<(`}?h| zta`akKR}?3=ZG#iTKvHDKpIeJyBRdXY}sHj@pE{wrzg>-g${zR79n_b-8eFa~0M(sWk_} zV6LhTEoiH=Omwgt2!gOo0TZpX8pcy;-%WGYVLxrsEa8Z&xb&D^Gf)~67^kGx-VRL)?P=|CWbx88&8wYSdNpG;0Gb zN>kVi7~{=srT(L`NC=y~$Pc#fnp7n-5;RO*r+u5L3aoY@Bp z<3yTGMd^kbb~arM9}45}-VE-0w)Z0kd717#l`glzVecRtDx#$84-;d#RJ{ynz9hdU z=7W}<#$8E%JO9G{0wpU*cXj0$V$XiP&(%STo z*%>ok5H|gJF`uHP)68kL)G4A(Q`_72b4AGLipUP-v%lVwHL`~PAdGK4t+7R?L-YF{ z!OSj1&gIPIf4artr(cnOO{ChpC$v6erBt6CUz}BoDtKFA!;fv_1aY*gLwl#A&y=Z; zzUsmz1V~TD=?7ym6;p_xyGNth%3`i9$;Qt49+IohTuSy{ zk)@3kiJjuqyH=vR7S5#w{%#jL*R{=&;}Cfx zf#1RRcgXLwALYv&E<<+#PId2dGkoigBfQfY4D%Os18uT}0)s~66JxJ*DEsdT9X*h~ zhb#>e=7)$mQYu7H|47XwJ<`_Ix#=5GTIjTGWf!Uk7azfefD|<`{?6uQ;x_ca_b;UX zTD3Yrcxz0pA?)3>`LrFeu022|g*_ z06a5S`+Cm!A{_9CnZGE!|IIYS!&=l*5L)fhW`e}oxuH&c%j`Bz_wRWPXR$Q56AQs^ z2g7dAO_0Rrgmoy!zO244nkJYX_2HWOs5W}N+0}?&U|Ue65}#`~oXlRkV-V4m?D7PE GD)C=6Ea2z> diff --git a/learning/screens/Picture-50.png b/learning/screens/Picture-50.png deleted file mode 100644 index 99ae9671d5600a48c0503f54504878ea8fec322c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3669 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 diff --git a/learning/screens/Picture-51.png b/learning/screens/Picture-51.png deleted file mode 100644 index 9606d7fe7485641bc3616c50acfd1a98bf43bc55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3288 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 diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0001.gif b/learning/topic/animatedsprite/data/PT_Shifty_0001.gif deleted file mode 100644 index 1a9893ad2b270cab205245d3152aad85e437b28a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmV-A0mc4DNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MO=)_KhcX&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGh%lkTg$x@ydAoJCIVGTmS$7 diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0002.gif b/learning/topic/animatedsprite/data/PT_Shifty_0002.gif deleted file mode 100644 index c53edb9435c8051031578678d4eef2faee8b269a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmV-E0m1%9Nk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C=q*xbjSM@LlKnzTo^13<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGh%lkTg$x@yd0fhcXNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C=fy!0t@fSbz)ozT5uq>*;txpz(;xF_g%r z)5BCmpVaDPn!sAO+=JFD>x#Qy@c3*kF3RXOjR+^Y=fGSXPS5N2{J#GW7)TZ-SZH{N zn5dY+w&-|8_$XP?IB6*rd8xUSx#?;48H!LT`bb*3sD`@A+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGh%lkTg$x@ydc|(5>i1GIqSU550 zW~g|9xagR{=Hr+6SV=`GfTM|N*@?&LMChq_<4`3!T6kBQ$(j0C6dU_WJ1Kixn``Q- z+l$&e`U~7CJX~39yeOG$yvz*j{0z-2U2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGh%lkTg$x@yd)O4GH?Q8k OeEa(S3pjAz0suSYD$~jU diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0007.gif b/learning/topic/animatedsprite/data/PT_Shifty_0007.gif deleted file mode 100644 index a53c6abc7e4a1228268198feb5771f07ab65f686..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmVv8q=utim3XK*zQuh0DH$evBFGF!_Zl-`n_|95v|{F}SX-07?p8;zw5Z5=pRbgT{7E8zPbJS{#<4sJf4z8B8k zZugEJUpMbvuSR>0pHH?A&tDpV^aTF<1FxDv9Bin8`nB*2CN5JHMvUQ!;={*_V;)t6 z$We&LZXvroQ)Q&2$tEm8s(jM&)O4GH?Q8k zeEa(S3plXg!GsGNK8!fA;>C;`JAMo~vgFB>D_g#dIkV=?oI88|3_7&v(WFb8K8-rH r>eZ}UyM7Hjw(QxoYumn!JGbuLynFlp4LrE;;lzs@KaM=Pivj>UW-tJT diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0008.gif b/learning/topic/animatedsprite/data/PT_Shifty_0008.gif deleted file mode 100644 index 1ce59b9a63b7b8902e12856f1f69b57022324b9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 615 zcmV-t0+{_rNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_qwh~PF&G%gZi~x7OqERwTDwo8g z^NCF+VO77RdGgrjwju{<-8xXhtu~*xDl9e zSg5EoXxF$136U7}7-`AJc&RB_DUdd~X?d6v1R4rCI_BAVidw0(+A15{0Bbtym#BJ+ zi>Ld^+MCncagJKY_TeXm3jX-Y-N=)~tV#5B5U??`R z$Pvn(I3PoEX+(0PNs$@Llw6q)WuKQY8#=;tuO=OtI3w!Zd6Q4hpC|5k97?o=(UwS) zj#yd?p3@#sZ#JF!p=wX8H?#_(#g&FvL{h_w9pn+L*%)>7U0s`@EjXWWf6T1+wr+)# zoYd-F!S|itzbOL4DN7izON6izvnYmziDMU$y9}PJSk+<7GbZKbyf+wK(1t#f24woQ z>eZ}UyM7Hjw(QxoYumn!JGbuLynFlp4LrE;;lzs@zc~6hBIV4REBfO60`%zAt6RU0 zJ-hbp+`D`K4nDm2@#M>!KaW1W`t|JFyMGTqzWn+0>)XGNKfnI{{5t#l{|{h*0uD%E zfd(FkV1f!R$Y6sGJ_uoi5>7~Ag%)0jVTKxR$YF;beh6ZSB92I6i6)+iB0~iL06XD| BG%^4H diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0009.gif b/learning/topic/animatedsprite/data/PT_Shifty_0009.gif deleted file mode 100644 index 557bedf8ee1d5e61f0e785fe738f706d82b8ab6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVoKNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoK{6a@PZl=KWkMz0u5Dh0=; z^NCzabxr^P>YQqKJ*)Q%j&8@ZF8FK}lh-aY`g(-3=j{L-`=skt_~W6u7ii-504R7E zqGqIs*l1zMN3P(UgZLEEVd&4{!gvu8N*p6h6uSO@7vVM7 z_=jUhd&i7mM7_85kbQ=R2U{M``PAi!uTNe5y@*rX-_tiQe-y|1_OSQk&;MI;0D?dY zf9nnP#4eW}0fQ$!42wz6ocXa?VL-op#=dXP$cQ$!DK_{t0NH Pf(}Y(p@tp`K>+|eB|&Pm diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0010.gif b/learning/topic/animatedsprite/data/PT_Shifty_0010.gif deleted file mode 100644 index 31fd776e421e1bc9ccd124cf2a74c7ba71cc4239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 806 zcmV+>1KIpXNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`%tOCV58+K`gt zQ3-`Pr_`!5ie*{1)vWh41&GJw^7V@zIm>MFGYtNxpYNfj|g3kwQ? zn_GIyu<83J+)zAxcN_|g45y6B-2C-?@I)<*MSXUS4W+#u-R%vGbY&ebUZlL`iJm^R zZq@#d7T?895A@xOpWm}@r=Pza&%hZFI50;+LT?Zzyb%vULw65#M6AZdVMYEL7Z0A> zsE*vGk09ZRgf_3FkYmCosti(Wm&chef5bdxj$+LiH-nYax${NOWhsLa#CcMq(G)G2 zkzA^9R79mvOAK8mv+9hdt+Hz6DK%WLuN=d6^-8t{S4Th7Zl!eXsav6N(aD{wwl1%> zc(awl@Lt%r`Q78cug8Giv-k>`E%=u~%o(`eJ(-XO;d$*`s9=WV)#o966bb0xL_dK-Vt(havtNi4 zni3F&AzI^+OexYAoQ*Pih?o+(V(F!pPlowrmt;0r=9y@Usb-7qwYesLaK34#ny3*8AvX`s$tItE{t0NH zf(}Y(p@trcXrhWP%4nmGJ_>21l1@r#rIucbX{MTP%4w&behO-+qK-;xsivNaYO1QP k%4(~wz6xusvd&6tt+w8ZYp%NP%4@H_{t9fcS``2QJJ9oi5Z~z$k{oS37RN68dYj)nfkN}+UnW_t0_CXR7-h_ zo22W=+k5mID*XCsT8U~rjGVm5oa-F=hZh_TRLVAHy^JkXeYaNTeErQ6PKRJwXMV0T zxuypEhL*^+^;)P@LY9 z#&F4Cs8bqHk0PC_f@cGWSYK$3Dz)p*n_I7nHBlAp%d;!eS{=xCEV-r#;l^d*)@aVV z940=XNSCh&zYYKk&N}n&!@!3>5H6c#Z{rJ()$W^&HgVxMk}*%H{MN4L!I~jo9!;8@ z;w_y~D^|UkHDlKnKp#C#+k@?vxO4X{UADJx4ZC5t9uE6}InJ|@dlBW1x$_Oh*X3(I z9c=R8!n1z{uD!eW2mzZX9A6u{`RnMls3*_9{deo|m1CDLIzM;)`2P3vzinTC&(Zf> zd;Y^xm|@murhQ_jSy!2CVz^zJ3BDPkhjL=arF`||+1{Q&cIc&@ zW(IoZn}n)K=b>$~spyW0Zpmk#kp2niq;%G~sG*FRm87Da7P%p%mySwmsivNaYO1QP z%4(~wz6xusvd&6tt+w8ZYp%NP%4@H_{t9fc!VXJpvBn;Y9&ED8F3W7Q&OQrmw9-yX UZMD{3i*2^rZp&@AQxyOJJBjD1wg3PC diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0012.gif b/learning/topic/animatedsprite/data/PT_Shifty_0012.gif deleted file mode 100644 index fe81e42ace687cafb3f8ff8991403ff7c6513642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 877 zcmV-z1CsnlNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+vbh#WpULTVVEt4d)b6_d4QJl>bwE9@7vR?hFj#nq zc-RK0lr|`s7#S(Yh~(%fnW>0ZdE}-ET1eShL>Q_$N=k%zDw(P(#M+wp3i~5Fi&$&h zgPSYL$qVHByDO|ioNIiHlRUf3Y~$Pt9ZfTRT5TF3zhHKw|_ANCal+QVGnf?hgH0o@!o28BX4*}S*_*Elam^ayEy}9&u|5Y&e|CQ z=+mM(nI6lU1EtrWNym;b+i~Knw@1QNO}jVn-w$XCzmPlg+2a%e{g3>fpoMb*wTG|m}8c?T9<XlffA$e#6yi=XZGK$=;p<_UY$> z5e6zKd1mUDUYpkqsT-1xHR|Ay4HB9tp@q6<>4$e(T4|<<9$Me0o+>x$bC8ZmYN>;& zYG|fB&If9!(40zOQTWAbo~?c1nyZtv)|!^0t`19VvBn;YL2R3i*LSG6aWA_ D76`hv diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0013.gif b/learning/topic/animatedsprite/data/PT_Shifty_0013.gif deleted file mode 100644 index c8ede5df6ca24e9d3ea110b4de5f9cc9026cfbed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 877 zcmV-z1CsnlNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{C+(E2JlqkNn5*e zi<^tO%hKx$2^_34OssoslI*+8OyZ0S9WAn2sBCOq5-UI%FdKM!%H14(+L#{xon39- z0nUgX*?tJ$ttp7Qoq&ixLY_TM3nJA6_(7lnh5qOnLI~nuyJ8AD-Gk^sqQ(Ax3lmAi zs6peyiXI7q3~6#819=}$UPw8TCD_FN^`z2i~_bc7F zcFlHN2cYdEWhldp=27vD?#>OU7p1I;UvZnd#D&t$1SZ*_-(aFJ1Nb?#95wDu2x!x8iMg2}hSM zvUaGAxWQIW{dc(O)heMMZ|;=)^yTNflm8z4JbIu^scQ#D3ORkf;Qn9ZCl48a@wsA< zJ~0Jo(mV>TCtZ2dLxe?$A%-LASDAh2WTN3es3G_tgfkUYVQcfmR?>kf zD!AZ3DXIu#PVkXf;9}$4HsgvgIwsy;`R&Lekw(tfVTcYfG8vN2eRyJh3i*LT>761S{ D--^BJ diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0014.gif b/learning/topic/animatedsprite/data/PT_Shifty_0014.gif deleted file mode 100644 index 1f141376196dbe633ad159786c61d958e45cb2e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 951 zcmV;o14#TwNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zm==(+nAj2k*;o-BAbxZO|M|JCS8Q~YTLFBNn2FYWO?mhUVjS0Hc zqLEHwBhiyQuDIn-C&sAHNi#xtQIaPyc&3#?PADamZSFV`oJ|qwA#UZEvtv(g>c}Qr zdyeU1jW2>Z4xVG8c&L`_RP$$tBl5zA3ux-q-gM};AK zD`00S3oUK9QmdS^*k(H(V&HDuz_a5TRPMLTnu%Dem98b*v2 ZjB?5Nk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQSqT<^xshqff$3TC>AA^y;RygBnyR{ri8@L;VS36+8*u8{>IzGd zi+lSE9DJMmy8F=EE36FMT5Q}vY`Z+o{P_%_3ZT8s-R;dSdL1G9U2d-JEbfqe-ma@I z!4B@;oer;%Tq|E6aE~p$N`O9Z_WT`aR?q+|aQzHI3kM2WLx&3>mXh|4Vgmka7$j=M zm++X!j|VxHT$e2)Ns9tmB3P*Mqs4$AaYZ9paucnMwo-sMx9xe8yo+$8pb^NHDuGI9h;v0y7ubZlCh@l4V1UYjEb8I|Jsr`Y=5j(kxivs_pavpO#S9t zOqMUJdy6y2teu~Ax=%GC)O;QsSzX#ybBeagCR(4suSu*Pf1!Iz@cy$_cg0X^!O6!R zM&CqZlXRqvcOFJd0Vtn$_aIatep+dzAb%J}2pxgjN%+}@1hxlOfdKAT34&Q!#T|qV zTE!KM5mwkCgD@J$B7^ynBa2y+wMY~{5V}~OZ8D}*4uwOaNXdOj9$4a%MegPwk4~1D z&y>>{s3UaQJa{9H0e-nudiWk^*L? zVzd}KyC;}}N;TGB%{t0mw~I-Xq=VR&_T-q;id&e4p|NY3h49WxZ@u>3i*LUA?#pk# z{{9Pazyc3UaKQ#2jBvsVFU)Ym4nGWW#1c*v2 Id_@5OI~HZny#N3J diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0016.gif b/learning/topic/animatedsprite/data/PT_Shifty_0016.gif deleted file mode 100644 index 5bc583f0a6cb22f2372f5e4002da876531223597..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmV;G18V$7Nk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQh5E}5wA}UIn5(=;i5UOAbYx;VMilEBcI%*Kh z8@uaUD{za;i)&0A%Swwnyb5~^eQb&x+}s?EjT}H-dwZP??z}BtJ^me@?X6p$i|(E) z8!SBi9v(0MdtPt6jDMisD2 z$Wg+_dATCa8z~HeuZk$;IRv&~rNwd!1;#|U@f6Nkut-k4s52k~mbzFnj7M)KNdP5{ zf?PICY1C0p{oS+Ha%oeKN1={m`qQ9Cs$8FzJP9^yzMAILdaByf0miB>%dUMe*KXaj zcjfk@%kF2$1bO-H6|7X^N5I|m4knD)aNxy>B^s36*zjYqm&0a8?8h|>2o30hpu01<=%(H=S*N0mlbx!KVk59WCHup>b(_z<8|v7kl3Z&KJ56Wlkny0q9 zY?Nl63Xn-+T|4c9IUR|bwthJom$(g-Yi_#guFGz_?!F6eyz3i*LUA?#pk# r{{9Pazyc3UaKQ#2jBvsVFU)Ym4nGWW#1cVj4WLYeSK|woDIyKOAda1J{|2D{EYsd z&ArafI}LvyKA-H4fB)MmU{$|?umB#gHxQn_aS4qf9A?mfGH(FB{JtSGjXV#-Bk#wnj~I z>3vT_noF&E?d-ZM(&Zkbo23g?taJ|ll9%`)zdN#epyfN%KqO^rw3bb0=nj& zGr%S1PHhH0W)W)R*|n4@!@bj>M*nppOMiYLw;y&9g2rKe$-#D@h5q?P9DYCD7vM7} z@*`G$4^Ft=W6*hnUU>{YCs0K?QpRJ3MGY9=CDwH~UU6Wpm=28HEO#Ma+yzJ>j71tb zC6Y7NXycYQLYbSFO@hf@H{NZ>rHtJ{sb!2^qDiHAZmRj@fK-0>=6U?cxf*qFim4)< zcLF*mlhU18XPSa~m}PX`cr~S3NhTO2fZc^tWn7hF$epBzV%n#lupxRKs8`AtDW9fl zTGClbe(7ARPU0iysi-#O&!(K>s*tWy()!$wVb)1wpb>3HU)5%@%KBP-%R>4n13i*LUA?#pk# h{{9Pazyc3UaKQ#2jBvsVFU)Ym4nGWW#DEk406VS^%pCv# diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0018.gif b/learning/topic/animatedsprite/data/PT_Shifty_0018.gif deleted file mode 100644 index 0b99e37279b596abe0bf9398bab0f68632b2c6cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 zcmV;619bdHNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT59SPkjjy&dV0VLivb&Z$_jAHYGHc| zkXyRT+Z#ZU8XVj@T5OCv+w8o|OsZ_`Tx}h2Je-Wp`wYEY-K{M;4f}omt&AM1K8^mK z?Mq(l4sTB@ja_dKzrGF3@7_3500X}B_lujsegg?Ayao{#;lo?J1l zMZpj4dIGw-nXt}0#mPp;Ia}?{`=~kfz1#QfbGfqu?mWDrxa7v?B8Tnyw{E@9Z)4r3 z_O-%niQ`?~{`9zT&dT%qoO7{j>ub$J!YaKgZ8Buk**C39@bNu6+d(n(^U z+%*^^cz5FI=bsLCnNeGVDhipJYZ3}+Ymz!QD3unr)+myiy5m)+OKM6Ws87nckd1-P znJS;G!YGleg2MWqmTQic)QE>7YO4dLHtMK+zA_4IsKgK}U+Sg9t{U8-zZQ#Z1kXaN zECbUf+pD#l0;^TE3mD7oQCmIWVNK%>dv3TYovLoT?!F6eyz3i*LUA?#pk# h{{9Pazyc3UaKQ#2jBvsVFU)Ym4nGWW#B~$^06TVT)zkn0 diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0019.gif b/learning/topic/animatedsprite/data/PT_Shifty_0019.gif deleted file mode 100644 index 7a9217ad371e7adc673b117c02b97898195e04d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmV-?1B3iWNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVdKnPlv6_mo>Z%b-iy8|6AbUZZ z8*6%t+xwtIfAA1g)4^ zPpoe9eM3|Ubq#-c`P zrgQ1(=FWspjjmLf^OiGM%Y0o;nsr^zVq#r=MJdY~RkBaLos~%tCeWdA+lmy*7O2~V zZy)BQtCK5Hr%2IKthH@0VW^#M=9Rl}tYfg$K-S}H7i;B_mv!|GT3Bnxt%M85Q%Be1 z&tCAb4pd!k9Ai%Uvdy!6&h&~ET;lDu#=Y5U$>`lrITE^WP?D4i9hu)qG>@mOZz0@YS<*yiPu2@}KPIMlGw|_chk>??MJRk+sRO=>8yIoc`Zy*EuKJ zYTB*mUSsSbXq$R#`9+{TwVC(eL$Jm69Di_K$jf$r8P-pST?IJNfNlMUp=#&>nA~ek zjn~_4#C?boi=D~09CPx8BV%(oVMou5IckF3j4cNDqm4i!xnhj-sbgJ}>mkS^le)zS zl3Ye-w; z(MhQmj**r1ibbN`*j1Tk9@is*iK5AncxzUw=B1bp`sSvVqQdBRTZS1QY?(G$;R3h~ zsUW8iocBs;G`@Ohtg^By>#Vxr3hSf*{K_k$wia3evBL^GP=T?rDk}lAzUn&6uh6=N zYiZTemKg<#O{$?ysj_sft>TVLZn@^3i*CB=uFGz_?!F6eyz3i*LUA?#pk# S{{9Pazyc3UaKR810029sc-KV$ diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0020.gif b/learning/topic/animatedsprite/data/PT_Shifty_0020.gif deleted file mode 100644 index fe8fdae31cc91e8473a390c35f20334698dac939..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 854 zcmV-c1F8H+Nk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!LMg5HPDzTYGy^ z3jm;tkSjb)9Gq*~>r1@M+$>z0%w}!SHtgA@RUkCnf67yl? zRgvSuc?X_Z9A?1W$5ARvqGZ7Ap~sF2V=8DSljK5OIBz~X){>^Jo(XUU-8s~mOJN#w z7HkL19YuNCj?#-tRVq_|I<1m2>2zSct}}%iJ9jNB)`&>YdaTFPRZjhtwxhDC z&cdzS2DfiKw0rgXB}@?UQ%{QBq1#H(aAL8CDeL@d8S*#HY%^BICpa?Q$^H<=lbqHr zXo#Xcryf_j8SK2S_nO8RyEA6cwh`~0Ez)!7&5mI&?lf`P=H9rEbK;ho>TAee0smed z*KYCZ*3S_u9sA`%PZ!GFYV~Z2ch*^X-9{3=HWBo{2kk2`om4Ha9Qe=|Ep=IPI5(2p4iGNi{ zrHR*(NF!@i&c$Se=};M^lo!6^Wtp1Th$fU*mKYFmtFU=qhF!`hmYSKksnAJw!WpHT zb23DMpkea(KzXcyIf0^s;s^nwhXTN*pOoskW?&Ua`k|(Udiv<4Z(3SuiE45x*{Ps* zN@=MLILfN17L+$CRITa>>x-Cr7ptrw-CFA>`ejf|r+pH8Dr~2_EX!=O&OQrmw9-yX gZMD{3i*2^rZp&@A-hK;ixZ;jWZn@^3`$_=-JO3=Qi~s-t diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0021.gif b/learning/topic/animatedsprite/data/PT_Shifty_0021.gif deleted file mode 100644 index ab36afe0ddb3ff6048190cff3699e2a9e80f6da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 841 zcmV-P1GfA}Nk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+v}?p5KIwFTzo*BS{(48-0UoD8VoS~{5*Y)T}-`9Dt%o|j4eJ6APqh09ZtT^{*Bxn zQ10DMPyP-cU#~xYj=%r!4%Iw>*^~u5H80;ccHr{$gSV|=!(;ItqN}(}qB8!9!qRao zWiF$!YUKosH0kgoK9SAbDU`R-BSK`(7$!6*Zzj!<+X{MAw{2!llsPqOD=5?`xOEmo z-BgN`pUR6;2QmeUG}_CETcyggH&v8Xm|d%uZ3=2E%z8(~q5Y&5D_4wh!#X`1(x_CS zW(_WV`PS1|s7G(|jYzhoONBDEx+F`l?bpDao<_YoFeG1+U?Kaon>OWVvui(Z23+%} zRb!67F0Pr_?LCOD=jvUYbSq(?tU-#NYdaZI7kBCMPcTciys#Cquv6 z)4E!p+ChhQJv}l{<;yX8wn-PGK+)mbg;PhlvT)VznGZe9ST6j*-u}OX&AeY%@yUl- zdZ-E5A6(RFBUy6?9VXj$h{>i(T@pGNR5Ey7DA#=ux>H+KduixZh!KvsUWq1FmsN_g zf!G&n6>hkleHpqa;#Jw*h$BFX@%Z6C4Gt(6bp*B8Cz^&5DyW}-4$7z|iB7;}q?epo0e=u4T4K1poj$@Kl_} diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0022.gif b/learning/topic/animatedsprite/data/PT_Shifty_0022.gif deleted file mode 100644 index 98dc00b573636eb2dd2f3e18ec7466e3546b9166..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmV-+1Bv`cNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)dyc?hp&>YA0N{KPe3_ z?gXVYBRGy4k(zRPlxR(hL#bB9nXTm0PbWo2h4`@J*p+G3hV|-E8^EM#y=p{TmTN(u zMwzbuHU?!Bddg${LmxaL=or55-7X_)in%2DkuRqT^+ zX_%59cTVjWbXdQr<+fhkQnls1wsp&1ESh&~pg(6HtUdfI>x#Nl0gnxrIqlk>V=9-P zm^y6LJ!1=IJDm8-+1cqXJr5SG-mX=z%PhRU>-*JP=Q@Yq8^3t_$o^&C?CzKUZGI_1m|2b#r&~n2Nr9a?@>z(S zWVW~`o$L@Qh@W@jxuceIRyc^Fhaw6An}S9P=%WB^iYAPka%!fYd43unJ*0N(>8bGq znTTUAvbiRF6oGoBn~$Bj<)Wm5S|6%uYRTfKzUH%QvAYiYN^7z1mD;GW#v-c+h^lf> z-?O3i*LUA?#pk# M{{9Ov9t8jZJBcE<#sB~S diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0023.gif b/learning/topic/animatedsprite/data/PT_Shifty_0023.gif deleted file mode 100644 index a3dd7f38c56348293b9a09a43af3a23672b525f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcmV+=1KRvYNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doa`IGjL;m+94-C)%M36ba2)^~4dDH)&5b<`Jx;BRp02*m-d?X`5Iup{V|72QYTK zSdUyOj~_33n|AV_Mo$(^rX(rt8%F^vIaw?Ta$-)I4M|CC2{PwLY%gbyB3d*XxTQjq zn(EdPB~x%n|DBSU(&f~oO07O+*cB{Lrd5rO1e-PH)}TM}T^%Y`>DHKSQ>ksc_N6wE zcHsui3pH-vn_U&X6%<{W}+B z>9eO#k5+w|HQK$j$-=G~imu_>m2bO!+gd8;!k$07#yK2uY@c!SCO5g7Icn!zC91+p zohMO|n6rDY&Rq0&=Z*?oeQ%)4AE|w=og_{1Ncgq8M?Tqn^%=yU zTR07PNJ;XgL;-!j9r)WK3hFbKc?meEz=VxxxIl#w(!<_|`^jY?AddM{Sp^t&7@{I4 zqR5kqEi&+8f-};1;{-KkxFaDw@|dEGF~SIuAwOQ2qXb8GL>MAVG8trpB#P)vSWZp} zVw5^2i6nzI4oPH*K!VAlmqubKP+=E1Nad4%tjMC37-nO6$vAqRx6C8i&Xrq;ou!#N_UmK#)B>9Evok&r$p; zR(tvsAxKkAOX`D)H7V7rC_iG2sxKQVt|je>{JJli*;Q)Io~?&gW7nmm+M?WtHm%&E zMnBGloAoVERc-B=&1={#&{Bl~Bi5SA?pefO|MLALnet|nIDSo zTQO3{L?;VxF}d31f~V23B_SfhV(wR_0ZZ2EymsR2f89 zog=qtCMAPhlBnL3%XzS6mXHwFqz2?svStWFUGio+a?VL-op#=dXP$cQ$!DK_{t0NH Pf(}Y(p@tp`OaTBpa)xt+ diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0025.gif b/learning/topic/animatedsprite/data/PT_Shifty_0025.gif deleted file mode 100644 index 0107f470c8303002b369ebecbeea83ac6f966e83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmV;M0%ZM1Nk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFWD91xJ~?2H`!JT1+Povppi-R=Di9xgskUjB7`OdZ{9@};j*tdrR}Y`ds{3)vMrS?=JjlpQB_w0LmlnQJ+B_KY;I zU9>DY16Fz(vue=^`u>cd7b)t>e^%dIi263}-2{iqR^%IIaNY-!H$Ui^c^|AiodaC{ z8+dBu#2r|d@V$2Q?1HG156{m$&Fz7^uV>#AyK?x4%>PC|d@#uIi*7D6EPfXTz7^z? zbbI)h8D$wqGDGd zgmzbn^)blW2T577R0%?1VpTpq{s?4{LJmn}kwzYgWRglQ$z+pGJ_%)%Qif0f06Rg8 BLrwqy diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0026.gif b/learning/topic/animatedsprite/data/PT_Shifty_0026.gif deleted file mode 100644 index e05a139441e7ef17b3fa7d7278f8cafd258aaf32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~N;Nk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXeTpSS494$RfU2T1hovppi-R=Di9xmPho&5Zad|p1z-tPVm zA1{x+o<487j=rE@Ukk0z;GBSd{saazmt>i4`Q}2-6V&L>y&g=v)# zY0)UKdOZra@(kCgSznD^x(02}gI51FjkNM_wzzZCXuR9_AKx~R2UmXE?`+EaI@_*8 znlOv!6axdwe$w*i!CzA=hB|x$`0KrkS8ZK7~Ag%)0jVTNH8002Ax0V;9; diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0027.gif b/learning/topic/animatedsprite/data/PT_Shifty_0027.gif deleted file mode 100644 index decdebe59c3bd66f1352af58e6a50640e19c2ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmV+$0_6QiNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di&Kn>wjyzr-p02*m-tPWR zzKjk}UvGaDFmIf%oUgCIZJQQ@MLJaw2 z4h7m2haPr<^?GvZo}^?!80E>4>m9cLR!}?;F|J%W zRgeD2skCmJzJi0Ol-hO;VI~XHCPvfr@e-|w{f>!jc{19qnZfLxLK!jS0GzV`mi* d96R%S+`D`K4nDm2@#M>!KaW1WdISXk06X&E5Rw1@ diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0028.gif b/learning/topic/animatedsprite/data/PT_Shifty_0028.gif deleted file mode 100644 index ec2bae766266581c14995733914d50de162db05b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmV44ET@UNt8JHkp!et=BaZOF1}u z2C1mjPE4mnLK1~Db?Fh4K;x*Sx`gXhHD9$d5jyrv*(*YGl090bEm$#YwV*ZYrS6uy zc3ZAUk@`Xd-iA8yJ4p;O&Xr?;lzs@KaM=P@^=LQ06PV``q=;g diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0029.gif b/learning/topic/animatedsprite/data/PT_Shifty_0029.gif deleted file mode 100644 index 67d14b168e0097fadea6dfd02dd608bddc8f567c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451 zcmV;!0X+UkNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGb}5TK8&-%s2h004k}!T<^+7)+nQg9v{qWZ2NxLx963Ms%p~BF2@08YKqw zSBzpvk^eFVFlMp~z>{ZEa#`8Yi_4b*7lITsbIVGII6ua`Vvr+CnKgfEu{e|_!!j0$ zE@fJiqspR5$2^pJlxiBJS)Zceip6AAGgpl^$@w+vO)6;9+BB<#GIURjwkjl!5vX1;0Ik;=(7I9*QJ*|H~1CqCUA%=we0QIb}M muCXbx=t!g^m8z6l)gV@rR%MJ&QI~0RTH%^2MD1 diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0031.gif b/learning/topic/animatedsprite/data/PT_Shifty_0031.gif deleted file mode 100644 index aae6bfbf3056bab3a06f333e822d631c1cbb0a14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmV-l0igazNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGcq%}EWC|4?Yv|CJLI4qqO{_@l;zBWr4Us|g x*zsXVju?KT_9CPwCi7=?pq09;Z06UBuv26eV diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0032.gif b/learning/topic/animatedsprite/data/PT_Shifty_0032.gif deleted file mode 100644 index 7cdd3561b36c372b505e46d2793730207ecd9152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmV-T0kZx_Nk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGh%lkTg$w}(2%zj?vWF0nQH)s8qQoDG8INt$ f*wNU>hWkc}3|Y)%N|eM@uEfZZq|BN63IG5*r_QX0 diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0033.gif b/learning/topic/animatedsprite/data/PT_Shifty_0033.gif deleted file mode 100644 index 97fc0848036679baab1dd7cc79be10be763c50ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmV-J0lfZ4Nk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGh%lkTg$x@ydUq0;~W diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0034.gif b/learning/topic/animatedsprite/data/PT_Shifty_0034.gif deleted file mode 100644 index 85e71dd53cbca4beef5341d97adda085627a43fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmV-C0mJ@BNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGh%lkTg$x@ydy< diff --git a/learning/topic/animatedsprite/data/PT_Shifty_0036.gif b/learning/topic/animatedsprite/data/PT_Shifty_0036.gif deleted file mode 100644 index 92bf1c3dacb75cc32075884b8e4037eb538d016e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315 zcmV-B0mS}CNk%v~VaNc;0HFc^|Ns9000960{{R30A^8La00062EC2ui0LTEy00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGh%lkTg$x@yd0suR~Kb|rG diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0000.gif b/learning/topic/animatedsprite/data/PT_Teddy_0000.gif deleted file mode 100644 index 2f824d4aeeccb04c36ecc4d72e60182cb38adc25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmV-10nYwMNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7)44gkQPz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajR+h&di)5|Qvm=w DC8n8f diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0001.gif b/learning/topic/animatedsprite/data/PT_Teddy_0001.gif deleted file mode 100644 index 08badda941eaeedfe77aa936a98731375f6d705f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmV-50m}YINk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%sX;01V4G9`l$Cq{fl1 H3IG5*y-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%sX;01d}D8t_;Qq{fjX IzZ3ufJ60&0kN^Mx diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0003.gif b/learning/topic/animatedsprite/data/PT_Teddy_0003.gif deleted file mode 100644 index ea92ccc973f4b04a9b0e7ebe764c1b2c6ff39360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmV-60m=SHNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uup01d`C9`HyEq{fjX IzZ3ufJ6c_v!vFvP diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0004.gif b/learning/topic/animatedsprite/data/PT_Teddy_0004.gif deleted file mode 100644 index 4bd11209c90bac25e8732d0f3246dbecf69ac99b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315 zcmV-B0mS}CNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h>->W020YIatyXHK}ca9 Nmwn8LGUb>806Sqlos$3n diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0005.gif b/learning/topic/animatedsprite/data/PT_Teddy_0005.gif deleted file mode 100644 index 35dd95adfae84b8e2a466db8570217a961e36fe1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmV-P0k-}}Nk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8Lu04#h6F`~qY6f0W1IL2YJh9DY&HB7)USV)i^ beT_u$(PK)K!%i9~`O787nKWyLC;$LEVxFYx diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0006.gif b/learning/topic/animatedsprite/data/PT_Teddy_0006.gif deleted file mode 100644 index e0311029200c658e38c33c00db3f7eb3003f73bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmV-Z0j&N-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a${9z%qphp)pMMu%X0>6f0W1h|yofVJZv(cr4~oVaScX lMg|y3l2^zBCV{m)xzgoF1TlZrG;p(5&Wt>J`pj1V06R`etCIi# diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0007.gif b/learning/topic/animatedsprite/data/PT_Teddy_0007.gif deleted file mode 100644 index c64d4f836d3b4275c51d782c2d7c4d3249f01d8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmV-o0iFIwNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!anItTCy5-VG4dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6K1tgg|86k9 zY)_xBzt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlaUi~A6C(xyP|+Ahi#Z%Sdi)6TTE<`Y zFplJ95GCB^mlR{lBxaLlF`Y4S-n_U{*w1<=bqx)PG^x_1%?bbjI|3uH A00000 diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0008.gif b/learning/topic/animatedsprite/data/PT_Teddy_0008.gif deleted file mode 100644 index 3ceb22ee764c6271e9aaa4e38bfee3b71a8ef574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmV;10eSvMNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UhC?@Cp(uTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-fm0V z4DUWKE5B?{pRd2q-|znqFrdJJ1PdBGh%lkTg$x@ye0T-`K4cP!RE#$fqDC868GT8# z_mSAgivmW91Q39v#FQO#tz?N{B}tDcXO^tl@|H}HID_p}5K@@Q1VMckH851@(W6R3 kCLK01D#fTap;E01>?+f&RBsx4x-qQSv1H4dMNz>% diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0009.gif b/learning/topic/animatedsprite/data/PT_Teddy_0009.gif deleted file mode 100644 index e641c42d8eee76c93c955b2192cc44643ae00555..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu?|Nk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+Uhz7@cID|E89V9o2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm ze_0DXA75SHOpCv)Z}0yPFrdJJ1PdBGh%lkTg$x@ydM`Yv|d zu+dOR4ITH<3UF~kMvW&|>O+}Q!b+9^0>JDD(-_W|Igyq8n5^VYWj}`=D=DDm$YDT} z)|?rvsR5)O4GH?Q8k Jd@mIM06R>)&QSmW diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0010.gif b/learning/topic/animatedsprite/data/PT_Teddy_0010.gif deleted file mode 100644 index fcf8234bdff7e61118d5bf0bd4f78c93b92bcb3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451 zcmV;!0X+UkNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+Uhz7@ah3T8!Nj}YkQlK zyX*T494tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;ouUAVQt6Pt)AALXlPg=lz1PdBGh%lkTg$x@yd-8ptIP7{&#Zv;qX6 zRT03)j2%Z3E1B`4NRY!ivg9bzWH6K|1<;)7vZhLzziv9n2}IJ3>Hcpi~2&b9+PCgNvmq%GZfOy1;jnrkI(`f}vgFB>D_g#dIkV=?oUs%D06S4{-T?pr diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0011.gif b/learning/topic/animatedsprite/data/PT_Teddy_0011.gif deleted file mode 100644 index 0a66343cc979421a5be8254011dbd822713d322d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 482 zcmV<80UiEFNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UolH2mk=vAuCI}VLOYP zq08HA`zt(5Tx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUtc!6OYN&4T-|RkARj-0()LX=c<>g$g$x@yJg3kALS+VZ5j-XmT$OQ1tT zGBt{`XjD*7B_v%iwUb2*R~2NnQ1#E!unxX9m}oU-AeSV;hHQIQZ3MGxPhRMX)M-%$ zWB2Yso3^G@y>7Q^#Ve8UUAdY@0%c1UmScr%;TD^GlJT#Zg6*b+>=z_pXPO_HK8-rH Y>eZ}UyM7Hjw(QxoYumn!+g;}D|?%f ztGj#A>-$R)JPd4WoUFXe-0b`e9W6agU2T1hovppi-R-S}tR4PMUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-+$064j?vL<17?hCD4E{2)SkzJlLS2F^Lfp{(D97K`j9D6fLIm z7%>0uU0>&Y@n%N+sErYA~#DpOIY~7uMad zd0jbGC=}%crkwuf6xla{U_rqWE8fa+CKy78nX_BtkR(v1;e20R?OXwR8q$L#&lc}VEdliRJV kmb$;~+`D`K4nDm2@#M>!KaW1W`t|JFyMGTqzN-QNJMpC!*#H0l diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0013.gif b/learning/topic/animatedsprite/data/PT_Teddy_0013.gif deleted file mode 100644 index bf83cace628d57f160808c2c46b855af71100c24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmV-60?GYHNk%w1VaNc;0FeR!|Ns9000960{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!L+u5HPDzTYF2J zYr9*~tNS|<>^mG$d`z6H-0b`e9W6agU2T1hovppi-R=FoU~8Ps%smc{p02*m-tPVm zA1^;oUvGbppPx`%9?k#%?4K|J!IULq08rLJ2ekkcgq6$TIfMZKNF10-S44^b%Pe9< zRm|f=h80Dw3TBaGN0X|0rBo@QA&Dg;7Y5>&A@*9^EBo>h$jj+#3V2Q5LHU-XZ@;-U)6RqRxdPrFB1*>- zJNM@f)B$zBF?^6{edNoVKaW1W`t|JFyMGTqzWn+0>)XGNKfnI{{QLU{{|{h*OcVeB EI}OVq3;+NC diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0014.gif b/learning/topic/animatedsprite/data/PT_Teddy_0014.gif deleted file mode 100644 index 5cf39974a51a6f6248aa7a6e45db84ff2feb4d2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607 zcmV-l0-*gzNk%w1VaNc;0FeR!|Ns9000960{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J026A(a~VQY(P zp{vVF;rk0LA$&_5VT@etyPQ1i94$RfU2T1hovppi-R*sP+-)3wt-LKPzWcq--tPVm zA1^;oU+*~%9gV+Fjw=iRFknDs`CRD|I4}Uhgw0<0TKI1v0CcDt9)xHMU`C1m6V-wH zwGm^-ha5ecGFDRIIF21tWekaNA4`*@NT%ec5M#xQ5^>s0xD%#8nhS)s{FqbcGlWD( z89lmmXuq0Cr3S0oRMgX~3}A8vwRNfkuVS_G)L6DF*0iB)el42xEm)Fr6NIdLPi0QL z2JW&o+Yu-;!7g9M{fl5@!IOK}4u;y7F(b(`mbo{nb9eGxo>UxGfW#?HgI?;LAFvo|e0@wTl$XVeWv~kM0N0IV={m z8v69H*$EjgxILH8L(F}Kze=!spyUE5s#o#we4O$<4$6mPKYEPn>znT|ct6N}_6$g1 tfd(FkV1f!R$Y6sGJ_uoi5>7~Ag%)0jVTKxR$YF;beh6ZSB2rNR06W(4DYXCq diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0015.gif b/learning/topic/animatedsprite/data/PT_Teddy_0015.gif deleted file mode 100644 index 2389da33300a5dff1b9aca5d50fcd2fda900d104..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 692 zcmV;l0!#fzNk%w1VaNc;0FeR!|Ns9000960{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0Ys}yisdvUv) zTd~XAEAa~e9PIG>Yy5y*tjxe1;0%#0J&jw9ovppi-R=Di9^My?K+X+)y^U_JJxt7g z9suwT&RkC|p0B^p->-n&ZCyHN(B>JmX8>O-W(FHJw5PCCF?S9tIs`V56grFl94+!{ zHtN?xEX(uzMj z(ezo6=uV09ZZeb#m1@h8FP|pWx)teCrba)Fy(rKtTChpe20d67XjP9*51g&5Nv%t~ zcITcnHI{EVzk2}_E=)meT(gJiB_=F5@8QS^Aunc3)|X$(nU-?y$+`2>&zmpj9BumF z+|Z&?PXL{IQ#6`gV^@ZIjP;?Jt9!rp{R||fz@;P9Ry|BNA>x0R6;D7>`5@TQQy*6i zSGu5e0$}IPz5p7hh~C3L4{lrZTIiN*mG66=mg~y#-SZ~rRl7!f@8#-+@6L{R8blNb zLLmS&Ac26aWFQUb7~)oh5>7}Vgm+PhVTRfL$HrS*eF!2{`K5P zzBu7vToqDVfH21Rn}UDPM&b)P`oZHj0tzXdKSmyjWRglQ$z+pGJ_%)%Qcg)_l~!Jf aWtLiQ$z_*behFrnVvb2>nPvh~0029)pi#vD diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0016.gif b/learning/topic/animatedsprite/data/PT_Teddy_0016.gif deleted file mode 100644 index 837b6e5330ef10efddc4230d25f4be7800cf6639..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 778 zcmV+l1NHnzNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTPp^DYioha zo2whq+xrW_8xRaI+;A+Mys*sM%upO0ExlZ=OpU$G-R=Etg$yok0PX$k%Z*OH-5X$R z-i`YX&n^$}p8h=#4_=Pn&!0Ab|LpB!Mob^6cn8)oOn|Ty!e{jIJ!=?o)VyW?6+2eE zCSapMQ2g9^Jc%+`z=Z($p?vAlox)HeVcI-7P-C&1JU>39>C&djn?FegeR-_sOrtzY z?i4!m)6tY7r{av-$!bh=O|fp$+HqZ1mR%_l^{NT1Pp(kOo~_psAk3v%<<7NBPwh%k zdM#dsiZ)Z6+kw4#76W;_ZzcV4VjiT|1A zFzNK{+Tn^N9J={$ryRF)AIjZ4^FFDem-pLs`d#(W@wlHn6rNJKV4s59By=BD$$^%b zPXd~!NPt(3hnRj;$yeVVqumCcgGlj5pm%X4Xqs8z>E)DTPH}i)ej19H;e{mjwBT8( zu^1kJDZ)r&jS=cGSdBWKwc?IG>UiUDGyX^{9(YBEljO-|OVGn< ze*TG}Kzbe&C_#!Y%4nmGJ_>21l1@r#rIucbX{MTP%4w&behO-+qK-;xsivNaYO1QP I3Q7S0JMM#xiU0rr diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0017.gif b/learning/topic/animatedsprite/data/PT_Teddy_0017.gif deleted file mode 100644 index be36c20b1953db97bfb2857816bf388eff60a11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHN-Nk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWhNakPC22 zp{py9%lokF3mh!WP#pY=tl;~6+?)ViEIrL!ZG8=`oy^>Av5OE5{>xoXoox*r@Qj|@ z9?<@+4KFWGUk`APFAi>Cuiw7|0p|_$#V_A1dhGhCyOzq`Gl%^g`Xi`NRJwit{N@$( zxa}e-dmj^)bciwIr+^$gx_pV!n88x;bius&a@jtWohIV^dCw=gPzZq<^~iB3D4Rx$ z-ejuO6H}ZUe?DA#(j?2NFnMyy8Wdr}r%|Q0?79(b%u#A^u4Q&)t=qPt3fzaP{Lmx=RoJx%{K2+iTSeh@|Jz;&*5N-MYwMNMUy# zX=nY{5`L=H$KXe%%?DONsj24Rftx)@AcO8%7@md=T1ek`5hgexA8yU3A%@>kSE7k_ zAqQfCaM`zESm~8ip^U4U24IKwO{HImNc9I*i+e~Y8j#n~$0Lcb#dcwmTlFX8bMH+j zrG->hS=TvOlII0y@2foY}?4!U5Nw&B^GTiRJyYO1QP zswR}J8dEAjtEL0Nm4ul3!(e{cwCO8e4g_njzz$1nvBn;YY_iHGF3W7Q&OQrmw9-yX fZMD{3i*2^rZp&@A-hK;ixZ;jWZn@?jPyhfsbauF+ diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0018.gif b/learning/topic/animatedsprite/data/PT_Teddy_0018.gif deleted file mode 100644 index e2da21d31c687a945d8f4a3643b90045da20541f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmV;D18w|ANk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfn8381Ts zz>B-E8!Wv0+Y1mdoNR2Xi+r5?tW4VsT^&3<9N?U+eT{8ReY_2DE4{0Y?p>VFjPC3~ zj2JKBtI(cK&LMobAE9m#%-y(t2MDqgS8vd>f#4bnYzR@t;*5tQlclNs!jRz;m@^W-Nv0O*IHP- zFzxQWyHRFNz7vnW9l8`HGQ?|_`fc3xTtKmh>+U@4Y%o*FD#vPm92v6Lz@8(6ma92s zw2-BXo~8+ToNTtRU0>GxmNn<6n6GLzG&Xl@!kHZ#{+l?iP~@hMr^dY(Gwr^&V_UDy z+_v-3fUkR}zCCGo?#eBPM_pbmTI|}lK2MKcd2!=qv%hCNp1%A0{HL@3Zx51v-mN#E zegXDJ-hbk$R@iE%EGZ*MBs!9 zkxoahCT+IbI%F)J010cswt9YatpLxa&}|^Zoa+j?>onl*yYkLUZ@u>3i*LUA?#pk# o{{9Pazyc3UaKQ#2jBvsVFU)Ym4nGWW#1c diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0019.gif b/learning/topic/animatedsprite/data/PT_Teddy_0019.gif deleted file mode 100644 index c7125f6f26424383350f5c3b66cfa124b8c344af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmV;Z16TYu~#E z+v}T)_$xe2D?ogVoSbMIknH?S93VYSEe(9gT&=y`4Bg8OPJL~d9nOtB{c8^1t607+ z4$$qJt`4tVTq}PcFTDNDFJ7Zr0qYH`Mz5f?UHTNF>$gu~w}BDwee)MjqCiIf1Oq_PPTgg21CpjqBC}2%>t&(7@bbKC-GK2Nj7RZxrIH)%!%@1 z$%=((Dm~5F>T0g7?_P$zSGG02QcJ%+iCcHk*kL>WCf+-AYP89{7SCO*MA&;{RIb~ zZHE=;-*)2Bci@5u&X=Eg4HCGZeB&hs9yyIcW}k(7&6FV_NQw5JeGxK~O^Aayg(8Qv zxj0XZ{i!I(Q^E<>7K}$N_f~`NR5q4}GrDw?QY^w)l#3~Tw;Eu{AxWNzvb87TY@o3R zBuo(Qzd6_O zg>04{pg87eXN^`$Y3OyU30mcgjfON#mkCWuDN~jbim6020ut45odWvlA9;@IP@;jH ziYj>%wu)(~eXt5^eD&2jr>uU^iYtJx_L^ycz@{qfuyht{EJ?_DCVQx^dhp8Zl&a1O z*v2 KjB*qO0029Xj?+N^ diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0020.gif b/learning/topic/animatedsprite/data/PT_Teddy_0020.gif deleted file mode 100644 index 21084a4857308e0285c9ff764375e42bda67274e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcmV;(12_CfNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O87VnQS!sERnW?$S+3EQS8Y=n(FuDSOT54*78j#w9x|r&kS{oZ-Tic`RWmEz8ZW z{G1%Eer^Ab&fANhk1q`jPaLCl{fI#e7O>hle&BMMBiJe;!)^-qC3Hyd;5}OZ7ab97 zXiwv}Xxk=IR5j3~w|M{`egx@J+Gp{EvE@7aW-V^5lO zWkwFN7l>Yh!N;M00(Hj~m=>zE*NOxpC}L_ft*9ZJ1%&(n*t^ z54vZkA9#94TVzNE24{rGp@|@Vh4K+zjxGs<)0C6$QE7|8we}*En3XwTso&W$DnD|X z`lvdHjU*_mpT6>{PqNCICYh_=%Hx}&Zpvx0%5tdYv&J&3 z$F9;s811#ZQk#dh+9sIox2)=ethmb3TCTbG!G!EPae@c0L0^>^XuS3cLk&XQ%CT1| z#n9ktd+rX4LoW1^y925R@4Lzb2saFI#1c*v2 qjB?5U*f1K`Oi;~DVDL#pVBY6_9c+UnZ+kh+LE`f7WNo9h}- zdn(FXs|!3#Tx<+1ta?a$-0b`eZ4A&mI~{%P%!(b%_T*S~515ha$Z zcnsn=iRv~YOsEiKNOZ$SYWyW~-p6z9NC}2T?`@(&P__5@PNf+~^+qiM$u8QlvEa;i> z>BOD$9$jmCab>*wUW0aQdUomB4{!0--I}*WvRc;ycV{~yRl9N9QVSkiD&Mg6Ksuis zNcm=#hwG&d3cYIG;-WvBf1WS7^|ap_t|yHgb=9b%D;^&xe=AYjJ;j&*4G)@e2BCx5 zSe&JoA8d0O=39ZRA&6FVJFOO=M*u2_;e>w~xSNFM(exd95PnBrgdU2B-%2Nf7$S;L zy;dN9Cbo#(9}88cA&i@KSYd|qWP=uuJ$?vRZTA_XU6Jh>*;b8yXt&*u(i!$&e8U-t z<%agHC*)7K^;DRTc3EhpiX<`F(T!VPI3|@7ikYF4e5lzXi!-_y*k)$F=^Tb~?y(_S zGBSA+nIlq2C{66$<5!1C4yc!mFddj8qR|aFrI~*MYT2D{o*Ch$dW`1jr$e45Y96H4 zY3g-pl~&oHIc_NutOlCeUU8}35m{!q_O>XVl=&6ruZ3b1oLt77;<~FHViCFQHqF*i zVzi%5J4dzF@=0l)+kV?vrQiB?Ew*lK1ZldtNZV~6y{dbQCh&^mty?ps8yLMnz%r~X z`}*52Dxkz5@W2KijBvsVFU)Ym4nGWW#1c*v2 tjB?506Ubc>E-|c diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0022.gif b/learning/topic/animatedsprite/data/PT_Teddy_0022.gif deleted file mode 100644 index aa4d8b34a4e6f1d2062f1f82942278679befa274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 zcmV<110?)MNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSZH{N zn5ekO*y#8O8OZ?vAh|j|6q zs_Xl!i`xlI?0dV*J6ycX-0Tcox|s~{9Nb%tT^x(3?0lL{OO1`$*v+hb?QJ?P%_-h& z4qJ`>4&SaA5B)xzukRWCY#XuD2d%9HNc zDNXuosWq8SZ{o}+Rp?G|=8^&xI!I0uRV3U=+%Qoetj=jmfzcN+XF7UeD`?K2y^5Aq@Uhp_yyL%cRK@A4ngFmU)8%+nAcbImwEr=Icw{@7`hXC3oqCX_2W}<`j zMRX8t9*RetVld`ZV|aXlxE?qb_M~5qbh+4@j)W|bs!D-WRVF5vgLeX0a_xSQ3eVrk49?gXmnPJ7|)`BAZZkZb3*B7p_5`JjGZ-- z!^^4bot2}IS^kmaprlUfsUNk*x)!dp>dL3By|NVPpOhx*W1A4Hh8ZiO_F#AEr(U9_ zAtHHrfuB_ExgakYl*v2 zjB?5n@f7@ zYIx~r8!S9b460f@9J&aMObpNr9nA|Vz%0EhZ7dnBO!<8MYu&sG-M#!>j*j^`uFmTo zY@W&u58D2Y@7ya(zdl<3t`x6g^7!4;rfZfxe+2g-V%N}L!hZ}aCUbZQqCSNG8q-1S zIE@;}c;5hK(>M|owQ449ZKIV;7&~hzRf=rsGMu}Y`4;-TxUwcmi8)cuEQzz=L!3D+ zN`$9QAu^@Dm^LMO?4nSAH?#eGDsbpYjD@ydEt>T#y{=X0*&FfcI z7bE7J3l1wfxL=1J&Fj`L(Wi;^@uW)VqtwP6c@ESHEF5BTZlk7+8;~*NLH~9heSB0f z<;9}~&D3h_GRMwuDYp(p(eY}yZ!OEd4JdVA%uopvwg~)>aIubI4Og4okL1qBg6Cmso4=T-7Q33 zeO$q}5p&r2v>a$Q-IpMAp8eDycw~{bo@vZ!qhN7vrT3hL+fBIPfe?nsAAk!w=${@c zHiivx^?}r49xock-bMk|QzITXqNP`8C7NguinATr9Cbu4rI>mXJ+tF`Cl1Nrc>>YM z#8R7>{mRccbBv|I@1ZJ3JC6%FyrDevYmcha4Q7gasW*?IW@mU#a zO7w_=(rubJvnDJGnUnj5WPi?R!Eyb?*8Cob}OrRo~kJjw5P zW9o$4EUZw_Z$bzKOsEN*ATTgX3*Q-1Bo8Y$aS)O$YUfHCZ_IJW9)ApS$RdwSa>*v2 zjB?5t<(A};#x diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0024.gif b/learning/topic/animatedsprite/data/PT_Teddy_0024.gif deleted file mode 100644 index f0cfcd142d4aca0815dffb55c7fcfccb39d3ed6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1014 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 yjB?5Wj z6)Y4%c(O)<}?$r8t<62WReM;UP z^C9%0d=-B#Octu(>9v@H#?Cb9N$M@VuUyTwSakMvtEY50JGl1oxMDy5yA7UBrAaqn zYIwPqQ)$hmSKw>JWmXw?=|$&`f4{Isn{?vs_L@M%J>=JhQ@Q2UhwEu3qHmgc=+sS> z4LFyIF(!7Di|@e)qKpL6Xq{YpVYpszf|;jYRMUlc-d7f)qLw55g?F7?OKNi0lU*Hm z*jY9Dh~;myK-Scj;@H-bae(#644Gy=)FPKjeJRb9gy{9oGIH`kXPv~{iASDx`dOlw z*$6h@TY{zuTz-4n*AJj0o|omAZ6Z43k(O#%lcV2Nda0qAx|tzo9WJ^hsGKTCqNksZ zx#EtY_O$AvH@@2GnfK-SVyn8&G^stj{dyu$e8RD2s>M}UsAI#awxNoe7y)>rZGlo2 znzOaFmX;)0t=4F6w?y((E!s-(N>rY?>GIGnT=LFKZ@u>3i*LUA?#pk# z{{9Pazyc3UaKQ#2jBvsVFU)Ym4nGWW#1c*v2 zjB?5T diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0028.gif b/learning/topic/animatedsprite/data/PT_Teddy_0028.gif deleted file mode 100644 index 84d403c320d95ae6e895be4befbd6dc899bccc17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmV;Z16TYd z8mgIoY2GgJP8zwtx!5~-4?@0Lt8ytKh>g*|fZWQRYP7B!qJiufCKxEspT2niqyBLG zW>KKSjrG)lLx{0r$O9PDeeC!${xzULFtrfP-0KC zdYySJ2ac(vq%W_otcJK?znJ`F!i_5+F+#k57dy_F5pv{&oGFr}stU6t&2~F`Zkx08 zXvnHVhfN$+mEXLiXN!Ip_FCiBd~FX-T2*MylCxRoy*=}0S;DmA?q=RKP;{n$e;a1l z`uR?mC>2k)bUk2c@N-?Nev5qTUZdk%vwhxJFJ9hX<^S$}ANbv1rH%jpd!L_mg~b-$ zJ<3fc7+o+~wVqGP&30FM+vVgRPqGn6RZ0zF6`N8KdZ?I&73zXoYUqLFT!-*1_92SB zA;Y3z6sG7+jWCU9V~qv2gH(?(kV86EpNdEBvg0&HE;(b7N3i*LUA?#pk# z{{9Pazyc3UaKQ#2jBvsVFU)Ym4nGWW#1c*v2 KjB*+U002AuzR(%~ diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0029.gif b/learning/topic/animatedsprite/data/PT_Teddy_0029.gif deleted file mode 100644 index a15ef905f2af9f1563ab89440c1f9d899676b26c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 891 zcmV->1BCoXNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmx{695OeyYcv33lHewIr|-yrx(CyQz!T5 zQMYI4_t3}@ICzM-p}5G1nW?$SXb>q$2?-!bS}MsY$f;_XM;NN{X(~HQTRR)K2>J>; zYU}$8d^@>|5gUArTt3KkAL zI4TlEe;mtM)Oa!-E|nfPmOS7w-MNegLB50#lbyVgx%Az{hcaY0O&=rvRG9J<&!QQ1 zdi!@2X3CW{S*rXP&*jf*R2wo>+R$Rtfl-n2yL2g2T7F@Lm1STI&$tP88d|X)^KH~JL@X#xyW&XPluDDy`0o* zV$5YVvqOv#wJ@E1MN1t_d#W>Bo6pKkXM68p!MN#4F3yv1Nv?;BzqZWOpmK>^oy!co z8?x-n!DFu8PW-w}+c}~0hUgk)chmAt<<8aI+xlp#z+NRuo;}EU_Kk}F&bi+z$4r+H zfE88cpJN7EL*IN1J}6&)5KcIggA`r}oP-!|sEdO7afl3o_bdovh5vn6VuG2Wm|}z; zwm6}P?~n*1cPG~Ppp4|u2-;UMvUU@XH6a)xkcF}6TXyc{Xe388{$?FCI!^PXl1}m1 z;fmG}7oL<&0+dyKER{wXWGf0)=2A4JIg$WVQW91sIAtfCjV7J<<{yS+P+Og$QFGo= zb?}m*n|w7hXmAzCg#c+^!j+ez0qxmnCz7^csZ^9+im4-3i*LUA?#pk# R{{9Pazyc3U@C*e206R~0zXSjP diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0030.gif b/learning/topic/animatedsprite/data/PT_Teddy_0030.gif deleted file mode 100644 index 945a0053dcfe58bb7f63fdf0260e9ef2a84af0d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 826 zcmV-A1I7GDNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcoa{+2H;N1ql=j{0U9mvCNb9;%dS4Tr9=m!EA zus4GjXc)p6NGLf;Sy_0X$OzEr_yL({87ex8xCz?nX_~jn+UoiW%Q_kPd5YRm8>_p^ z%d2?1k=r{AD_ndDoMB8H*o)|koP4oN{CsR3`zwt>?QB{b>b)JT$}CGd3q7vU4PDtP zDZb8KZcbY-dyfCAJx|e|ty?L8{rpJ)$gdrxVFe9BKDyS-Ly957NS!`6kx1sY_->TK9NH{M7KL0)azc zdL&tL6*fKRlt!Q?bK*d#MT3I0ipk`rsU4d}GMW&q1FU1Y9!;mOZ9ugmTcQ*Twm8a`|nX-=JP8B?767;?~~oblzl>o~K4l+73qHp`Q2 zQnjSd&b(VWCT7tBT3cRd_H*dWw&R8yEKhWAt)!T(20Q#(UWQ+hx3mY{EA7$Gqg(em zJ^A(E!mDq;e%z||@6xk-Cl5Wm((&kb^FH6+cysaa<1?TClf8Yu-S@};S6`EU{;Bld zfan1jl7Isu=n!R<8OYpwPZbB@Q4;on06M>Y$Dl!URG{I8?o7uHhSY`l&W9vgfD?6v zEmd4wD}v~eiv+Sb){Qe}RAX&DDx>0#K21l1@r#rIucbX{MTP%4w&behO-+qK-;xsivNaYO1QP z%4(~wz6xusvd&6tt+w8ZYp%NP%4@H_{t9fc!VXJpvBn;YY_iG=F3W7Q&OQq*0tEm7 EJ3n)s0{{R3 diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0031.gif b/learning/topic/animatedsprite/data/PT_Teddy_0031.gif deleted file mode 100644 index f922e56519da0bd127c2e2c32f245176e8619ee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 717 zcmV;;0y6zaNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcoZvkwzm<@M-*?~Y?&ZXDw02};{Cqg&aNAnjK z7(&QbqsN%22(WiZS!sD`xj-mc2>IbyhbcNr3K#n42?Dyu+UoiW`+DgLn98vlo2v_} zXUf}YyMen)>`Tju{2Tl!N$kvL+*+x;+%fzti>!@FT`k;OfAx*qkZsUlEu??0?SDxmqX)AC3taq!-ysqC`4Njztxw^8^rQDBs>@eTKi;EF`AOKGx8GkR3CTBK zfXoaCpn=RF;+ul1MCP4?#SMm^gce?iVTKxR$YF;beh6ZSB92I6i6)+iVu~uR$YP5w zz6fKCGR{b2jW*thV~#rR$YYN_{s?4{LJmn}kwzYgWRglQ$z+pGJ_%)%Qcg)_l~!Jf zWtLiQ$z_*behFrnVvb2>nP#4eW}0fQ$!42wz6ocXa?VL-op#=dXP$bdSpWb#)6HAg diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0032.gif b/learning/topic/animatedsprite/data/PT_Teddy_0032.gif deleted file mode 100644 index 0aff66645e0c3fd0738855ce5927b0ad2047a59e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 625 zcmV-%0*?JhNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viZCPsL^D#8^8{$0|EEV9zV_Lb$IRVmq#*37$~!c zCm6EFw>IO}XsGzXNC$X{nW=fnKo~hGQn@)wS_)YA2?|ol*XsHT8ylPX>ZnQyAgjB} z+xjLedCS4tTRiLg3mYuF0crePE7~`^%$z|CZR|Xa-Di!P4ZUfZ8~qI)9t}xK4qSa+ z(fvG1E$C;`JAPawDP+HrC+pE`xdq?MoI88|3_7&v(W5Jqwy<#X z>3ojZuJ%x9Y1!8T@5QFA0g<2ExH0IKeXqA~uC9fnOs(3ugyhPbJAV#6y7cMPt6RU0 zJ-hbp+`D`K4nDm2@#M>!KaW1W`t|JFyMGTqzWn+0>)XGNKfnI{{QLVt{|{h*0uD%E zfd(FkV1f!R$Y6sGJ_uoi5>7~Ag%)0jVTKxR$YF;beh6ZSB92I6i6)+iVu~uR$YP5w Lz6c|I1poj$u2?wa diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0033.gif b/learning/topic/animatedsprite/data/PT_Teddy_0033.gif deleted file mode 100644 index 7fedb4832723d6167a1823e563654ee544d00205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmV+)0^t2eNk%w1VaNc;0FeR!|Ns9000960{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+ayEcAm(lEiTFeFj*l#deE>GL^b<{nO=T_6!=LZNl zCpdGLSa`x1*rI6A7U@U=8Q8YT+3ES|8Q6F^l9>pKnyQM3$444siYGfuTWf0@M@#rB z5_|g#eEY}R>dO1!8?5|`IIKH)?2)@n&Fma&9KBIl-CfI>_^d5WJX`LqS-u%AKF+ZU zAAdUk4efq0%qbAh4{v#&fetKi#r$OhNa0`yX9X4R8-{QP!+8$%Ma+@!(546Q4ll}J z1j^$Pke@^v$!O7Jk&r4!YHVh&rI2X?Wu8oF(`C$@JbU{52{fqCp+w1aEQ;eO(xptB zI(-T?s?@1et6IH^HLKRGT)TSxDpM)gfCzR;np#t%i<(X$LX;#H=v%X6$&I30_nq2@ zaq~vlNU5)12y6!rG>ka0;>C;`JAMo~vgFB>D_g#dIkV=?oI88|3_7&v(WFb8K8-rH z>eZ}UyM7Hjw(QxoYumn!JGbuLynFlp4LrE;;lzs@KaM=P^5x8%JAV#6y7cMPt6RU0 hJ-hbp+`D`K4nDm2@#M>!KaW1W`t|JFyZ>DP06XP27O4OL diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0034.gif b/learning/topic/animatedsprite/data/PT_Teddy_0034.gif deleted file mode 100644 index 19a4d20ff150a8971da6751e0c452fb205ec12d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmVBNk%w1VaNc;0FeR!|Ns9000960{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWXrK!A)snAd6Y8endV&44=mEdQ}TMmuIrq7sz5L z0O%)3LT9(Q!e$Wnh{y=?R;aki*$KEHnaIa?cR50+>8ZNP`bG+A>fx9Q`_W2zXBoTU z_<1<0ShyRa_~IIPtUH{s2XmZ2SG#P49IDnloy6t~EuHP-nfu)oZauEOdhQgxslE=( z?atIG|6W{Aevdz|zrPgkFQCAI1PdBGh%lkTg$x@yd)O4GH?Q8k zeEa(S3plXg!GsGNK8!fA;>C;`JAMo~vgFB>D_g#dIkV=?oI88|3_7&v(WFb8K8-rH c>eZ}UyM7Hjw(QxoYumn!JGbuL7zzLYJJksIssI20 diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0035.gif b/learning/topic/animatedsprite/data/PT_Teddy_0035.gif deleted file mode 100644 index 3dd6abcb745f400643243b865a2ffc28bff2c0a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 468 zcmV;_0W1DTNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4i^DrviO`RtI=q3;2kit#cp^UU|Y{s?z()Y_P1x!2k<5s zQ+GFbQf7z9C#Sf`SmFo=i4rJKNLe{@d6;P#IC+Qn88TVQ3Q~F+x|#Z+$l6L92zyyL zi!0mW_@{=6+UubQgKSW0%v8)-#t_}CGz~pU?Y#Dz4aMr&{bXw$?lk^fZf;1P?#)O4GH?Q8k zeEa(S3plXg!GsGNK8!fA;>C;`JAMo~vgFB>D_g#dIkV=?oI88|3_7&v(WFb8K8-rH K>eYh_0028~+2@G> diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0036.gif b/learning/topic/animatedsprite/data/PT_Teddy_0036.gif deleted file mode 100644 index 93277ef54eac3b708475bdc83dab5c5bab694b42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmV;$0XqIiNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+-?cr4OakUvH3v`kiqBnAstYcZESaI9gojv>%Bb%m*)qAxAq4Z zs8<)0ICvP+m#4^=1~BY{4u=&CVWW|)dQ zYy0Xc!;9-nRXIw01&mzfr@Sns?EDOs3no2HU3iS`6xqrRJq*sQJ8piCp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1PdBGh%lkTg$x@yd)O4GH?Q8k veEa(S3plXg!GsGNK8!fA;>C;`JAMo~vgFB>D_g#dIkV=?oI86~QUCxuFreRf diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0037.gif b/learning/topic/animatedsprite/data/PT_Teddy_0037.gif deleted file mode 100644 index c9c0a090398a3ce870487a7722abccd624f6b9af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0BvNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`!71;}2vp{$n+-ed!T?+g&$c>&}yI<`*Z)@-sCMwi>xZ8yB`cBl6;)@S!d z2$(nMQrKsfXz0ht;`oS|2-qe_iN$w#rWx2-Ne8)tDKNH3+IWg;W}4ax7RO4fXUmD3 z`^wAc`#TsX42-s0e04{hTq`@)O4GH?Q8k ieEa(S3plXg!GsGNK8!fA;>C;`JAMo~vSb$p0027$8`%p0 diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0038.gif b/learning/topic/animatedsprite/data/PT_Teddy_0038.gif deleted file mode 100644 index f0a00a1be4e1b224543df906b96fff12893e293b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmV;d0aN}*Nk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9XoKXMpPT+Nx@0Q7lob4Q#VuuMi9fsKwnC8g1@X*L16Uu71aNcsiRk*O%9}cN11; zry_`0sB_3hsF>#W*XS4+dFPjCnKK4+_}Mv10Y`c|QHHw8z{&c$;0ik{AWA!Hd;6NJ z+v|Ip`HLzm+^Je@*~W`(7R>w%9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRd2q-|znqFrdJJ1cxXqXu^&&gdCPJdNWyqH^U)sEhGpEj-JbU{52{fqCp+t)sJ&H7`(xptB zI(-T?s?@1et6IH^HLKRGT)TSx3O20Rv1H4dJ&QK2+O=%kx_t{buH3nF>)O4GH?Q8k WeEa(S3plXg!GsGNK8*N60RTIS;n&&# diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0039.gif b/learning/topic/animatedsprite/data/PT_Teddy_0039.gif deleted file mode 100644 index 4a8b14e27770faa31b13e0a0e0110182e3d227b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmV;L0cHM2Nk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KY5+_F z6QGRRp46xG8e;~iTWHIQRcZs|a&uJ$hl}HK7Y!h%*X+1kjpCZm^q~F?=eE~J^aL0v z$VVtdJ-@u8!J0YTWh*%D~g-D z_$si=+vgihTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02*m-tPVm zA1^;oUvGbppRZrzHN5ZX!5kDo%842d$O%9Sizx_k*Urp%c%YudbtGpEj-JbU{52{fqCp+t)sJ&H7`(xptB zI(-T?s?@1et6IH^HLKRGT)TSx3O20Rv1H4dJ&QK2+O=%kx_t{buH3nF>)O4GS7reK EJC5bXp#T5? diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0040.gif b/learning/topic/animatedsprite/data/PT_Teddy_0040.gif deleted file mode 100644 index 88e8eb14795e205f58bb3f1a09ec2844bc37fefe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmV-}0et>PNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`%EzyV;CC5cQ4 z^7(8zJYVa9KT55WVnkqS}TFKf98!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp04ily57<5 z9xp#nUvGbppRd2q-|znqFrdJJ1PdBGh!8`fg9{Tne5kG=#EBFuTD*ucqsEO?96Nga z2r{I|kt9o+Jc%-;%9Sizx_k*Urp%c%YudbtGpEj-JbU{52{fqCp+t)sJ&H7`(xptB hI(-T?s?@1et6IH^HLKRGT)TSx3O20RvEB**06XBDx#<7^ diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0041.gif b/learning/topic/animatedsprite/data/PT_Teddy_0041.gif deleted file mode 100644 index 0353138a5f2fcae8ae8c34408cb6928fc5b21c49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmV-l0igazNk%w1VaNc;0FeR!00030|NsC0{{R30A^8LW00062EC2ui0LTEy00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&i5w(1o(!eAh2aT5|^H& zP!$XWl+0=dIHjVTPpj8rbOpcUviXcotJmzd`wfrF=k&V$j?e4&{J#GW7$`VMSh&|^ z2#A=-*y#8O87VnQS!sERnW?$S+3EQS8Y((UT55WVnyR|W+UoiW8!J0YTWfoZo2$Fa z+w1!a94tIcTx@)doUFXe-0b`e9W6agU2T1hovppi-R=Di9xgskUT%Jlp02)5w|MR@ z22ZZVUT=SopRd2q-|znqFrdJJ1PdBGh%lkTg$x@yd-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1Ei#1NOWPLuazRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajUXI5di)47q{xvZ bOPV~1GNsCuEL*yK2{We5nKWyDDgXdGC4!-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}J?#fTT|}L&z0KY2U4q?QV;w#IeU6^4zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajTsy}di)47q{xvZ UOPV~1GNsCuEL*yKsign_JN-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0trK2J}oVeT|*1z0KY2{S7VwU>#m=evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajTIa_di)47q{xvZ QOPV~1GNsCu=L!G-JKv(AeE-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO1y8DqQvldQ1J{0to}JxyJ0eT|*1z0KY2{r!O~Ee>98evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajS?I?di)47q{xvZ NOPV~1GUdJk06Sldo$vqv diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0046.gif b/learning/topic/animatedsprite/data/PT_Teddy_0046.gif deleted file mode 100644 index 8476318e9c4fac7e60808596468cb2c85e4e0012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmV-60m=SHNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_YCy`i?u)GOOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z3nU0?9Cl6K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajSU<-di)47q{xvZ I0~P=PJL6uPSpWb4 diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0047.gif b/learning/topic/animatedsprite/data/PT_Teddy_0047.gif deleted file mode 100644 index 512c6eebc9630c122006fd15a139f4566a936152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmV-70m%MGNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjjS2ms&-6DnG2dWxE=y2{$>`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KX7LFx?dJx*S3evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajSd_;di)47q{xvZ JOFAq706T`ao7DgS diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0048.gif b/learning/topic/animatedsprite/data/PT_Teddy_0048.gif deleted file mode 100644 index 9fdecf6f12d53e8d8f14adccbc282107d56af233..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmV-70m%MGNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%2w;c=fS72s z*a#UZIZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{SA)y7*1YpevY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajSd_;di)47q{xvZ JOL8m#06V|fn??Wt diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0049.gif b/learning/topic/animatedsprite/data/PT_Teddy_0049.gif deleted file mode 100644 index 5988e0ff985fc18c07558cb0240509cc614b3529..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmV-80muGFNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6-eK=({8evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajSn0-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25j%McEz78KRKTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajSn0-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K957+hFzYj2=z<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajSd_;di)47q{xvZ JOX@2C06V7ZoCp8_ diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0052.gif b/learning/topic/animatedsprite/data/PT_Teddy_0052.gif deleted file mode 100644 index 132a9ad32043df45d6e7d94b04c97787fe5d832c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmV-40n7eJNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^Y5@SP_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF(NK55-VD~h%uwajSCz*di)47q{ur3 G0029~ikL(I diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0053.gif b/learning/topic/animatedsprite/data/PT_Teddy_0053.gif deleted file mode 100644 index d5ffebc0301e631dff19662dfc78ba951d37a586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPqLNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^Y6Aek_6rV+$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajR_n(di)47WSIg0 EJHg|b8~^|S diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0054.gif b/learning/topic/animatedsprite/data/PT_Teddy_0054.gif deleted file mode 100644 index e09375aa0f7ad9ab0a7e8e59d5300392b003d577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmV+~0nq+ONk%w1VaNc;0Du4h|Ns90001HR1OWg5001li0002U0LTCU0{?`MsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajRqV$dMr}_06QGR BnAiXS diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0055.gif b/learning/topic/animatedsprite/data/PT_Teddy_0055.gif deleted file mode 100644 index e09375aa0f7ad9ab0a7e8e59d5300392b003d577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmV+~0nq+ONk%w1VaNc;0Du4h|Ns90001HR1OWg5001li0002U0LTCU0{?`MsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajRqV$dMr}_06QGR BnAiXS diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0056.gif b/learning/topic/animatedsprite/data/PT_Teddy_0056.gif deleted file mode 100644 index 80ee11d98f9ea257917a11d916320840d919b957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPqLNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajR_n(di)47B(nkl EJMku&7ytkO diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0057.gif b/learning/topic/animatedsprite/data/PT_Teddy_0057.gif deleted file mode 100644 index 9af1fbacc77610a0c6a9fa23e1481175f0bd693c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmV-40n7eJNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_-FwD`6D@Ld5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajSCz*di)47q{s>d G0029POPjI) diff --git a/learning/topic/animatedsprite/data/PT_Teddy_0058.gif b/learning/topic/animatedsprite/data/PT_Teddy_0058.gif deleted file mode 100644 index 7265b9feed1504d5d6a2b6b9f4a040e9fbd34dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPqLNk%w1VaNc;0Du7i00030|NkNR1OWg50RSuj0002U0LTCU0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAVJ1puJy`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajR_n(di)47q=f-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_`wJW_ zJWO0{e2ko|yv*F}{0to}JxyJ0eT|*1z0KY2{S6*o0kBLievY25zRuq6{th26KTlt8 ze~+K9zt7+A{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajR_n(di)47B&h-b EJM#FNZU6uP diff --git a/learning/topic/animatedsprite/index.html b/learning/topic/animatedsprite/index.html deleted file mode 100644 index dad2e80..0000000 --- a/learning/topic/animatedsprite/index.html +++ /dev/null @@ -1,407 +0,0 @@ ---- -layout: default ---- -

    AnimatedSprite

    - - - -

    by James Patterson. - - - -Press the mouse button to change animations. - -Demonstrates loading, displaying, and animating GIF images. - -It would be easy to write a program to display - -animated GIFs, but would not allow as much control over - -the display sequence and rate of display.

    - - - -

    Original Processing.org Example: AnimatedSprite
    - -

    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/PT_Shifty_0000.gif, data/PT_Shifty_0001.gif, data/PT_Shifty_0002.gif, 
    -
    -data/PT_Shifty_0003.gif, data/PT_Shifty_0004.gif, data/PT_Shifty_0005.gif, 
    -
    -data/PT_Shifty_0006.gif, data/PT_Shifty_0007.gif, data/PT_Shifty_0008.gif, 
    -
    -data/PT_Shifty_0009.gif, data/PT_Shifty_0010.gif, data/PT_Shifty_0011.gif, 
    -
    -data/PT_Shifty_0012.gif, data/PT_Shifty_0013.gif, data/PT_Shifty_0014.gif, 
    -
    -data/PT_Shifty_0015.gif, data/PT_Shifty_0016.gif, data/PT_Shifty_0017.gif, 
    -
    -data/PT_Shifty_0018.gif, data/PT_Shifty_0019.gif, data/PT_Shifty_0020.gif, 
    -
    -data/PT_Shifty_0021.gif, data/PT_Shifty_0022.gif, data/PT_Shifty_0023.gif, 
    -
    -data/PT_Shifty_0024.gif, data/PT_Shifty_0025.gif, data/PT_Shifty_0026.gif, 
    -
    -data/PT_Shifty_0027.gif, data/PT_Shifty_0028.gif, data/PT_Shifty_0029.gif, 
    -
    -data/PT_Shifty_0030.gif, data/PT_Shifty_0031.gif, data/PT_Shifty_0032.gif, 
    -
    -data/PT_Shifty_0033.gif, data/PT_Shifty_0034.gif, data/PT_Shifty_0035.gif, 
    -
    -data/PT_Shifty_0036.gif, data/PT_Shifty_0037.gif, data/PT_Teddy_0000.gif, 
    -
    -data/PT_Teddy_0001.gif, data/PT_Teddy_0002.gif, data/PT_Teddy_0003.gif, 
    -
    -data/PT_Teddy_0004.gif, data/PT_Teddy_0005.gif, data/PT_Teddy_0006.gif, 
    -
    -data/PT_Teddy_0007.gif, data/PT_Teddy_0008.gif, data/PT_Teddy_0009.gif, 
    -
    -data/PT_Teddy_0010.gif, data/PT_Teddy_0011.gif, data/PT_Teddy_0012.gif, 
    -
    -data/PT_Teddy_0013.gif, data/PT_Teddy_0014.gif, data/PT_Teddy_0015.gif, 
    -
    -data/PT_Teddy_0016.gif, data/PT_Teddy_0017.gif, data/PT_Teddy_0018.gif, 
    -
    -data/PT_Teddy_0019.gif, data/PT_Teddy_0020.gif, data/PT_Teddy_0021.gif, 
    -
    -data/PT_Teddy_0022.gif, data/PT_Teddy_0023.gif, data/PT_Teddy_0024.gif, 
    -
    -data/PT_Teddy_0025.gif, data/PT_Teddy_0026.gif, data/PT_Teddy_0027.gif, 
    -
    -data/PT_Teddy_0028.gif, data/PT_Teddy_0029.gif, data/PT_Teddy_0030.gif, 
    -
    -data/PT_Teddy_0031.gif, data/PT_Teddy_0032.gif, data/PT_Teddy_0033.gif, 
    -
    -data/PT_Teddy_0034.gif, data/PT_Teddy_0035.gif, data/PT_Teddy_0036.gif, 
    -
    -data/PT_Teddy_0037.gif, data/PT_Teddy_0038.gif, data/PT_Teddy_0039.gif, 
    -
    -data/PT_Teddy_0040.gif, data/PT_Teddy_0041.gif, data/PT_Teddy_0042.gif, 
    -
    -data/PT_Teddy_0043.gif, data/PT_Teddy_0044.gif, data/PT_Teddy_0045.gif, 
    -
    -data/PT_Teddy_0046.gif, data/PT_Teddy_0047.gif, data/PT_Teddy_0048.gif, 
    -
    -data/PT_Teddy_0049.gif, data/PT_Teddy_0050.gif, data/PT_Teddy_0051.gif, 
    -
    -data/PT_Teddy_0052.gif, data/PT_Teddy_0053.gif, data/PT_Teddy_0054.gif, 
    -
    -data/PT_Teddy_0055.gif, data/PT_Teddy_0056.gif, data/PT_Teddy_0057.gif, 
    -
    -data/PT_Teddy_0058.gif, data/PT_Teddy_0059.gif"; */
    -
    -
    -
    -Animation animation1, animation2;
    -
    -float xpos, ypos;
    -
    -float drag = 30.0;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  background(255, 204, 0);
    -
    -  frameRate(24);
    -
    -  animation1 = new Animation("PT_Shifty_", 38);
    -
    -  animation2 = new Animation("PT_Teddy_", 60);
    -
    -}
    -
    -
    -
    -void draw() { 
    -
    -  float difx = mouseX - xpos;
    -
    -  if (abs(difx) > 1.0) {
    -
    -    xpos = xpos + difx/drag;
    -
    -    xpos = constrain(xpos, 0, width);
    -
    -  }
    -
    -
    -
    -  // Display the sprite at the position xpos, ypos
    -
    -  if (mousePressed) {
    -
    -    background(153, 153, 0);
    -
    -    animation1.display(xpos-animation1.getWidth()/2, ypos);
    -
    -  } else {
    -
    -    background(255, 204, 0);
    -
    -    animation2.display(xpos-animation1.getWidth()/2, ypos);
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -
    -
    -// Class for animating a sequence of GIFs
    -
    -
    -
    -class Animation {
    -
    -  PImage[] images;
    -
    -  int imageCount;
    -
    -  int frame;
    -
    -  
    -
    -  Animation(String imagePrefix, int count) {
    -
    -    imageCount = count;
    -
    -    images = new PImage[imageCount];
    -
    -
    -
    -    for (int i = 0; i < imageCount; i++) {
    -
    -      // Use nf() to number format 'i' into four digits
    -
    -      String filename = "data/" + imagePrefix + nf(i, 4) + ".gif";
    -
    -      images[i] = loadImage(filename);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void display(float xpos, float ypos) {
    -
    -    frame = (frame+1) % imageCount;
    -
    -    image(images[frame], xpos, ypos);
    -
    -  }
    -
    -  
    -
    -  int getWidth() {
    -
    -    return images[0].width;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/animator/index.html b/learning/topic/animator/index.html deleted file mode 100644 index 09f81bb..0000000 --- a/learning/topic/animator/index.html +++ /dev/null @@ -1,183 +0,0 @@ ---- -layout: default ---- -

    Animator

    - - - -

    A simple animation tool that displays a continuous cycle of - -twelve images. Each image is displayed for 100 milliseconds - -(one tenth of a second) to create animation. While each image - -is displayed, it's possible to draw directly into it by - -pressing the mouse and moving the cursor. Start drawing to get - -it started.

    - - - -

    Original Processing.org Example: Animator
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int currentFrame = 0;
    -
    -PImage[] frames = new PImage[12];
    -
    -int lastTime = 0;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  strokeWeight(4);
    -
    -  smooth();
    -
    -  background(204);
    -
    -  for (int i = 0; i < frames.length; i++) {
    -
    -    frames[i] = get(); // Create a blank frame
    -
    -  }
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  int currentTime = millis();
    -
    -  if (currentTime > lastTime+100) {
    -
    -    nextFrame();
    -
    -    lastTime = currentTime;
    -
    -  }
    -
    -  if (mousePressed == true) {
    -
    -    line(pmouseX, pmouseY, mouseX, mouseY);
    -
    -  }
    -
    -}
    -
    -
    -
    -void nextFrame() 
    -
    -{
    -
    -  frames[currentFrame] = get(); // Get the display window
    -
    -  currentFrame++; // Increment to next frame
    -
    -  if (currentFrame >= frames.length) {
    -
    -    currentFrame = 0;
    -
    -  }
    -
    -  image(frames[currentFrame], 0, 0);
    -
    -}
    - - - - - diff --git a/learning/topic/blur/data/trees.jpg b/learning/topic/blur/data/trees.jpg deleted file mode 100644 index afdcf5045e674bd73dff2097baa3591c9497cf91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34820 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 diff --git a/learning/topic/blur/index.html b/learning/topic/blur/index.html deleted file mode 100644 index 634fe93..0000000 --- a/learning/topic/blur/index.html +++ /dev/null @@ -1,181 +0,0 @@ ---- -layout: default ---- -

    Blur

    - - - -

    Bluring half of an image by processing it through a - -low-pass filter.

    - - - -

    Original Processing.org Example: Blur
    - -

    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/trees.jpg"; */
    -
    -
    -
    -size(200, 200); 
    -
    -PImage a;  // Declare variable "a" of type PImage 
    -
    -a = loadImage("data/trees.jpg"); // Load the images into the program 
    -
    -
    -
    -float v = 1.0/9.0;
    -
    -float[][] kernel = { { v, v, v },
    -
    -                     { v, v, v },
    -
    -                     { v, v, v } };
    -
    -  
    -
    -PImage img = loadImage("data/trees.jpg"); // Load the original image
    -
    -image(a, 0, 0); // Displays the image from point (0,0) 
    -
    -img.loadPixels();
    -
    -// Create an opaque image of the same size as the original
    -
    -PImage edgeImg = createImage(img.width, img.height, RGB);
    -
    -// Loop through every pixel in the image.
    -
    -for (int y = 1; y < img.height-1; y++) { // Skip top and bottom edges
    -
    -  for (int x = 1; x < img.width-1; x++) { // Skip left and right edges
    -
    -    float sum = 0; // Kernel sum for this pixel
    -
    -    for (int ky = -1; ky <= 1; ky++) {
    -
    -      for (int kx = -1; kx <= 1; kx++) {
    -
    -        // Calculate the adjacent pixel for this kernel point
    -
    -        int pos = (y + ky)*width + (x + kx);
    -
    -        // Image is grayscale, red/green/blue are identical
    -
    -        float val = red(img.pixels[pos]);
    -
    -        // Multiply adjacent pixels based on the kernel values
    -
    -        sum += kernel[ky+1][kx+1] * val;
    -
    -      }
    -
    -    }
    -
    -    // For this pixel in the new image, set the gray value
    -
    -    // based on the sum from the kernel
    -
    -    edgeImg.pixels[y*img.width + x] = color(sum);
    -
    -  }
    -
    -}
    -
    -// State that there are changes to edgeImg.pixels[]
    -
    -edgeImg.updatePixels();
    -
    -image(edgeImg, 100, 0); // Draw the new image
    - - - - - diff --git a/learning/topic/bounce/index.html b/learning/topic/bounce/index.html deleted file mode 100644 index a3cfa5f..0000000 --- a/learning/topic/bounce/index.html +++ /dev/null @@ -1,193 +0,0 @@ ---- -layout: default ---- -

    Bounce

    - - - -

    When the shape hits the edge of the window, it reverses its direction.

    - - - -

    Original Processing.org Example: Bounce
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int size = 60;       // Width of the shape
    -
    -float xpos, ypos;    // Starting position of shape    
    -
    -
    -
    -float xspeed = 2.8;  // Speed of the shape
    -
    -float yspeed = 2.2;  // Speed of the shape
    -
    -
    -
    -int xdirection = 1;  // Left or Right
    -
    -int ydirection = 1;  // Top to Bottom
    -
    -
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  frameRate(30);
    -
    -  smooth();
    -
    -  // Set the starting position of the shape
    -
    -  xpos = width/2;
    -
    -  ypos = height/2;
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(102);
    -
    -  
    -
    -  // Update the position of the shape
    -
    -  xpos = xpos + ( xspeed * xdirection );
    -
    -  ypos = ypos + ( yspeed * ydirection );
    -
    -  
    -
    -  // Test to see if the shape exceeds the boundaries of the screen
    -
    -  // If it does, reverse its direction by multiplying by -1
    -
    -  if (xpos > width-size || xpos < 0) {
    -
    -    xdirection *= -1;
    -
    -  }
    -
    -  if (ypos > height-size || ypos < 0) {
    -
    -    ydirection *= -1;
    -
    -  }
    -
    -
    -
    -  // Draw the shape
    -
    -  ellipse(xpos+size/2, ypos+size/2, size, size);
    -
    -}
    - - - - - diff --git a/learning/topic/bouncybubbles/index.html b/learning/topic/bouncybubbles/index.html deleted file mode 100644 index 3952e60..0000000 --- a/learning/topic/bouncybubbles/index.html +++ /dev/null @@ -1,385 +0,0 @@ ---- -layout: default ---- -

    BouncyBubbles

    - - - -

    Based on code from Keith Peters (www.bit-101.com). - - - -Multiple-object collision.

    - - - -

    Original Processing.org Example: BouncyBubbles
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int numBalls = 12;
    -
    -float spring = 0.05;
    -
    -float gravity = 0.03;
    -
    -Ball[] balls = new Ball[numBalls];
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  smooth();
    -
    -  for (int i = 0; i < numBalls; i++) {
    -
    -    balls[i] = new Ball(random(width), random(height), random(20, 40), i, balls);
    -
    -  }
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(0);
    -
    -  for (int i = 0; i < numBalls; i++) {
    -
    -    balls[i].collide();
    -
    -    balls[i].move();
    -
    -    balls[i].display();  
    -
    -  }
    -
    -}
    -
    -
    -
    -class Ball {
    -
    -  float x, y;
    -
    -  float diameter;
    -
    -  float vx = 0;
    -
    -  float vy = 0;
    -
    -  int id;
    -
    -  Ball[] others;
    -
    - 
    -
    -  Ball(float xin, float yin, float din, int idin, Ball[] oin) {
    -
    -    x = xin;
    -
    -    y = yin;
    -
    -    diameter = din;
    -
    -    id = idin;
    -
    -    others = oin;
    -
    -  } 
    -
    -  
    -
    -  void collide() {
    -
    -    for (int i = id + 1; i < numBalls; i++) {
    -
    -      float dx = others[i].x - x;
    -
    -      float dy = others[i].y - y;
    -
    -      float distance = sqrt(dx*dx + dy*dy);
    -
    -      float minDist = others[i].diameter/2 + diameter/2;
    -
    -      if (distance < minDist) { 
    -
    -        float angle = atan2(dy, dx);
    -
    -        float targetX = x + cos(angle) * minDist;
    -
    -        float targetY = y + sin(angle) * minDist;
    -
    -        float ax = (targetX - others[i].x) * spring;
    -
    -        float ay = (targetY - others[i].y) * spring;
    -
    -        vx -= ax;
    -
    -        vy -= ay;
    -
    -        others[i].vx += ax;
    -
    -        others[i].vy += ay;
    -
    -      }
    -
    -    }   
    -
    -  }
    -
    -  
    -
    -  void move() {
    -
    -    vy += gravity;
    -
    -    x += vx;
    -
    -    y += vy;
    -
    -    if (x + diameter/2 > width) {
    -
    -      x = width - diameter/2;
    -
    -      vx += -0.9; 
    -
    -    }
    -
    -    else if (x - diameter/2 < 0) {
    -
    -      x = diameter/2;
    -
    -      vx *= -0.9;
    -
    -    }
    -
    -    if (y + diameter/2 > height) {
    -
    -      y = height - diameter/2;
    -
    -      vy *= -0.9; 
    -
    -    } 
    -
    -    else if (y - diameter/2 < 0) {
    -
    -      y = diameter/2;
    -
    -      vy *= -0.9;
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  void display() {
    -
    -    fill(255, 204);
    -
    -    ellipse(x, y, diameter, diameter);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/brightness/data/wires.jpg b/learning/topic/brightness/data/wires.jpg deleted file mode 100644 index a0a6e24dd8e13af1da280b6a2f123a305db74435..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12813 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 CO%lie diff --git a/learning/topic/brightness/index.html b/learning/topic/brightness/index.html deleted file mode 100644 index e0c65eb..0000000 --- a/learning/topic/brightness/index.html +++ /dev/null @@ -1,189 +0,0 @@ ---- -layout: default ---- -

    Brightness

    - - - -

    by Daniel Shiffman. - - - -Adjusts the brightness of part of the image - -Pixels closer to the mouse will appear brighter.

    - - - -

    Original Processing.org Example: Brightness
    - -

    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/wires.jpg"; */
    -
    -PImage img;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  frameRate(30);
    -
    -  img = loadImage("data/wires.jpg");
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  loadPixels();
    -
    -  for (int x = 0; x < img.width; x++) {
    -
    -    for (int y = 0; y < img.height; y++ ) {
    -
    -      // Calculate the 1D location from a 2D grid
    -
    -      int loc = x + y*img.width;
    -
    -      // Get the R,G,B values from image
    -
    -      float r,g,b;
    -
    -      r = red (img.pixels[loc]);
    -
    -      //g = green (img.pixels[loc]);
    -
    -      //b = blue (img.pixels[loc]);
    -
    -      // Calculate an amount to change brightness based on proximity to the mouse
    -
    -      float maxdist = 50;//dist(0,0,width,height);
    -
    -      float d = dist(x,y,mouseX,mouseY);
    -
    -      float adjustbrightness = 255*(maxdist-d)/maxdist;
    -
    -      r += adjustbrightness;
    -
    -      //g += adjustbrightness;
    -
    -      //b += adjustbrightness;
    -
    -      // Constrain RGB to make sure they are within 0-255 color range
    -
    -      r = constrain(r,0,255);
    -
    -      //g = constrain(g,0,255);
    -
    -      //b = constrain(b,0,255);
    -
    -      // Make a new color and set pixel in the window
    -
    -      //color c = color(r,g,b);
    -
    -      color c = color(r);
    -
    -      pixels[loc] = c;
    -
    -    }
    -
    -  }
    -
    -  updatePixels();
    -
    -}
    - - - - - diff --git a/learning/topic/brownian/index.html b/learning/topic/brownian/index.html deleted file mode 100644 index 51bddb9..0000000 --- a/learning/topic/brownian/index.html +++ /dev/null @@ -1,197 +0,0 @@ ---- -layout: default ---- -

    Brownian

    - - - -

    Recording random movement as a continuous line.

    - - - -

    Original Processing.org Example: Brownian
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int num = 2000;
    -
    -int range = 4;
    -
    -
    -
    -float[] ax = new float[num];
    -
    -float[] ay = new float[num]; 
    -
    -
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  for(int i=0; i<num; i++) {
    -
    -    ax[i] = 50;
    -
    -    ay[i] = height/2;
    -
    -  }
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(51);
    -
    -  
    -
    -  // Shift all elements 1 place to the left
    -
    -  for(int i=1; i<num; i++) {
    -
    -    ax[i-1] = ax[i];
    -
    -    ay[i-1] = ay[i];
    -
    -  }
    -
    -
    -
    -  // Put a new value at the end of the array
    -
    -  ax[num-1] += random(-range, range);
    -
    -  ay[num-1] += random(-range, range);
    -
    -
    -
    -  // Constrain all points to the screen
    -
    -  ax[num-1] = constrain(ax[num-1], 0, width);
    -
    -  ay[num-1] = constrain(ay[num-1], 0, height);
    -
    -  
    -
    -  // Draw a line connecting the points
    -
    -  for(int i=1; i<num; i++) {    
    -
    -    float val = float(i)/num * 204.0 + 51;
    -
    -    stroke(val);
    -
    -    line(ax[i-1], ay[i-1], ax[i], ay[i]);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/button/index.html b/learning/topic/button/index.html deleted file mode 100644 index 0ab1f85..0000000 --- a/learning/topic/button/index.html +++ /dev/null @@ -1,401 +0,0 @@ ---- -layout: default ---- -

    Button

    - - - -

    Click on one of the colored squares in the - -center of the image to change the color of - -the background.

    - - - -

    Original Processing.org Example: Button
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int rectX, rectY;      // Position of square button
    -
    -int circleX, circleY;  // Position of circle button
    -
    -int rectSize = 50;     // Diameter of rect
    -
    -int circleSize = 53;   // Diameter of circle
    -
    -color rectColor, circleColor, baseColor;
    -
    -color rectHighlight, circleHighlight;
    -
    -color currentColor;
    -
    -boolean rectOver = false;
    -
    -boolean circleOver = false;
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  smooth();
    -
    -  rectColor = color(0);
    -
    -  rectHighlight = color(51);
    -
    -  circleColor = color(255);
    -
    -  circleHighlight = color(204);
    -
    -  baseColor = color(102);
    -
    -  currentColor = baseColor;
    -
    -  circleX = width/2+circleSize/2+10;
    -
    -  circleY = height/2;
    -
    -  rectX = width/2-rectSize-10;
    -
    -  rectY = height/2-rectSize/2;
    -
    -  ellipseMode(CENTER);
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  update(mouseX, mouseY);
    -
    -  background(currentColor);
    -
    -  
    -
    -  if(rectOver) {
    -
    -    fill(rectHighlight);
    -
    -  } else {
    -
    -    fill(rectColor);
    -
    -  }
    -
    -  stroke(255);
    -
    -  rect(rectX, rectY, rectSize, rectSize);
    -
    -  
    -
    -  if(circleOver) {
    -
    -    fill(circleHighlight);
    -
    -  } else {
    -
    -    fill(circleColor);
    -
    -  }
    -
    -  stroke(0);
    -
    -  ellipse(circleX, circleY, circleSize, circleSize);
    -
    -}
    -
    -
    -
    -void update(int x, int y)
    -
    -{
    -
    -  if( overCircle(circleX, circleY, circleSize) ) {
    -
    -    circleOver = true;
    -
    -    rectOver = false;
    -
    -  } else if ( overRect(rectX, rectY, rectSize, rectSize) ) {
    -
    -    rectOver = true;
    -
    -    circleOver = false;
    -
    -  } else {
    -
    -    circleOver = rectOver = false;
    -
    -  }
    -
    -}
    -
    -
    -
    -void mousePressed()
    -
    -{
    -
    -  if(circleOver) {
    -
    -    currentColor = circleColor;
    -
    -  }
    -
    -  if(rectOver) {
    -
    -    currentColor = rectColor;
    -
    -  }
    -
    -}
    -
    -
    -
    -boolean overRect(int x, int y, int width, int height) 
    -
    -{
    -
    -  if (mouseX >= x && mouseX <= x+width && 
    -
    -      mouseY >= y && mouseY <= y+height) {
    -
    -    return true;
    -
    -  } else {
    -
    -    return false;
    -
    -  }
    -
    -}
    -
    -
    -
    -boolean overCircle(int x, int y, int diameter) 
    -
    -{
    -
    -  float disX = x - mouseX;
    -
    -  float disY = y - mouseY;
    -
    -  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) {
    -
    -    return true;
    -
    -  } else {
    -
    -    return false;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/buttons/index.html b/learning/topic/buttons/index.html deleted file mode 100644 index 0239bf1..0000000 --- a/learning/topic/buttons/index.html +++ /dev/null @@ -1,877 +0,0 @@ ---- -layout: default ---- -

    Buttons

    - - - -

    Click on one of the shapes to change - -the background color. This example - -demonstates a class for buttons.

    - - - -

    Original Processing.org Example: Buttons
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -color currentcolor;
    -
    -
    -
    -CircleButton circle1, circle2, circle3;
    -
    -RectButton rect1, rect2;
    -
    -
    -
    -boolean locked = false;
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  smooth();
    -
    -
    -
    -  color baseColor = color(102);
    -
    -  currentcolor = baseColor;
    -
    -
    -
    -  // Define and create circle button
    -
    -  color buttoncolor = color(204);
    -
    -  color highlight = color(153);
    -
    -  ellipseMode(CENTER);
    -
    -  circle1 = new CircleButton(30, 100, 100, buttoncolor, highlight);
    -
    -
    -
    -  // Define and create rectangle button
    -
    -  buttoncolor = color(204);
    -
    -  highlight = color(153); 
    -
    -  circle2 = new CircleButton(130, 110, 24, buttoncolor, highlight);
    -
    -
    -
    -  // Define and create rectangle button
    -
    -  buttoncolor = color(153);
    -
    -  highlight = color(102); 
    -
    -  circle3 = new CircleButton(130, 140, 24, buttoncolor, highlight);
    -
    -
    -
    -  // Define and create rectangle button
    -
    -  buttoncolor = color(102);
    -
    -  highlight = color(51); 
    -
    -  rect1 = new RectButton(150, 20, 100, buttoncolor, highlight);
    -
    -
    -
    -  // Define and create rectangle button
    -
    -  buttoncolor = color(51);
    -
    -  highlight = color(0); 
    -
    -  rect2 = new RectButton(90, 20, 50, buttoncolor, highlight);
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  background(currentcolor);
    -
    -  stroke(255);
    -
    -  update(mouseX, mouseY);
    -
    -  circle1.display();
    -
    -  circle2.display();
    -
    -  circle3.display();
    -
    -  rect1.display();
    -
    -  rect2.display();
    -
    -}
    -
    -
    -
    -void update(int x, int y)
    -
    -{
    -
    -  if(locked == false) {
    -
    -    circle1.update();
    -
    -    circle2.update();
    -
    -    circle3.update();
    -
    -    rect1.update();
    -
    -    rect2.update();
    -
    -  } 
    -
    -  else {
    -
    -    locked = false;
    -
    -  }
    -
    -
    -
    -  if(mousePressed) {
    -
    -    if(circle1.pressed()) {
    -
    -      currentcolor = circle1.basecolor;
    -
    -    } 
    -
    -    else if(circle2.pressed()) {
    -
    -      currentcolor = circle2.basecolor;
    -
    -    } 
    -
    -    else if(circle3.pressed()) {
    -
    -      currentcolor = circle3.basecolor;
    -
    -    } 
    -
    -    else if(rect1.pressed()) {
    -
    -      currentcolor = rect1.basecolor;
    -
    -    } 
    -
    -    else if(rect2.pressed()) {
    -
    -      currentcolor = rect2.basecolor;
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -class Button
    -
    -{
    -
    -  int x, y;
    -
    -  int size;
    -
    -  color basecolor, highlightcolor;
    -
    -  color currentcolor;
    -
    -  boolean over = false;
    -
    -  boolean pressed = false;   
    -
    -
    -
    -  void update() 
    -
    -  {
    -
    -    if(over()) {
    -
    -      currentcolor = highlightcolor;
    -
    -    } 
    -
    -    else {
    -
    -      currentcolor = basecolor;
    -
    -    }
    -
    -  }
    -
    -
    -
    -  boolean pressed() 
    -
    -  {
    -
    -    if(over) {
    -
    -      locked = true;
    -
    -      return true;
    -
    -    } 
    -
    -    else {
    -
    -      locked = false;
    -
    -      return false;
    -
    -    }    
    -
    -  }
    -
    -
    -
    -  boolean over() 
    -
    -  { 
    -
    -    return true; 
    -
    -  }
    -
    -
    -
    -  boolean overRect(int x, int y, int width, int height) 
    -
    -  {
    -
    -    if (mouseX >= x && mouseX <= x+width && 
    -
    -      mouseY >= y && mouseY <= y+height) {
    -
    -      return true;
    -
    -    } 
    -
    -    else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -
    -
    -  boolean overCircle(int x, int y, int diameter) 
    -
    -  {
    -
    -    float disX = x - mouseX;
    -
    -    float disY = y - mouseY;
    -
    -    if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) {
    -
    -      return true;
    -
    -    } 
    -
    -    else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -
    -
    -}
    -
    -
    -
    -class CircleButton extends Button
    -
    -{ 
    -
    -  CircleButton(int ix, int iy, int isize, color icolor, color ihighlight) 
    -
    -  {
    -
    -    x = ix;
    -
    -    y = iy;
    -
    -    size = isize;
    -
    -    basecolor = icolor;
    -
    -    highlightcolor = ihighlight;
    -
    -    currentcolor = basecolor;
    -
    -  }
    -
    -
    -
    -  boolean over() 
    -
    -  {
    -
    -    if( overCircle(x, y, size) ) {
    -
    -      over = true;
    -
    -      return true;
    -
    -    } 
    -
    -    else {
    -
    -      over = false;
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void display() 
    -
    -  {
    -
    -    stroke(255);
    -
    -    fill(currentcolor);
    -
    -    ellipse(x, y, size, size);
    -
    -  }
    -
    -}
    -
    -
    -
    -class RectButton extends Button
    -
    -{
    -
    -  RectButton(int ix, int iy, int isize, color icolor, color ihighlight) 
    -
    -  {
    -
    -    x = ix;
    -
    -    y = iy;
    -
    -    size = isize;
    -
    -    basecolor = icolor;
    -
    -    highlightcolor = ihighlight;
    -
    -    currentcolor = basecolor;
    -
    -  }
    -
    -
    -
    -  boolean over() 
    -
    -  {
    -
    -    if( overRect(x, y, size, size) ) {
    -
    -      over = true;
    -
    -      return true;
    -
    -    } 
    -
    -    else {
    -
    -      over = false;
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void display() 
    -
    -  {
    -
    -    stroke(255);
    -
    -    fill(currentcolor);
    -
    -    rect(x, y, size, size);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/chain/index.html b/learning/topic/chain/index.html deleted file mode 100644 index 0b137c4..0000000 --- a/learning/topic/chain/index.html +++ /dev/null @@ -1,269 +0,0 @@ ---- -layout: default ---- -

    Chain

    - - - -

    One mass is attached to the mouse position and the other - -is attached the position of the other mass. The gravity - -in the environment pulls down on both.

    - - - -

    Original Processing.org Example: Chain
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -Spring2D s1, s2;
    -
    -
    -
    -float gravity = 6.0;
    -
    -float mass = 2.0;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  smooth();
    -
    -  fill(0);
    -
    -  // Inputs: x, y, mass, gravity
    -
    -  s1 = new Spring2D(0.0, width/2, mass, gravity);
    -
    -  s2 = new Spring2D(0.0, width/2, mass, gravity);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(204);
    -
    -  s1.update(mouseX, mouseY);
    -
    -  s1.display(mouseX, mouseY);
    -
    -  s2.update(s1.x, s1.y);
    -
    -  s2.display(s1.x, s1.y);
    -
    -}
    -
    -
    -
    -class Spring2D {
    -
    -  float vx, vy; // The x- and y-axis velocities
    -
    -  float x, y; // The x- and y-coordinates
    -
    -  float gravity;
    -
    -  float mass;
    -
    -  float radius = 20;
    -
    -  float stiffness = 0.2;
    -
    -  float damping = 0.7;
    -
    -  
    -
    -  Spring2D(float xpos, float ypos, float m, float g) {
    -
    -    x = xpos;
    -
    -    y = ypos;
    -
    -    mass = m;
    -
    -    gravity = g;
    -
    -  }
    -
    -  
    -
    -  void update(float targetX, float targetY) {
    -
    -    float forceX = (targetX - x) * stiffness;
    -
    -    float ax = forceX / mass;
    -
    -    vx = damping * (vx + ax);
    -
    -    x += vx;
    -
    -    float forceY = (targetY - y) * stiffness;
    -
    -    forceY += gravity;
    -
    -    float ay = forceY / mass;
    -
    -    vy = damping * (vy + ay);
    -
    -    y += vy;
    -
    -  }
    -
    -  
    -
    -  void display(float nx, float ny) {
    -
    -    noStroke();
    -
    -    ellipse(x, y, radius*2, radius*2);
    -
    -    stroke(255);
    -
    -    line(x, y, nx, ny);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/circlecollision/index.html b/learning/topic/circlecollision/index.html deleted file mode 100644 index e3a3d30..0000000 --- a/learning/topic/circlecollision/index.html +++ /dev/null @@ -1,659 +0,0 @@ ---- -layout: default ---- -

    CircleCollision

    - - - -

    by Ira Greenberg. - - - -Based on Keith Peter's Solution in - -Foundation Actionscript Animation: - -Making Things Move! - -http://www.friendsofed.com/book.html?isbn=1590597915

    - - - -

    Original Processing.org Example: CircleCollision
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -Ball[] balls =  { 
    -
    -  new Ball(100, 400, 10), 
    -
    -  new Ball(700, 400, 40) 
    -
    -  };
    -
    -
    -
    -Vect2D[] vels = { 
    -
    -  new Vect2D(2.15, -1.35), 
    -
    -  new Vect2D(-1.65, .42) 
    -
    -  };
    -
    -
    -
    -void setup(){
    -
    -  size(200, 200);
    -
    -  smooth();
    -
    -  noStroke();
    -
    -}
    -
    -
    -
    -void draw(){
    -
    -  background(51);
    -
    -  fill(204);
    -
    -  for (int i=0; i< 2; i++){
    -
    -    balls[i].x += vels[i].vx;
    -
    -    balls[i].y += vels[i].vy;
    -
    -    ellipse(balls[i].x, balls[i].y, balls[i].r*2, balls[i].r*2);
    -
    -    checkBoundaryCollision(balls[i], vels[i]);
    -
    -  }
    -
    -  checkObjectCollision(balls, vels);
    -
    -}
    -
    -
    -
    -void checkObjectCollision(Ball[] b, Vect2D[] v){
    -
    -
    -
    -  // get distances between the balls components
    -
    -  Vect2D bVect = new Vect2D();
    -
    -  bVect.vx = b[1].x - b[0].x;
    -
    -  bVect.vy = b[1].y - b[0].y;
    -
    -
    -
    -  // calculate magnitude of the vector separating the balls
    -
    -  float bVectMag = sqrt(bVect.vx * bVect.vx + bVect.vy * bVect.vy);
    -
    -  if (bVectMag < b[0].r + b[1].r){
    -
    -    // get angle of bVect
    -
    -    float theta  = atan2(bVect.vy, bVect.vx);
    -
    -    // precalculate trig values
    -
    -    float sine = sin(theta);
    -
    -    float cosine = cos(theta);
    -
    -
    -
    -    /* bTemp will hold rotated ball positions. You 
    -
    -     just need to worry about bTemp[1] position*/
    -
    -    Ball[] bTemp = {  
    -
    -      new Ball(), new Ball()      };
    -
    -    /* b[1]'s position is relative to b[0]'s
    -
    -     so you can use the vector between them (bVect) as the 
    -
    -     reference point in the rotation expressions.
    -
    -     bTemp[0].x and bTemp[0].y will initialize
    -
    -     automatically to 0.0, which is what you want
    -
    -     since b[1] will rotate around b[0] */
    -
    -    bTemp[1].x  = cosine * bVect.vx + sine * bVect.vy;
    -
    -    bTemp[1].y  = cosine * bVect.vy - sine * bVect.vx;
    -
    -
    -
    -    // rotate Temporary velocities
    -
    -    Vect2D[] vTemp = { 
    -
    -      new Vect2D(), new Vect2D()     };
    -
    -    vTemp[0].vx  = cosine * v[0].vx + sine * v[0].vy;
    -
    -    vTemp[0].vy  = cosine * v[0].vy - sine * v[0].vx;
    -
    -    vTemp[1].vx  = cosine * v[1].vx + sine * v[1].vy;
    -
    -    vTemp[1].vy  = cosine * v[1].vy - sine * v[1].vx;
    -
    -
    -
    -    /* Now that velocities are rotated, you can use 1D
    -
    -     conservation of momentum equations to calculate 
    -
    -     the final velocity along the x-axis. */
    -
    -    Vect2D[] vFinal = {  
    -
    -      new Vect2D(), new Vect2D()      };
    -
    -    // final rotated velocity for b[0]
    -
    -    vFinal[0].vx = ((b[0].m - b[1].m) * vTemp[0].vx + 2 * b[1].m * 
    -
    -      vTemp[1].vx) / (b[0].m + b[1].m);
    -
    -    vFinal[0].vy = vTemp[0].vy;
    -
    -    // final rotated velocity for b[0]
    -
    -    vFinal[1].vx = ((b[1].m - b[0].m) * vTemp[1].vx + 2 * b[0].m * 
    -
    -      vTemp[0].vx) / (b[0].m + b[1].m);
    -
    -    vFinal[1].vy = vTemp[1].vy;
    -
    -
    -
    -    // hack to avoid clumping
    -
    -    bTemp[0].x += vFinal[0].vx;
    -
    -    bTemp[1].x += vFinal[1].vx;
    -
    -
    -
    -    /* Rotate ball positions and velocities back
    -
    -     Reverse signs in trig expressions to rotate 
    -
    -     in the opposite direction */
    -
    -    // rotate balls
    -
    -    Ball[] bFinal = { 
    -
    -      new Ball(), new Ball()     };
    -
    -    bFinal[0].x = cosine * bTemp[0].x - sine * bTemp[0].y;
    -
    -    bFinal[0].y = cosine * bTemp[0].y + sine * bTemp[0].x;
    -
    -    bFinal[1].x = cosine * bTemp[1].x - sine * bTemp[1].y;
    -
    -    bFinal[1].y = cosine * bTemp[1].y + sine * bTemp[1].x;
    -
    -
    -
    -    // update balls to screen position
    -
    -    b[1].x = b[0].x + bFinal[1].x;
    -
    -    b[1].y = b[0].y + bFinal[1].y;
    -
    -    b[0].x = b[0].x + bFinal[0].x;
    -
    -    b[0].y = b[0].y + bFinal[0].y;
    -
    -
    -
    -    // update velocities
    -
    -    v[0].vx = cosine * vFinal[0].vx - sine * vFinal[0].vy;
    -
    -    v[0].vy = cosine * vFinal[0].vy + sine * vFinal[0].vx;
    -
    -    v[1].vx = cosine * vFinal[1].vx - sine * vFinal[1].vy;
    -
    -    v[1].vy = cosine * vFinal[1].vy + sine * vFinal[1].vx;
    -
    -  }
    -
    -}
    -
    -
    -
    -class Ball{
    -
    -  float x, y, r, m;
    -
    -
    -
    -  // default constructor
    -
    -  Ball() {
    -
    -  }
    -
    -
    -
    -  Ball(float x, float y, float r) {
    -
    -    this.x = x;
    -
    -    this.y = y;
    -
    -    this.r = r;
    -
    -    m = r*.1;
    -
    -  }
    -
    -}
    -
    -
    -
    -class Vect2D{
    -
    -  float vx, vy;
    -
    -
    -
    -  // default constructor
    -
    -  Vect2D() {
    -
    -  }
    -
    -
    -
    -  Vect2D(float vx, float vy) {
    -
    -    this.vx = vx;
    -
    -    this.vy = vy;
    -
    -  }
    -
    -}
    -
    -
    -
    -// checkBoundaryCollision() function:
    -
    -void checkBoundaryCollision(Ball ball, Vect2D vel){
    -
    -  if (ball.x > width-ball.r){
    -
    -    ball.x = width-ball.r;
    -
    -    vel.vx *= -1;
    -
    -  } 
    -
    -  else if (ball.x < ball.r){
    -
    -    ball.x = ball.r;
    -
    -    vel.vx *= -1;
    -
    -  } 
    -
    -  else if (ball.y > height-ball.r){
    -
    -    ball.y = height-ball.r;
    -
    -    vel.vy *= -1;
    -
    -  } 
    -
    -  else if (ball.y < ball.r){
    -
    -    ball.y = ball.r;
    -
    -    vel.vy *= -1;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/collision/index.html b/learning/topic/collision/index.html deleted file mode 100644 index eea2bf3..0000000 --- a/learning/topic/collision/index.html +++ /dev/null @@ -1,321 +0,0 @@ ---- -layout: default ---- -

    Collision

    - - - -

    Move the mouse up and down to move the paddle.

    - - - -

    Original Processing.org Example: Collision
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// Global variables for the ball
    -
    -float ball_x;
    -
    -float ball_y;
    -
    -float ball_dir = 1;
    -
    -float ball_size = 5;  // Radius
    -
    -float dy = 0;  // Direction
    -
    -
    -
    -// Global variables for the paddle
    -
    -int paddle_width = 5;
    -
    -int paddle_height = 20;
    -
    -
    -
    -int dist_wall = 15;
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  rectMode(CENTER_RADIUS);
    -
    -  ellipseMode(CENTER_RADIUS);
    -
    -  noStroke();
    -
    -  smooth();
    -
    -  ball_y = height/2;
    -
    -  ball_x = 1;
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(51);
    -
    -  
    -
    -  ball_x += ball_dir * 1.0;
    -
    -  ball_y += dy;
    -
    -  if(ball_x > width+ball_size) {
    -
    -    ball_x = -width/2 - ball_size;
    -
    -    ball_y = random(0, height);
    -
    -    dy = 0;
    -
    -  }
    -
    -  
    -
    -  // Constrain paddle to screen
    -
    -  float paddle_y = constrain(mouseY, paddle_height, height-paddle_height);
    -
    -
    -
    -  // Test to see if the ball is touching the paddle
    -
    -  float py = width-dist_wall-paddle_width-ball_size;
    -
    -  if(ball_x == py 
    -
    -     && ball_y > paddle_y - paddle_height - ball_size 
    -
    -     && ball_y < paddle_y + paddle_height + ball_size) {
    -
    -    ball_dir *= -1;
    -
    -    if(mouseY != pmouseY) {
    -
    -      dy = (mouseY-pmouseY)/2.0;
    -
    -      if(dy >  5) { dy =  5; }
    -
    -      if(dy < -5) { dy = -5; }
    -
    -    }
    -
    -  } 
    -
    -  
    -
    -  // If ball hits paddle or back wall, reverse direction
    -
    -  if(ball_x < ball_size && ball_dir == -1) {
    -
    -    ball_dir *= -1;
    -
    -  }
    -
    -  
    -
    -  // If the ball is touching top or bottom edge, reverse direction
    -
    -  if(ball_y > height-ball_size) {
    -
    -    dy = dy * -1;
    -
    -  }
    -
    -  if(ball_y < ball_size) {
    -
    -    dy = dy * -1;
    -
    -  }
    -
    -
    -
    -  // Draw ball
    -
    -  fill(255);
    -
    -  ellipse(ball_x, ball_y, ball_size, ball_size);
    -
    -  
    -
    -  // Draw the paddle
    -
    -  fill(153);
    -
    -  rect(width-dist_wall, paddle_y, paddle_width, paddle_height);  
    -
    -}
    - - - - - diff --git a/learning/topic/continuouslines/index.html b/learning/topic/continuouslines/index.html deleted file mode 100644 index 1ba1233..0000000 --- a/learning/topic/continuouslines/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default ---- -

    ContinuousLines

    - - - -

    Click and drag the mouse to draw a line.

    - - - -

    Original Processing.org Example: ContinuousLines
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  background(102);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  stroke(255);
    -
    -  if(mousePressed) {
    -
    -    line(mouseX, mouseY, pmouseX, pmouseY);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/convolution/data/end.jpg b/learning/topic/convolution/data/end.jpg deleted file mode 100644 index 32935763af3208f36d5965ba9dd2cfb03c534820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36399 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 Vbwn@MK8Lu@I<<~V)q4eh|Jm*`x(5IN diff --git a/learning/topic/convolution/index.html b/learning/topic/convolution/index.html deleted file mode 100644 index de48bcd..0000000 --- a/learning/topic/convolution/index.html +++ /dev/null @@ -1,301 +0,0 @@ ---- -layout: default ---- -

    Convolution

    - - - -

    by Daniel Shiffman. - - - -Applys a convolution matrix to a portion of the index. - -Move mouse to apply filter to different parts of the image.

    - - - -

    Original Processing.org Example: Convolution
    - -

    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/end.jpg"; */
    -
    -
    -
    -PImage img;
    -
    -int w = 80;
    -
    -
    -
    -// It's possible to convolve the image with 
    -
    -// many different matrices
    -
    -
    -
    -  float[][] matrix = { { -1, -1, -1 },
    -
    -                       { -1,  9, -1 },
    -
    -                       { -1, -1, -1 } }; 
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  frameRate(30);
    -
    -  img = loadImage("data/end.jpg");
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  // We're only going to process a portion of the image
    -
    -  // so let's set the whole image as the background first
    -
    -  image(img,0,0);
    -
    -  // Where is the small rectangle we will process
    -
    -  int xstart = constrain(mouseX-w/2,0,img.width);
    -
    -  int ystart = constrain(mouseY-w/2,0,img.height);
    -
    -  int xend = constrain(mouseX+w/2,0,img.width);
    -
    -  int yend = constrain(mouseY+w/2,0,img.height);
    -
    -  int matrixsize = 3;
    -
    -  loadPixels();
    -
    -  // Begin our loop for every pixel
    -
    -  for (int x = xstart; x < xend; x++) {
    -
    -    for (int y = ystart; y < yend; y++ ) {
    -
    -      color c = convolution(x,y,matrix,matrixsize,img);
    -
    -      int loc = x + y*img.width;
    -
    -      pixels[loc] = c;
    -
    -    }
    -
    -  }
    -
    -  updatePixels();
    -
    -}
    -
    -
    -
    -color convolution(int x, int y, float[][] matrix,int matrixsize, PImage img)
    -
    -{
    -
    -  float rtotal = 0.0;
    -
    -  float gtotal = 0.0;
    -
    -  float btotal = 0.0;
    -
    -  int offset = matrixsize / 2;
    -
    -  for (int i = 0; i < matrixsize; i++){
    -
    -    for (int j= 0; j < matrixsize; j++){
    -
    -      // What pixel are we testing
    -
    -      int xloc = x+i-offset;
    -
    -      int yloc = y+j-offset;
    -
    -      int loc = xloc + img.width*yloc;
    -
    -      // Make sure we haven't walked off our image, we could do better here
    -
    -      loc = constrain(loc,0,img.pixels.length-1);
    -
    -      // Calculate the convolution
    -
    -      rtotal += (red(img.pixels[loc]) * matrix[i][j]);
    -
    -      gtotal += (green(img.pixels[loc]) * matrix[i][j]);
    -
    -      btotal += (blue(img.pixels[loc]) * matrix[i][j]);
    -
    -    }
    -
    -  }
    -
    -  // Make sure RGB is within range
    -
    -  rtotal = constrain(rtotal,0,255);
    -
    -  gtotal = constrain(gtotal,0,255);
    -
    -  btotal = constrain(btotal,0,255);
    -
    -  // Return the resulting color
    -
    -  return color(rtotal,gtotal,btotal);
    -
    -}
    - - - - - diff --git a/learning/topic/conway/index.html b/learning/topic/conway/index.html deleted file mode 100644 index 11e2d4c..0000000 --- a/learning/topic/conway/index.html +++ /dev/null @@ -1,317 +0,0 @@ ---- -layout: default ---- -

    Conway

    - - - -

    by Mike Davis. - - - -This program is a simple version of Conway's - -game of Life. A lit point turns off if there - -are fewer than two or more than three surrounding - -lit points. An unlit point turns on if there - -are exactly three lit neighbors. The 'density' - -parameter determines how much of the board will - -start out lit.

    - - - -

    Original Processing.org Example: Conway
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int sx, sy; 
    -
    -float density = 0.5; 
    -
    -int[][][] world;
    -
    - 
    -
    -void setup() 
    -
    -{ 
    -
    -  size(100, 100);
    -
    -  frameRate(12);
    -
    -  sx = width;
    -
    -  sy = height;
    -
    -  world = new int[sx][sy][2]; 
    -
    -  stroke(255); 
    -
    -   
    -
    -  // Set random cells to 'on' 
    -
    -  for (int i = 0; i < sx * sy * density; i++) { 
    -
    -    world[(int)random(sx)][(int)random(sy)][1] = 1; 
    -
    -  } 
    -
    -} 
    -
    - 
    -
    -void draw() 
    -
    -{ 
    -
    -  background(0); 
    -
    -  
    -
    -  // Drawing and update cycle 
    -
    -  for (int x = 0; x < sx; x=x+1) { 
    -
    -    for (int y = 0; y < sy; y=y+1) { 
    -
    -      //if (world[x][y][1] == 1) 
    -
    -      // Change recommended by The.Lucky.Mutt
    -
    -      if ((world[x][y][1] == 1) || (world[x][y][1] == 0 && world[x][y][0] == 1)) 
    -
    -      { 
    -
    -        world[x][y][0] = 1; 
    -
    -        point(x, y); 
    -
    -      } 
    -
    -      if (world[x][y][1] == -1) 
    -
    -      { 
    -
    -        world[x][y][0] = 0; 
    -
    -      } 
    -
    -      world[x][y][1] = 0; 
    -
    -    } 
    -
    -  } 
    -
    -  // Birth and death cycle 
    -
    -  for (int x = 0; x < sx; x=x+1) { 
    -
    -    for (int y = 0; y < sy; y=y+1) { 
    -
    -      int count = neighbors(x, y); 
    -
    -      if (count == 3 && world[x][y][0] == 0) 
    -
    -      { 
    -
    -        world[x][y][1] = 1; 
    -
    -      } 
    -
    -      if ((count < 2 || count > 3) && world[x][y][0] == 1) 
    -
    -     { 
    -
    -        world[x][y][1] = -1; 
    -
    -      } 
    -
    -    } 
    -
    -  } 
    -
    -} 
    -
    - 
    -
    -// Count the number of adjacent cells 'on' 
    -
    -int neighbors(int x, int y) 
    -
    -{ 
    -
    -  return world[(x + 1) % sx][y][0] + 
    -
    -         world[x][(y + 1) % sy][0] + 
    -
    -         world[(x + sx - 1) % sx][y][0] + 
    -
    -         world[x][(y + sy - 1) % sy][0] + 
    -
    -         world[(x + 1) % sx][(y + 1) % sy][0] + 
    -
    -         world[(x + sx - 1) % sx][(y + 1) % sy][0] + 
    -
    -         world[(x + sx - 1) % sx][(y + sy - 1) % sy][0] + 
    -
    -         world[(x + 1) % sx][(y + sy - 1) % sy][0]; 
    -
    -}
    - - - - - diff --git a/learning/topic/customtool/data/milan.jpg b/learning/topic/customtool/data/milan.jpg deleted file mode 100644 index 41aa2713dc7ef4dff889e3b1359f42a201457b04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8729 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 diff --git a/learning/topic/customtool/data/paris.jpg b/learning/topic/customtool/data/paris.jpg deleted file mode 100644 index a6d85ed574d600efff71907dd22375d4879c830f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67866 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 diff --git a/learning/topic/customtool/index.html b/learning/topic/customtool/index.html deleted file mode 100644 index afe7b1b..0000000 --- a/learning/topic/customtool/index.html +++ /dev/null @@ -1,345 +0,0 @@ ---- -layout: default ---- -

    CustomTool

    - - - -

    Move the cursor across the screen to draw. - -In addition to creating software tools to simulate pens and pencils, - -it is possible to create unique tools to draw with.

    - - - -

    Original Processing.org Example: CustomTool
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int dots = 1000;
    -
    -float[] dX = new float[dots];
    -
    -float[] dY = new float[dots];
    -
    -
    -
    -float l_0 = 0.0;
    -
    -float h_0 = 0.0;
    -
    -
    -
    -float legX = 0.0;
    -
    -float legY = 0.0;
    -
    -float thighX = 0.0;
    -
    -float thighY = 0.0;
    -
    -
    -
    -float l = 30.0; // Length of the 'leg'
    -
    -float h = 60.0; // Height of the 'leg'
    -
    -
    -
    -float nmx, nmy = 0.0;
    -
    -float mx, my = 0.0;
    -
    -
    -
    -float offset;
    -
    -
    -
    -int currentValue = 0;
    -
    -int valdir = 1;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  fill(102);
    -
    -  rect(0, 0, width, height);
    -
    -  offset = width/2;
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  // Smooth the mouse
    -
    -  nmx = mouseX;
    -
    -  nmy = mouseY;
    -
    -  if((abs(mx - nmx) > 1.0) || (abs(my - nmy) > 1.0)) { 
    -
    -    mx = mx - (mx-nmx)/20.0;
    -
    -    my = my - (my-nmy)/20.0;
    -
    -    
    -
    -    // Set the drawing value
    -
    -    currentValue += 1* valdir;
    -
    -    if(currentValue > 255 || currentValue <= 0) {
    -
    -      valdir *= -1;
    -
    -    }
    -
    -  }
    -
    -
    -
    -  iKinematics();
    -
    -  kinematics();
    -
    -  
    -
    -  pushMatrix();
    -
    -  translate(offset, offset);
    -
    -  stroke(currentValue); 
    -
    -  line(thighX, thighY, legX, legY);
    -
    -  popMatrix();
    -
    -  
    -
    -  stroke(255);
    -
    -  point(legX+offset, legY+offset);
    -
    -}
    -
    -
    -
    -void kinematics() 
    -
    -{
    -
    -  thighX = h*cos(h_0);
    -
    -  thighY = h*sin(h_0);
    -
    -  legX = thighX + l*cos(h_0 - l_0);
    -
    -  legY = thighY + l*sin(h_0 - l_0);
    -
    -}
    -
    -
    -
    -void iKinematics()
    -
    -{
    -
    -  float tx = mx - width/2.0;
    -
    -  float ty = my - height/2.0;
    -
    -  float c2 = (tx*tx + ty*ty - h*h - l*l)/(2*h*l); //in degrees
    -
    -  float s2 = sqrt(abs(1 - c2*c2)); // the sign here determines the bend in the joint  
    -
    -  l_0 = -atan2(s2, c2);
    -
    -  h_0 = atan2(ty, tx) - atan2(l*s2, h+l*c2);
    -
    -}
    - - - - - diff --git a/learning/topic/edgedetection/data/house.jpg b/learning/topic/edgedetection/data/house.jpg deleted file mode 100644 index c6d311fd18148d0fd4e6ded78fde02eaa66abc2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26723 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

    - - - -

    Exposing areas of contrast within an image - -by processing it through a high-pass filter.

    - - - -

    Original Processing.org Example: EdgeDetection
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/house.jpg"; */
    -
    -
    -
    -float[][] kernel = { { -1, -1, -1 },
    -
    -                     { -1,  9, -1 },
    -
    -                     { -1, -1, -1 } };
    -
    -  
    -
    -size(200, 200);
    -
    -PImage img = loadImage("data/house.jpg"); // Load the original image
    -
    -image(img, 0, 0); // Displays the image from point (0,0) 
    -
    -img.loadPixels();
    -
    -// Create an opaque image of the same size as the original
    -
    -PImage edgeImg = createImage(img.width, img.height, RGB);
    -
    -// Loop through every pixel in the image.
    -
    -for (int y = 1; y < img.height-1; y++) { // Skip top and bottom edges
    -
    -  for (int x = 1; x < img.width-1; x++) { // Skip left and right edges
    -
    -    float sum = 0; // Kernel sum for this pixel
    -
    -    for (int ky = -1; ky <= 1; ky++) {
    -
    -      for (int kx = -1; kx <= 1; kx++) {
    -
    -        // Calculate the adjacent pixel for this kernel point
    -
    -        int pos = (y + ky)*width + (x + kx);
    -
    -        // Image is grayscale, red/green/blue are identical
    -
    -        float val = red(img.pixels[pos]);
    -
    -        // Multiply adjacent pixels based on the kernel values
    -
    -        sum += kernel[ky+1][kx+1] * val;
    -
    -      }
    -
    -    }
    -
    -    // For this pixel in the new image, set the gray value
    -
    -    // based on the sum from the kernel
    -
    -    edgeImg.pixels[y*img.width + x] = color(sum);
    -
    -  }
    -
    -}
    -
    -// State that there are changes to edgeImg.pixels[]
    -
    -edgeImg.updatePixels();
    -
    -image(edgeImg, 100, 0); // Draw the new image
    - - - - - diff --git a/learning/topic/flocking/index.html b/learning/topic/flocking/index.html deleted file mode 100644 index 8d6f946..0000000 --- a/learning/topic/flocking/index.html +++ /dev/null @@ -1,1445 +0,0 @@ ---- -layout: default ---- -

    Flocking

    - - - -

    by Daniel Shiffman. - - - -An implementation of Craig Reynold's Boids program to simulate - -the flocking behavior of birds. Each boid steers itself based on - -rules of avoidance, alignment, and coherence. - - - -Click the mouse to add a new boid.

    - - - -

    Original Processing.org Example: Flocking
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -Flock flock;
    -
    -
    -
    -void setup() {
    -
    -  size(200,200);
    -
    -  colorMode(RGB,255,255,255,100);
    -
    -  flock = new Flock();
    -
    -  // Add an initial set of boids into the system
    -
    -  for (int i = 0; i < 50; i++) {
    -
    -    flock.addBoid(new Boid(new Vector3D(width/2,height/2),2.0f,0.05f));
    -
    -  }
    -
    -  smooth();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -
    -
    -  background(100);
    -
    -  flock.run();
    -
    -}
    -
    -
    -
    -// Add a new boid into the System
    -
    -void mousePressed() {
    -
    -  flock.addBoid(new Boid(new Vector3D(mouseX,mouseY),2.0f,0.05f));
    -
    -}
    -
    -
    -
    -class Flock {
    -
    -  ArrayList boids; // An arraylist for all the boids
    -
    -
    -
    -  Flock() {
    -
    -    boids = new ArrayList(); // Initialize the arraylist
    -
    -  }
    -
    -
    -
    -  void run() {
    -
    -    for (int i = 0; i < boids.size(); i++) {
    -
    -      Boid b = (Boid) boids.get(i);  
    -
    -      b.run(boids);  // Passing the entire list of boids to each boid individually
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void addBoid(Boid b) {
    -
    -    boids.add(b);
    -
    -  }
    -
    -
    -
    -}
    -
    -
    -
    -
    -
    -class Boid {
    -
    -
    -
    -  Vector3D loc;
    -
    -  Vector3D vel;
    -
    -  Vector3D acc;
    -
    -  float r;
    -
    -  float maxforce;    // Maximum steering force
    -
    -  float maxspeed;    // Maximum speed
    -
    -
    -
    -  Boid(Vector3D l, float ms, float mf) {
    -
    -    acc = new Vector3D(0,0);
    -
    -    vel = new Vector3D(random(-1,1),random(-1,1));
    -
    -    loc = l.copy();
    -
    -    r = 2.0f;
    -
    -    maxspeed = ms;
    -
    -    maxforce = mf;
    -
    -  }
    -
    -  
    -
    -  void run(ArrayList boids) {
    -
    -    flock(boids);
    -
    -    update();
    -
    -    borders();
    -
    -    render();
    -
    -  }
    -
    -
    -
    -  // We accumulate a new acceleration each time based on three rules
    -
    -  void flock(ArrayList boids) {
    -
    -    Vector3D sep = separate(boids);   // Separation
    -
    -    Vector3D ali = align(boids);      // Alignment
    -
    -    Vector3D coh = cohesion(boids);   // Cohesion
    -
    -    // Arbitrarily weight these forces
    -
    -    sep.mult(2.0f);
    -
    -    ali.mult(1.0f);
    -
    -    coh.mult(1.0f);
    -
    -    // Add the force vectors to acceleration
    -
    -    acc.add(sep);
    -
    -    acc.add(ali);
    -
    -    acc.add(coh);
    -
    -  }
    -
    -  
    -
    -  // Method to update location
    -
    -  void update() {
    -
    -    // Update velocity
    -
    -    vel.add(acc);
    -
    -    // Limit speed
    -
    -    vel.limit(maxspeed);
    -
    -    loc.add(vel);
    -
    -    // Reset accelertion to 0 each cycle
    -
    -    acc.setXYZ(0,0,0);
    -
    -  }
    -
    -
    -
    -  void seek(Vector3D target) {
    -
    -    acc.add(steer(target,false));
    -
    -  }
    -
    - 
    -
    -  void arrive(Vector3D target) {
    -
    -    acc.add(steer(target,true));
    -
    -  }
    -
    -
    -
    -  // A method that calculates a steering vector towards a target
    -
    -  // Takes a second argument, if true, it slows down as it approaches the target
    -
    -  Vector3D steer(Vector3D target, boolean slowdown) {
    -
    -    Vector3D steer;  // The steering vector
    -
    -    Vector3D desired = target.sub(target,loc);  // A vector pointing from the location to the target
    -
    -    float d = desired.magnitude(); // Distance from the target is the magnitude of the vector
    -
    -    // If the distance is greater than 0, calc steering (otherwise return zero vector)
    -
    -    if (d > 0) {
    -
    -      // Normalize desired
    -
    -      desired.normalize();
    -
    -      // Two options for desired vector magnitude (1 -- based on distance, 2 -- maxspeed)
    -
    -      if ((slowdown) && (d < 100.0f)) desired.mult(maxspeed*(d/100.0f)); // This damping is somewhat arbitrary
    -
    -      else desired.mult(maxspeed);
    -
    -      // Steering = Desired minus Velocity
    -
    -      steer = target.sub(desired,vel);
    -
    -      steer.limit(maxforce);  // Limit to maximum steering force
    -
    -    } else {
    -
    -      steer = new Vector3D(0,0);
    -
    -    }
    -
    -    return steer;
    -
    -  }
    -
    -  
    -
    -  void render() {
    -
    -    // Draw a triangle rotated in the direction of velocity
    -
    -    float theta = vel.heading2D() + radians(90);
    -
    -    fill(200);
    -
    -    stroke(255);
    -
    -    pushMatrix();
    -
    -    translate(loc.x,loc.y);
    -
    -    rotate(theta);
    -
    -    beginShape(TRIANGLES);
    -
    -    vertex(0, -r*2);
    -
    -    vertex(-r, r*2);
    -
    -    vertex(r, r*2);
    -
    -    endShape();
    -
    -    popMatrix();
    -
    -  }
    -
    -  
    -
    -  // Wraparound
    -
    -  void borders() {
    -
    -    if (loc.x < -r) loc.x = width+r;
    -
    -    if (loc.y < -r) loc.y = height+r;
    -
    -    if (loc.x > width+r) loc.x = -r;
    -
    -    if (loc.y > height+r) loc.y = -r;
    -
    -  }
    -
    -
    -
    -  // Separation
    -
    -  // Method checks for nearby boids and steers away
    -
    -  Vector3D separate (ArrayList boids) {
    -
    -    float desiredseparation = 25.0f;
    -
    -    Vector3D sum = new Vector3D(0,0,0);
    -
    -    int count = 0;
    -
    -    // For every boid in the system, check if it's too close
    -
    -    for (int i = 0 ; i < boids.size(); i++) {
    -
    -      Boid other = (Boid) boids.get(i);
    -
    -      float d = loc.distance(loc,other.loc);
    -
    -      // If the distance is greater than 0 and less than an arbitrary amount (0 when you are yourself)
    -
    -      if ((d > 0) && (d < desiredseparation)) {
    -
    -        // Calculate vector pointing away from neighbor
    -
    -        Vector3D diff = loc.sub(loc,other.loc);
    -
    -        diff.normalize();
    -
    -        diff.div(d);        // Weight by distance
    -
    -        sum.add(diff);
    -
    -        count++;            // Keep track of how many
    -
    -      }
    -
    -    }
    -
    -    // Average -- divide by how many
    -
    -    if (count > 0) {
    -
    -      sum.div((float)count);
    -
    -    }
    -
    -    return sum;
    -
    -  }
    -
    -  
    -
    -  // Alignment
    -
    -  // For every nearby boid in the system, calculate the average velocity
    -
    -  Vector3D align (ArrayList boids) {
    -
    -    float neighbordist = 50.0f;
    -
    -    Vector3D sum = new Vector3D(0,0,0);
    -
    -    int count = 0;
    -
    -    for (int i = 0 ; i < boids.size(); i++) {
    -
    -      Boid other = (Boid) boids.get(i);
    -
    -      float d = loc.distance(loc,other.loc);
    -
    -      if ((d > 0) && (d < neighbordist)) {
    -
    -        sum.add(other.vel);
    -
    -        count++;
    -
    -      }
    -
    -    }
    -
    -    if (count > 0) {
    -
    -      sum.div((float)count);
    -
    -      sum.limit(maxforce);
    -
    -    }
    -
    -    return sum;
    -
    -  }
    -
    -
    -
    -  // Cohesion
    -
    -  // For the average location (i.e. center) of all nearby boids, calculate steering vector towards that location
    -
    -  Vector3D cohesion (ArrayList boids) {
    -
    -    float neighbordist = 50.0f;
    -
    -    Vector3D sum = new Vector3D(0,0,0);   // Start with empty vector to accumulate all locations
    -
    -    int count = 0;
    -
    -    for (int i = 0 ; i < boids.size(); i++) {
    -
    -      Boid other = (Boid) boids.get(i);
    -
    -      float d = loc.distance(loc,other.loc);
    -
    -      if ((d > 0) && (d < neighbordist)) {
    -
    -        sum.add(other.loc); // Add location
    -
    -        count++;
    -
    -      }
    -
    -    }
    -
    -    if (count > 0) {
    -
    -      sum.div((float)count);
    -
    -      return steer(sum,false);  // Steer towards the location
    -
    -    }
    -
    -    return sum;
    -
    -  }
    -
    -}
    -
    -
    -
    -// Simple Vector3D Class 
    -
    -
    -
    -static class Vector3D {
    -
    -  float x;
    -
    -  float y;
    -
    -  float z;
    -
    -
    -
    -  Vector3D(float x_, float y_, float z_) {
    -
    -    x = x_; y = y_; z = z_;
    -
    -  }
    -
    -
    -
    -  Vector3D(float x_, float y_) {
    -
    -    x = x_; y = y_; z = 0f;
    -
    -  }
    -
    -  
    -
    -  Vector3D() {
    -
    -    x = 0f; y = 0f; z = 0f;
    -
    -  }
    -
    -
    -
    -  void setX(float x_) {
    -
    -    x = x_;
    -
    -  }
    -
    -
    -
    -  void setY(float y_) {
    -
    -    y = y_;
    -
    -  }
    -
    -
    -
    -  void setZ(float z_) {
    -
    -    z = z_;
    -
    -  }
    -
    -  
    -
    -  void setXY(float x_, float y_) {
    -
    -    x = x_;
    -
    -    y = y_;
    -
    -  }
    -
    -  
    -
    -  void setXYZ(float x_, float y_, float z_) {
    -
    -    x = x_;
    -
    -    y = y_;
    -
    -    z = z_;
    -
    -  }
    -
    -
    -
    -  void setXYZ(Vector3D v) {
    -
    -    x = v.x;
    -
    -    y = v.y;
    -
    -    z = v.z;
    -
    -  }
    -
    -  
    -
    -  float magnitude() {
    -
    -    return (float) Math.sqrt(x*x + y*y + z*z);
    -
    -  }
    -
    -
    -
    -  Vector3D copy() {
    -
    -    return new Vector3D(x,y,z);
    -
    -  }
    -
    -
    -
    -  Vector3D copy(Vector3D v) {
    -
    -    return new Vector3D(v.x, v.y,v.z);
    -
    -  }
    -
    -  
    -
    -  void add(Vector3D v) {
    -
    -    x += v.x;
    -
    -    y += v.y;
    -
    -    z += v.z;
    -
    -  }
    -
    -
    -
    -  void sub(Vector3D v) {
    -
    -    x -= v.x;
    -
    -    y -= v.y;
    -
    -    z -= v.z;
    -
    -  }
    -
    -
    -
    -  void mult(float n) {
    -
    -    x *= n;
    -
    -    y *= n;
    -
    -    z *= n;
    -
    -  }
    -
    -
    -
    -  void div(float n) {
    -
    -    x /= n;
    -
    -    y /= n;
    -
    -    z /= n;
    -
    -  }
    -
    -
    -
    -  void normalize() {
    -
    -    float m = magnitude();
    -
    -    if (m > 0) {
    -
    -       div(m);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void limit(float max) {
    -
    -    if (magnitude() > max) {
    -
    -      normalize();
    -
    -      mult(max);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  float heading2D() {
    -
    -    float angle = (float) Math.atan2(-y, x);
    -
    -    return -1*angle;
    -
    -  }
    -
    -
    -
    -  Vector3D add(Vector3D v1, Vector3D v2) {
    -
    -    Vector3D v = new Vector3D(v1.x + v2.x,v1.y + v2.y, v1.z + v2.z);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  Vector3D sub(Vector3D v1, Vector3D v2) {
    -
    -    Vector3D v = new Vector3D(v1.x - v2.x,v1.y - v2.y,v1.z - v2.z);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  Vector3D div(Vector3D v1, float n) {
    -
    -    Vector3D v = new Vector3D(v1.x/n,v1.y/n,v1.z/n);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  Vector3D mult(Vector3D v1, float n) {
    -
    -    Vector3D v = new Vector3D(v1.x*n,v1.y*n,v1.z*n);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  float distance (Vector3D v1, Vector3D v2) {
    -
    -    float dx = v1.x - v2.x;
    -
    -    float dy = v1.y - v2.y;
    -
    -    float dz = v1.z - v2.z;
    -
    -    return (float) Math.sqrt(dx*dx + dy*dy + dz*dz);
    -
    -  }
    -
    -
    -
    -}
    - - - - - diff --git a/learning/topic/fluid/index.html b/learning/topic/fluid/index.html deleted file mode 100644 index 39a1760..0000000 --- a/learning/topic/fluid/index.html +++ /dev/null @@ -1,829 +0,0 @@ ---- -layout: default ---- -

    Fluid

    - - - -

    by Glen Murphy. - - - -Click and drag the mouse to move the simulated fluid. - -Adjust the "res" variable below to change resolution. - -Code has not been optimised, and will run fairly slowly. - - - -Completed 5 November 2002

    - - - -

    Original Processing.org Example: Fluid
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int res = 2;
    -
    -int penSize = 30;
    -
    -int lwidth;
    -
    -int lheight;
    -
    -int pnum = 30000;
    -
    -vsquare[][] v;
    -
    -vbuffer[][] vbuf;
    -
    -particle[] p = new particle[pnum];
    -
    -int pcount = 0;
    -
    -int mouseXvel = 0;
    -
    -int mouseYvel = 0;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200,200);
    -
    -  noStroke();
    -
    -  frameRate(30);
    -
    -  lwidth = width/res;
    -
    -  lheight = height/res;
    -
    -  v = new vsquare[lwidth+1][lheight+1];
    -
    -  vbuf = new vbuffer[lwidth+1][lheight+1];
    -
    -  for (int i = 0; i < pnum; i++) {
    -
    -    p[i] = new particle(random(res,width-res),random(res,height-res));
    -
    -  }
    -
    -  for (int i = 0; i <= lwidth; i++) {
    -
    -    for (int u = 0; u <= lheight; u++) {
    -
    -      v[i][u] = new vsquare(i*res,u*res);
    -
    -      vbuf[i][u] = new vbuffer(i*res,u*res);
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(#666666);
    -
    -  
    -
    -  int axvel = mouseX-pmouseX;
    -
    -  int ayvel = mouseY-pmouseY;
    -
    -
    -
    -  mouseXvel = (axvel != mouseXvel) ? axvel : 0;
    -
    -  mouseYvel = (ayvel != mouseYvel) ? ayvel : 0;
    -
    -
    -
    -  for (int i = 0; i < lwidth; i++) {
    -
    -    for (int u = 0; u < lheight; u++) {
    -
    -      vbuf[i][u].updatebuf(i,u);
    -
    -      v[i][u].col = 32;
    -
    -    }
    -
    -  }
    -
    -  for (int i = 0; i < pnum-1; i++) {
    -
    -    p[i].updatepos();
    -
    -  }
    -
    -  for (int i = 0; i < lwidth; i++) {
    -
    -    for (int u = 0; u < lheight; u++) {
    -
    -      v[i][u].addbuffer(i, u);
    -
    -      v[i][u].updatevels(mouseXvel, mouseYvel);
    -
    -      v[i][u].display(i, u);
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -class particle {
    -
    -  float x;
    -
    -  float y;
    -
    -  float xvel;
    -
    -  float yvel;
    -
    -  int pos;
    -
    -  particle(float xIn, float yIn) {
    -
    -    x = xIn;
    -
    -    y = yIn;
    -
    -  }
    -
    -
    -
    -  void updatepos() {
    -
    -    float col1;
    -
    -    if (x > 0 && x < width && y > 0 && y < height) {
    -
    -      int vi = (int)(x/res);
    -
    -      int vu = (int)(y/res);
    -
    -      vsquare o = v[vi][vu];    
    -
    -      
    -
    -      float ax = (x%res)/res;
    -
    -      float ay = (y%res)/res;
    -
    -      
    -
    -      xvel += (1-ax)*v[vi][vu].xvel*0.05;
    -
    -      yvel += (1-ay)*v[vi][vu].yvel*0.05;
    -
    -      
    -
    -      xvel += ax*v[vi+1][vu].xvel*0.05;
    -
    -      yvel += ax*v[vi+1][vu].yvel*0.05;
    -
    -      
    -
    -      xvel += ay*v[vi][vu+1].xvel*0.05;
    -
    -      yvel += ay*v[vi][vu+1].yvel*0.05;
    -
    -
    -
    -      o.col += 4;
    -
    -      
    -
    -      x += xvel;
    -
    -      y += yvel;
    -
    -    }
    -
    -    else {
    -
    -      x = random(0,width);
    -
    -      y = random(0,height);
    -
    -      xvel = 0;
    -
    -      yvel = 0;
    -
    -    }
    -
    -
    -
    -    xvel *= 0.5;
    -
    -    yvel *= 0.5;
    -
    -  }
    -
    -}
    -
    -
    -
    -class vbuffer {
    -
    -  int x;
    -
    -  int y;
    -
    -  float xvel;
    -
    -  float yvel;
    -
    -  float pressurex = 0;
    -
    -  float pressurey = 0;
    -
    -  float pressure = 0;
    -
    -
    -
    -  vbuffer(int xIn,int yIn) {
    -
    -    x = xIn;
    -
    -    y = yIn;
    -
    -    pressurex = 0;
    -
    -    pressurey = 0;
    -
    -    }
    -
    -
    -
    -  void updatebuf(int i, int u) {
    -
    -    if (i>0 && i<lwidth && u>0 && u<lheight) {
    -
    -      pressurex = (v[i-1][u-1].xvel*0.5 + v[i-1][u].xvel + v[i-1][u+1].xvel*0.5 - v[i+1][u-1].xvel*0.5 - v[i+1][u].xvel - v[i+1][u+1].xvel*0.5);
    -
    -      pressurey = (v[i-1][u-1].yvel*0.5 + v[i][u-1].yvel + v[i+1][u-1].yvel*0.5 - v[i-1][u+1].yvel*0.5 - v[i][u+1].yvel - v[i+1][u+1].yvel*0.5);
    -
    -      pressure = (pressurex + pressurey)*0.25;
    -
    -      }
    -
    -    }
    -
    -  }
    -
    -
    -
    -class vsquare {
    -
    -  int x;
    -
    -  int y;
    -
    -  float xvel;
    -
    -  float yvel;
    -
    -  float col;
    -
    -
    -
    -  vsquare(int xIn,int yIn) {
    -
    -    x = xIn;
    -
    -    y = yIn;
    -
    -    }
    -
    -
    -
    -  void addbuffer(int i, int u) {
    -
    -    if (i>0 && i<lwidth && u>0 && u<lheight) {
    -
    -      xvel += (vbuf[i-1][u-1].pressure*0.5
    -
    -              +vbuf[i-1][u].pressure
    -
    -              +vbuf[i-1][u+1].pressure*0.5
    -
    -              -vbuf[i+1][u-1].pressure*0.5
    -
    -              -vbuf[i+1][u].pressure
    -
    -              -vbuf[i+1][u+1].pressure*0.5
    -
    -              )*0.25;
    -
    -      yvel += (vbuf[i-1][u-1].pressure*0.5
    -
    -              +vbuf[i][u-1].pressure
    -
    -              +vbuf[i+1][u-1].pressure*0.5
    -
    -              -vbuf[i-1][u+1].pressure*0.5
    -
    -              -vbuf[i][u+1].pressure
    -
    -              -vbuf[i+1][u+1].pressure*0.5
    -
    -              )*0.25;
    -
    -      }
    -
    -    }
    -
    -
    -
    -  void updatevels(int mvelX, int mvelY) {
    -
    -    if (mousePressed) {
    -
    -      float adj = x - mouseX;
    -
    -      float opp = y - mouseY;
    -
    -      float dist = sqrt(opp*opp + adj*adj);
    -
    -      if (dist < penSize) {
    -
    -        if (dist < 4) dist = penSize;
    -
    -        float mod = penSize/dist;
    -
    -        xvel += mvelX*mod;
    -
    -        yvel += mvelY*mod;
    -
    -        }
    -
    -      }
    -
    -
    -
    -    xvel *= 0.99;
    -
    -    yvel *= 0.99;
    -
    -  }
    -
    -  
    -
    -  void display(int i, int u) {
    -
    -    float tcol = 0;
    -
    -    if (col > 255) col = 255;
    -
    -    if (i>0 && i<lwidth-1 && u>0 && u<lheight-1) {
    -
    -      tcol = (+ v[i][u+1].col 
    -
    -              + v[i+1][u].col 
    -
    -              + v[i+1][u+1].col*0.5
    -
    -              )*0.4;
    -
    -      tcol = (int)(tcol+col*0.5);
    -
    -      }
    -
    -    else {
    -
    -      tcol = (int)col;
    -
    -      }
    -
    -    fill(tcol, tcol, tcol);
    -
    -    rect(x,y,res,res);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/follow1/index.html b/learning/topic/follow1/index.html deleted file mode 100644 index 282593d..0000000 --- a/learning/topic/follow1/index.html +++ /dev/null @@ -1,161 +0,0 @@ ---- -layout: default ---- -

    Follow1

    - - - -

    Based on code from Keith Peters (www.bit-101.com). - - - -A line segment is pushed and pulled by the cursor.

    - - - -

    Original Processing.org Example: Follow1
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float x = 100;
    -
    -float y = 100;
    -
    -float angle1 = 0.0;
    -
    -float segLength = 50;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  smooth(); 
    -
    -  strokeWeight(20.0);
    -
    -  stroke(0, 100);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(226);
    -
    -  
    -
    -  float dx = mouseX - x;
    -
    -  float dy = mouseY - y;
    -
    -  angle1 = atan2(dy, dx);  
    -
    -  x = mouseX - (cos(angle1) * segLength);
    -
    -  y = mouseY - (sin(angle1) * segLength);
    -
    - 
    -
    -  segment(x, y, angle1); 
    -
    -  ellipse(x, y, 20, 20);
    -
    -}
    -
    -
    -
    -void segment(float x, float y, float a) {
    -
    -  pushMatrix();
    -
    -  translate(x, y);
    -
    -  rotate(a);
    -
    -  line(0, 0, segLength, 0);
    -
    -  popMatrix();
    -
    -}
    - - - - - diff --git a/learning/topic/follow2/index.html b/learning/topic/follow2/index.html deleted file mode 100644 index 2f1e9db..0000000 --- a/learning/topic/follow2/index.html +++ /dev/null @@ -1,169 +0,0 @@ ---- -layout: default ---- -

    Follow2

    - - - -

    Based on code from Keith Peters (www.bit-101.com). - - - -A two-segmented arm follows the cursor position. The relative - -angle between the segments is calculated with atan2() and the - -position calculated with sin() and cos().

    - - - -

    Original Processing.org Example: Follow2
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float[] x = new float[2];
    -
    -float[] y = new float[2];
    -
    -float segLength = 50;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  smooth(); 
    -
    -  strokeWeight(20.0);
    -
    -  stroke(0, 100);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(226);
    -
    -  dragSegment(0, mouseX, mouseY);
    -
    -  dragSegment(1, x[0], y[0]);
    -
    -}
    -
    -
    -
    -void dragSegment(int i, float xin, float yin) {
    -
    -  float dx = xin - x[i];
    -
    -  float dy = yin - y[i];
    -
    -  float angle = atan2(dy, dx);  
    -
    -  x[i] = xin - cos(angle) * segLength;
    -
    -  y[i] = yin - sin(angle) * segLength;
    -
    -  segment(x[i], y[i], angle);
    -
    -}
    -
    -
    -
    -void segment(float x, float y, float a) {
    -
    -  pushMatrix();
    -
    -  translate(x, y);
    -
    -  rotate(a);
    -
    -  line(0, 0, segLength, 0);
    -
    -  popMatrix();
    -
    -}
    - - - - - diff --git a/learning/topic/follow3/index.html b/learning/topic/follow3/index.html deleted file mode 100644 index d72d7e9..0000000 --- a/learning/topic/follow3/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -layout: default ---- -

    Follow3

    - - - -

    Based on code from Keith Peters (www.bit-101.com). - - - -A segmented line follows the mouse. The relative angle from - -each segment to the next is calculated with atan2() and the - -position of the next is calculated with sin() and cos().

    - - - -

    Original Processing.org Example: Follow3
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float[] x = new float[20];
    -
    -float[] y = new float[20];
    -
    -float segLength = 9;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  smooth(); 
    -
    -  strokeWeight(5);
    -
    -  stroke(0, 100);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(226);
    -
    -  dragSegment(0, mouseX, mouseY);
    -
    -  for(int i=0; i<x.length-1; i++) {
    -
    -    dragSegment(i+1, x[i], y[i]);
    -
    -  }
    -
    -}
    -
    -
    -
    -void dragSegment(int i, float xin, float yin) {
    -
    -  float dx = xin - x[i];
    -
    -  float dy = yin - y[i];
    -
    -  float angle = atan2(dy, dx);  
    -
    -  x[i] = xin - cos(angle) * segLength;
    -
    -  y[i] = yin - sin(angle) * segLength;
    -
    -  segment(x[i], y[i], angle);
    -
    -}
    -
    -
    -
    -void segment(float x, float y, float a) {
    -
    -  pushMatrix();
    -
    -  translate(x, y);
    -
    -  rotate(a);
    -
    -  line(0, 0, segLength, 0);
    -
    -  popMatrix();
    -
    -}
    - - - - - diff --git a/learning/topic/handles/index.html b/learning/topic/handles/index.html deleted file mode 100644 index a166b69..0000000 --- a/learning/topic/handles/index.html +++ /dev/null @@ -1,561 +0,0 @@ ---- -layout: default ---- -

    Handles

    - - - -

    Click and drag the white boxes to change their position.

    - - - -

    Original Processing.org Example: Handles
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -Handle[] handles;
    -
    -int num;
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  num = height/15;
    -
    -  handles = new Handle[num];
    -
    -  int hsize = 10;
    -
    -  for(int i=0; i<num; i++) {
    -
    -    handles[i] = new Handle(width/2, 10+i*15, 50-hsize/2, 10, handles);
    -
    -  }
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  background(153);
    -
    -  
    -
    -  for(int i=0; i<num; i++) {
    -
    -    handles[i].update();
    -
    -    handles[i].display();
    -
    -  }
    -
    -  
    -
    -  fill(0);
    -
    -  rect(0, 0, width/2, height);
    -
    -}
    -
    -
    -
    -void mouseReleased() 
    -
    -{
    -
    -  for(int i=0; i<num; i++) {
    -
    -    handles[i].release();
    -
    -  }
    -
    -}
    -
    -
    -
    -class Handle
    -
    -{
    -
    -  int x, y;
    -
    -  int boxx, boxy;
    -
    -  int length;
    -
    -  int size;
    -
    -  boolean over;
    -
    -  boolean press;
    -
    -  boolean locked = false;
    -
    -  boolean otherslocked = false;
    -
    -  Handle[] others;
    -
    -  
    -
    -  Handle(int ix, int iy, int il, int is, Handle[] o)
    -
    -  {
    -
    -    x = ix;
    -
    -    y = iy;
    -
    -    length = il;
    -
    -    size = is;
    -
    -    boxx = x+length - size/2;
    -
    -    boxy = y - size/2;
    -
    -    others = o;
    -
    -  }
    -
    -  
    -
    -  void update() 
    -
    -  {
    -
    -    boxx = x+length;
    -
    -    boxy = y - size/2;
    -
    -    
    -
    -    for(int i=0; i<others.length; i++) {
    -
    -      if(others[i].locked == true) {
    -
    -        otherslocked = true;
    -
    -        break;
    -
    -      } else {
    -
    -        otherslocked = false;
    -
    -      }  
    -
    -    }
    -
    -    
    -
    -    if(otherslocked == false) {
    -
    -      over();
    -
    -      press();
    -
    -    }
    -
    -    
    -
    -    if(press) {
    -
    -      length = lock(mouseX-width/2-size/2, 0, width/2-size-1);
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  void over()
    -
    -  {
    -
    -    if(overRect(boxx, boxy, size, size)) {
    -
    -      over = true;
    -
    -    } else {
    -
    -      over = false;
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  void press()
    -
    -  {
    -
    -    if(over && mousePressed || locked) {
    -
    -      press = true;
    -
    -      locked = true;
    -
    -    } else {
    -
    -      press = false;
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  void release()
    -
    -  {
    -
    -    locked = false;
    -
    -  }
    -
    -  
    -
    -  void display() 
    -
    -  {
    -
    -    line(x, y, x+length, y);
    -
    -    fill(255);
    -
    -    stroke(0);
    -
    -    rect(boxx, boxy, size, size);
    -
    -    if(over || press) {
    -
    -      line(boxx, boxy, boxx+size, boxy+size);
    -
    -      line(boxx, boxy+size, boxx+size, boxy);
    -
    -    }
    -
    -
    -
    -  }
    -
    -}
    -
    -
    -
    -boolean overRect(int x, int y, int width, int height) 
    -
    -{
    -
    -  if (mouseX >= x && mouseX <= x+width && 
    -
    -      mouseY >= y && mouseY <= y+height) {
    -
    -    return true;
    -
    -  } else {
    -
    -    return false;
    -
    -  }
    -
    -}
    -
    -
    -
    -int lock(int val, int minv, int maxv) 
    -
    -{ 
    -
    -  return  min(max(val, minv), maxv); 
    -
    -}
    - - - - - diff --git a/learning/topic/histogram/data/cdi01_g.jpg b/learning/topic/histogram/data/cdi01_g.jpg deleted file mode 100644 index 78ce58f4ce56373254e7880b7022362d19b163d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26047 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

    - - - -

    Calculates the histogram of an image. - -A histogram is the frequency distribution - -of the gray levels with the number of pure black values - -displayed on the left and number of pure white values on the right.

    - - - -

    Original Processing.org Example: Histogram
    - -

    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/cdi01_g.jpg"; */
    -
    -
    -
    -size(200, 200);
    -
    -colorMode(RGB, width);
    -
    -
    -
    -int[] hist = new int[width];
    -
    -
    -
    -// Load an image from the data directory
    -
    -// Load a different image by modifying the comments
    -
    -PImage a;
    -
    -a = loadImage("data/cdi01_g.jpg");
    -
    -image(a, 0, 0);
    -
    -
    -
    -// Calculate the histogram
    -
    -for (int i=0; i<width; i++) {
    -
    -  for (int j=0; j<height; j++) {
    -
    -    hist[int(red(get(i, j)))]++; 
    -
    -  }
    -
    -} 
    -
    -
    -
    -// Find the largest value in the histogram
    -
    -float maxval = 0;
    -
    -for (int i=0; i<width; i++) {
    -
    -  if(hist[i] > maxval) {
    -
    -    maxval = hist[i];
    -
    -  }  
    -
    -}
    -
    -
    -
    -// Normalize the histogram to values between 0 and "height"
    -
    -for (int i=0; i<width; i++) {
    -
    -  hist[i] = int(hist[i]/maxval * height);
    -
    -}
    -
    -
    -
    -// Draw half of the histogram (skip every second value)
    -
    -stroke(width);
    -
    -for (int i=0; i<width; i+=2) {
    -
    -  line(i, height, i, height-hist[i]);
    -
    -}
    - - - - - diff --git a/learning/topic/imagebutton/data/base.gif b/learning/topic/imagebutton/data/base.gif deleted file mode 100644 index 8d7603a01811146e295889dfbbf6f2baa36ec215..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 zcmV+h1Nr<%Nk%w1VQ2tY0HOo{)X>QP|Nnr1fB*mh|Ns900000000000A^8LW000C4 zEC2ui0B8VM000C3IJ(^aFv>}*y*TU5yZ>M)j-(ZwXsWJk>%MR-tI%xUcz)M<@BcC$ za7g?K1AwG*$!t2G(5Q486<7sFs&>omQm@!Y%1bVrtJmy#&Gv%TZ7L+LeTz|a`6EBI zJH~ubbAeEP4SVcJN|y3fKW z07?QdgIy9+b!!!^J;a=wf#OBxlB2#j&Pd;1M;0e?hj~*|A59=Is)+!)6 zi~cYkDd?pC9kVn2LTbdtvC+hF6%}4onUUqjh=opa+ZSo1OPl&iGV#c2jmVooXT~#F z4O~j03mpbkI)LameMgx}jmFd|t%OKdW^K9kXHzLWX->gVL~B*BGTl8PTh^;pYg^bB zaf`Mn)VLSQay^U2EzE?9zUOqS)+d)DrzteC*lvX`N3->8=q{HySEY#o%;Ap zF0F~#0)ojLpx-Rr+Ec2AxAYUtSY(%+u` zxj6aDgY74teb&{IUt2JVHeOWVC5T>S@%1L)dkgw>pb-xK2BCrM0WqNx@U;=$4jFb4 zB7<|4s33vlfplRIDn1BT93$HBA%7d9=);Wz_Sc<@9lpRLg)AmgqmVIbI3piNx-cY& z6$a8IUuK+0$CT5oVI_?(Qd!29B6gYO8DKJErg1*rcjlU#9meLHeWh6-oOJeh1Q>Yc zspp=2_UY%Jfa-Z?poA7`=%IcNis+(@HoB*xjz%h}p(Rvm>7|%vs_CYjcIxS;4kQ2o EJ8f`&hyVZp diff --git a/learning/topic/imagebutton/data/down.gif b/learning/topic/imagebutton/data/down.gif deleted file mode 100644 index 7e4f4415532c840ee85251bc23dee5e04a76153c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656 zcmV;B0&o3CNk%w1VQ2tY0FeU#|NsAhfPer10RR90A^8LW00093EC2ui0B8VM00092 zl#i*)?GK}zwAzca-n{z{O2J5$=82~2%C@e_yz)%fb8P4O?&ACp-1!24qVb4KDwoWr z^9cnEqtvSP`kZ37+%8k=4U4bfvH83#qt|FP`yF<}=U6$t$haTv_q-mzQ1X}L_s2(9 zsCP)Vuy>I5aJFcbhydvz8Ay_;;An8!z?mRuR{5v|A&NlSWr^DO`WY(_r#Vt9O9-o* zi{#pBOXT(IyIb7rNjn^jtIV4K8ojK*%0--fZIlhzyZyyH?R*S9E6pvQ1rCg?ZJcZ_ zbs9C9&VKHVFCTCJO}$yF?_IfB#JpiUP^}p}fzJvCB#7|en0)*wk~>##lteNA78kbb z^bs9I0|~=<#5nL-##I{?rW|*2pU8$0Zvm|M5T(kOpjg_Rm{VrVj!x)}40Us+(4y)n zO%N6HAjy_gC_v?TwB)>}Nu!4JDQqiFkcNUv6`-}B(nNjCeytf6ibaEL=-z`{Wv<&b zc4dOiyLaiFzGu^V)d`32+o?b023EXIX-~XW9|v|RR%2tp{00ej>~C}B&VwNPrOb$Q zS=HnI*13!b_Fcwtx0t?~*>z;k3_)wI{hIX~(?*-z?mGH6W<|1Fqqf$3IcMc2OGjUf zmTGFrb+6CPE_!!t;aRmqCog`xZjRoaqIXUkcjETN-E-gGY`uKx!Kw3MZGV_=`XL9@ zdy~aC-hIC1_uOy*hQuI(gFT3tZB037AXe%%*jNq(h;2~#nT4SNC!&HG qMF<{?yv_KXVKjPH-;Eghr{j$w{0L-_LJmn}kwzYgWReOL0029rWK6RF diff --git a/learning/topic/imagebutton/data/roll.gif b/learning/topic/imagebutton/data/roll.gif deleted file mode 100644 index 7e2a1bc2e3aa28fb61418115bdd01dd94ac73b70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 zcmV+h1Nr<%Nk%w1VQ2tY0HOo{wz8`K|Nnr1fB*mh|Ns900000000000A^8LW000C4 zEC2ui0B8VM000C3IJ(^aFv>}*y*TU5yZ>M)j-(ZwXsWJk>%MR-tI%xUcz)M<@BcC$ za7g?K1AwG*$!t2G(5Q486<7sFs&>omQm@!Y%1bVrtJmy#&Gv%TZ7L+LeTz|a`6EBI zJH~ubbAeEP4SVcJN|y3fKW z07?QdgIy9+b!!!^J;a=wf#OBxlB2#j&Pd;1M;0e?hj~*|A59=Is)+!)6 zi~cYkDd?pC9kVn2LTbdtvC+hF6%}4onUUqjh=opa+ZSo1OPl&iGV#c2jmVooXT~#F z4O~j03mpbkI)LameMgx}jmFd|t%OKdW^K9kXHzLWX->gVL~B*BGTl8PTh^;pYg^bB zaf`Mn)VLSQay^U2EzE?9zUOqS)+d)DrzteC*lvX`N3->8=q{HySEY#o%;Ap zF0F~#0)ojLpx-Rr+Ec2AxAYUtSY(%+u` zxj6aDgY74teb&{IUt2JVHeOWVC5T>S@%1L)dkgw>pb-xK2BCrM0WqNx@U;=$4jFb4 zB7<|4s33vlfplRIDn1BT93$HBA%7d9=);Wz_Sc<@9lpRLg)AmgqmVIbI3piNx-cY& z6$a8IUuK+0$CT5oVI_?(Qd!29B6gYO8DKJErg1*rcjlU#9meLHeWh6-oOJeh1Q>Yc zspp=2_UY%Jfa-Z?poA7`=%IcNis+(@HoB*xjz%h}p(Rvm>7|%vs_CYjcIxS;4kQ2o EJ7O_@E&u=k diff --git a/learning/topic/imagebutton/index.html b/learning/topic/imagebutton/index.html deleted file mode 100644 index 65d0886..0000000 --- a/learning/topic/imagebutton/index.html +++ /dev/null @@ -1,419 +0,0 @@ ---- -layout: default ---- -

    ImageButton

    - - - -

    Loading images and using them to create a button.

    - - - -

    Original Processing.org Example: ImageButton
    - -

    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/base.gif, data/roll.gif, data/down.gif"; */
    -
    -ImageButtons button;
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  background(102, 102, 102);
    -
    -  
    -
    -  // Define and create image button
    -
    -  PImage b = loadImage("data/base.gif");
    -
    -  PImage r = loadImage("data/roll.gif");
    -
    -  PImage d = loadImage("data/down.gif");
    -
    -  int x = width/2 - b.width/2;
    -
    -  int y = height/2 - b.height/2; 
    -
    -  int w = b.width;
    -
    -  int h = b.height;
    -
    -  button = new ImageButtons(x, y, w, h, b, r, d);
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  button.update();
    -
    -  button.display();
    -
    -}
    -
    -
    -
    -class Button
    -
    -{
    -
    -  int x, y;
    -
    -  int w, h;
    -
    -  color basecolor, highlightcolor;
    -
    -  color currentcolor;
    -
    -  boolean over = false;
    -
    -  boolean pressed = false;   
    -
    -  
    -
    -  void pressed() {
    -
    -    if(over && mousePressed) {
    -
    -      pressed = true;
    -
    -    } else {
    -
    -      pressed = false;
    -
    -    }    
    -
    -  }
    -
    -  
    -
    -  boolean overRect(int x, int y, int width, int height) {
    -
    -  if (mouseX >= x && mouseX <= x+width && 
    -
    -      mouseY >= y && mouseY <= y+height) {
    -
    -    return true;
    -
    -  } else {
    -
    -    return false;
    -
    -  }
    -
    -}
    -
    -}
    -
    -
    -
    -class ImageButtons extends Button 
    -
    -{
    -
    -  PImage base;
    -
    -  PImage roll;
    -
    -  PImage down;
    -
    -  PImage currentimage;
    -
    -
    -
    -  ImageButtons(int ix, int iy, int iw, int ih, PImage ibase, PImage iroll, PImage idown) 
    -
    -  {
    -
    -    x = ix;
    -
    -    y = iy;
    -
    -    w = iw;
    -
    -    h = ih;
    -
    -    base = ibase;
    -
    -    roll = iroll;
    -
    -    down = idown;
    -
    -    currentimage = base;
    -
    -  }
    -
    -  
    -
    -  void update() 
    -
    -  {
    -
    -    over();
    -
    -    pressed();
    -
    -    if(pressed) {
    -
    -      currentimage = down;
    -
    -    } else if (over){
    -
    -      currentimage = roll;
    -
    -    } else {
    -
    -      currentimage = base;
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  void over() 
    -
    -  {
    -
    -    if( overRect(x, y, w, h) ) {
    -
    -      over = true;
    -
    -    } else {
    -
    -      over = false;
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  void display() 
    -
    -  {
    -
    -    image(currentimage, x, y);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/index.html b/learning/topic/index.html deleted file mode 100644 index 833fda5..0000000 --- a/learning/topic/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: default ---- -

    Topic Demos

    - -

    Topical demonstrations of how Processing works, from the Processing.org -web site. All of the following demos were written by Casey Reas -and Ben Fry unless otherwise stated.

    - -

    You can also view Topic Demos on Processing.org

    - -

    Animation

    - - -

    Cellular Automata

    - - -

    Drawing

    - - -

    GUI

    - - -

    Image Processing

    - - -

    Interaction

    - - -

    Motion

    - - -

    Simulate

    - - -

    Fractals and L-Systems

    - diff --git a/learning/topic/koch/index.html b/learning/topic/koch/index.html deleted file mode 100644 index 69be7d4..0000000 --- a/learning/topic/koch/index.html +++ /dev/null @@ -1,699 +0,0 @@ ---- -layout: default ---- -

    Koch

    - - - -

    by Daniel Shiffman. - - - -Renders a simple fractal, the Koch snowflake. - -Each recursive level drawn in sequence.

    - - - -

    Original Processing.org Example: Koch
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -KochFractal k;
    -
    -
    -
    -void setup() {
    -
    -  size(200,200);
    -
    -  background(0);
    -
    -  frameRate(1);  // Animate slowly
    -
    -  k = new KochFractal();
    -
    -  smooth();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(0);
    -
    -  // Draws the snowflake!
    -
    -  k.render();
    -
    -  // Iterate
    -
    -  k.nextLevel();
    -
    -  // Let's not do it more than 5 times. . .
    -
    -  if (k.getCount() > 5) {
    -
    -    k.restart();
    -
    -  }
    -
    -
    -
    -}
    -
    -
    -
    -
    -
    -// A class to manage the list of line segments in the snowflake pattern
    -
    -
    -
    -class KochFractal {
    -
    -  Point start;       // A point for the start
    -
    -  Point end;         // A point for the end
    -
    -  ArrayList lines;   // A list to keep track of all the lines
    -
    -  int count;
    -
    -  
    -
    -  public KochFractal()
    -
    -  {
    -
    -    start = new Point(0,height/2 + height/4);
    -
    -    end = new Point(width,height/2  + height/4);
    -
    -    lines = new ArrayList();
    -
    -    restart();
    -
    -  }
    -
    -
    -
    -  void nextLevel()
    -
    -  {  
    -
    -    // For every line that is in the arraylist
    -
    -    // create 4 more lines in a new arraylist
    -
    -    lines = iterate(lines);
    -
    -    count++;
    -
    -  }
    -
    -
    -
    -  void restart()
    -
    -  { 
    -
    -    count = 0;      // Reset count
    -
    -    lines.clear();  // Empty the array list
    -
    -    lines.add(new KochLine(start,end));  // Add the initial line (from one end point to the other)
    -
    -  }
    -
    -  
    -
    -  int getCount() {
    -
    -    return count;
    -
    -  }
    -
    -  
    -
    -  // This is easy, just draw all the lines
    -
    -  void render()
    -
    -  {
    -
    -    for(int i = 0; i < lines.size(); i++) {
    -
    -      KochLine l = (KochLine)lines.get(i);
    -
    -      l.render();
    -
    -    }
    -
    -  }
    -
    -
    -
    -  // This is where the **MAGIC** happens
    -
    -  // Step 1: Create an empty arraylist
    -
    -  // Step 2: For every line currently in the arraylist
    -
    -  //   - calculate 4 line segments based on Koch algorithm
    -
    -  //   - add all 4 line segments into the new arraylist
    -
    -  // Step 3: Return the new arraylist and it becomes the list of line segments for the structure
    -
    -  
    -
    -  // As we do this over and over again, each line gets broken into 4 lines, which gets broken into 4 lines, and so on. . . 
    -
    -  ArrayList iterate(ArrayList before)
    -
    -  {
    -
    -    ArrayList now = new ArrayList();    //Create emtpy list
    -
    -    for(int i = 0; i < before.size(); i++)
    -
    -    {
    -
    -      KochLine l = (KochLine)lines.get(i);   // A line segment inside the list
    -
    -      // Calculate 5 koch points (done for us by the line object)
    -
    -      Point a = l.start();                 
    -
    -      Point b = l.kochleft();
    -
    -      Point c = l.kochmiddle();
    -
    -      Point d = l.kochright();
    -
    -      Point e = l.end();
    -
    -      // Make line segments between all the points and add them
    -
    -      now.add(new KochLine(a,b));
    -
    -      now.add(new KochLine(b,c));
    -
    -      now.add(new KochLine(c,d));
    -
    -      now.add(new KochLine(d,e));
    -
    -    }
    -
    -    return now;
    -
    -  }
    -
    -
    -
    -}
    -
    -
    -
    -
    -
    -// A class to describe one line segment in the fractal
    -
    -// Includes methods to calculate midpoints along the line according to the Koch algorithm
    -
    -
    -
    -class KochLine {
    -
    -  
    -
    -  // Two points,
    -
    -  // a is the "left" point and 
    -
    -  // b is the "right point
    -
    -  Point a,b;
    -
    -  
    -
    -  KochLine(Point a_, Point b_) {
    -
    -     a = a_.copy();
    -
    -     b = b_.copy();
    -
    -  }
    -
    -  
    -
    -  void render() {
    -
    -    stroke(255);
    -
    -    line(a.x,a.y,b.x,b.y);
    -
    -  }
    -
    -  
    -
    -  Point start() {
    -
    -    return a.copy();
    -
    -  }
    -
    -  
    -
    -  Point end() {
    -
    -    return b.copy();
    -
    -  }
    -
    -      
    -
    -  // This is easy, just 1/3 of the way
    -
    -  Point kochleft()
    -
    -  {
    -
    -    float x = a.x + (b.x - a.x) / 3f;
    -
    -    float y = a.y + (b.y - a.y) / 3f;
    -
    -    return new Point(x,y);
    -
    -  }    
    -
    -  
    -
    -  // More complicated, have to use a little trig to figure out where this point is!
    -
    -  Point kochmiddle()
    -
    -  {
    -
    -    float x = a.x + 0.5f * (b.x - a.x) + (sin(radians(60))*(b.y-a.y)) / 3;
    -
    -    float y = a.y + 0.5f * (b.y - a.y) - (sin(radians(60))*(b.x-a.x)) / 3;
    -
    -    return new Point(x,y);
    -
    -  }    
    -
    -
    -
    -  // Easy, just 2/3 of the way
    -
    -  Point kochright()
    -
    -  {
    -
    -    float x = a.x + 2*(b.x - a.x) / 3f;
    -
    -    float y = a.y + 2*(b.y - a.y) / 3f;
    -
    -    return new Point(x,y);
    -
    -  }    
    -
    -
    -
    -}
    -
    -
    -
    -class Point {
    -
    -  float x,y;
    -
    -  
    -
    -  Point(float x_, float y_) {
    -
    -    x = x_;
    -
    -    y = y_;
    -
    -  }
    -
    -  
    -
    -  Point copy() {
    -
    -    return new Point(x,y);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/linear/index.html b/learning/topic/linear/index.html deleted file mode 100644 index fec5332..0000000 --- a/learning/topic/linear/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: default ---- -

    Linear

    - - - -

    Changing a variable to create a moving line. - -When the line moves off the edge of the window, - -the variable is set to 0, which places the line - -back at the bottom of the screen.

    - - - -

    Original Processing.org Example: Linear
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float a = 100;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  stroke(255);
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(51);
    -
    -  a = a - 1;
    -
    -  if (a < 0) { 
    -
    -    a = height; 
    -
    -  }
    -
    -  line(0, a, width, a);  
    -
    -}
    - - - - - diff --git a/learning/topic/linearimage/data/florence03.jpg b/learning/topic/linearimage/data/florence03.jpg deleted file mode 100644 index ec33b266a52f5e0252a5439518e6f26e7b4e7c33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58018 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 W4o$qNAr<&FajkgCKo`?JfB)I|Uz|1o diff --git a/learning/topic/linearimage/index.html b/learning/topic/linearimage/index.html deleted file mode 100644 index 9bb28fb..0000000 --- a/learning/topic/linearimage/index.html +++ /dev/null @@ -1,231 +0,0 @@ ---- -layout: default ---- -

    LinearImage

    - - - -

    Click and drag mouse up and down to control the signal. - -Press and hold any key to watch the scanning.

    - - - -

    Original Processing.org Example: LinearImage
    - -

    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/florence03.jpg"; */
    -
    -
    -
    -PImage a;
    -
    -boolean onetime = true;
    -
    -int[] aPixels = new int[200*200];
    -
    -int direction = 1;
    -
    -
    -
    -float signal;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  stroke(255);
    -
    -  a = loadImage("data/florence03.jpg");
    -
    -  for(int i=0; i<width*height; i++) {
    -
    -    aPixels[i] = a.pixels[i];
    -
    -  }
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  if (signal > width-1 || signal < 0) { 
    -
    -    direction = direction * -1; 
    -
    -  }
    -
    -
    -
    -  if(mousePressed) {
    -
    -    signal = abs(mouseY%height);
    -
    -  } else {
    -
    -    signal += (0.3*direction);  
    -
    -  }
    -
    -  
    -
    -  
    -
    -  if(keyPressed) {
    -
    -    loadPixels();
    -
    -    for (int i=0; i<width*height; i++) { 
    -
    -      pixels[i] = aPixels[i];  
    -
    -    }
    -
    -    updatePixels();
    -
    -    line(0, signal, width, signal);
    -
    -  } else {
    -
    -    loadPixels();
    -
    -    for (int i=0; i<width*height; i++) { 
    -
    -      pixels[i] = aPixels[int((width*int(signal))+(i%width))];
    -
    -    }
    -
    -    updatePixels();
    -
    -  }
    -
    -  
    -
    -}
    - - - - - diff --git a/learning/topic/loadfile1/data/positions.txt b/learning/topic/loadfile1/data/positions.txt deleted file mode 100644 index 3b8ff2e..0000000 --- a/learning/topic/loadfile1/data/positions.txt +++ /dev/null @@ -1,206 +0,0 @@ -70 35 -69 35 -68 39 -67 42 -66 47 -64 51 -64 54 -63 57 -60 60 -58 64 -51 69 -48 72 -44 73 -39 75 -35 75 -30 75 -25 75 -21 75 -17 73 -13 69 -12 66 -11 61 -11 57 -10 49 -10 45 -10 38 -12 32 -13 29 -16 23 -20 19 -24 16 -27 15 -31 13 -33 13 -37 13 -40 15 -42 16 -45 19 -46 21 -47 24 -48 26 -48 29 -48 33 -47 39 -43 45 -42 47 -38 50 -35 51 -32 51 -30 51 -27 50 -27 50 -26 46 -26 41 -29 36 -30 34 -31 33 -31 33 -32 33 -33 33 -34 33 -34 33 -35 33 -37 33 -39 33 -42 32 -44 31 -46 29 -48 29 -49 27 -52 24 -53 23 -57 19 -61 16 -63 14 -67 13 -69 12 -69 12 -77 11 -77 11 -80 11 -86 16 -90 21 -93 25 -95 29 -95 32 -95 33 -95 37 -94 41 -93 44 -92 46 -91 49 -89 51 -87 55 -85 59 -82 62 -80 64 -79 67 -77 69 -74 71 -68 72 -65 73 -63 73 -62 73 -60 72 -58 69 -57 67 -57 66 -56 60 -56 56 -56 54 -58 49 -60 47 -62 47 -63 47 -67 48 -70 52 -73 55 -74 57 -74 58 -74 60 -74 62 -73 65 -70 68 -67 69 -65 70 -63 70 -62 70 -60 68 -57 65 -55 64 -50 62 -46 61 -40 60 -38 60 -36 60 -32 61 -30 62 -27 64 -26 68 -25 71 -25 77 -25 81 -26 84 -28 86 -31 87 -33 88 -36 88 -39 86 -41 85 -43 83 -44 81 -45 76 -45 74 -45 71 -40 67 -37 65 -34 63 -33 61 -33 61 -32 60 -33 49 -37 45 -41 41 -45 39 -47 38 -51 37 -54 37 -58 38 -61 41 -63 44 -65 46 -66 49 -66 51 -67 55 -67 58 -67 60 -66 62 -64 65 -63 66 -61 67 -60 68 -58 68 -55 69 -54 69 -51 69 -48 69 -46 68 -45 66 -44 65 -44 63 -44 61 -44 59 -44 56 -44 55 -45 53 -47 52 -49 50 -50 48 -51 47 -52 46 -54 46 -55 45 -55 45 -56 44 -57 44 diff --git a/learning/topic/loadfile1/index.html b/learning/topic/loadfile1/index.html deleted file mode 100644 index 4699c8e..0000000 --- a/learning/topic/loadfile1/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -layout: default ---- -

    LoadFile1

    - - - -

    Loads a text file that contains two numbers separated by a tab ('\t'). - -A new pair of numbers is loaded each frame and used to draw a point on the screen.

    - - - -

    Original Processing.org Example: LoadFile1
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -String[] lines;
    -
    -int index = 0;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  background(0);
    -
    -  stroke(255);
    -
    -  frameRate(12);
    -
    -  lines = loadStrings("positions.txt");
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  if (index < lines.length) {
    -
    -    String[] pieces = split(lines[index], '\t');
    -
    -    if (pieces.length == 2) {
    -
    -      int x = int(pieces[0]) * 2;
    -
    -      int y = int(pieces[1]) * 2;
    -
    -      point(x, y);
    -
    -    }
    -
    -    // Go to the next line for the next run through draw()
    -
    -    index = index + 1;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/loadfile2/data/cars2.tsv b/learning/topic/loadfile2/data/cars2.tsv deleted file mode 100644 index 4beddaf..0000000 --- a/learning/topic/loadfile2/data/cars2.tsv +++ /dev/null @@ -1 +0,0 @@ -chevrolet chevelle malibu 18 8 307 130 3504 12 70 1 buick skylark 320 15 8 350 165 3693 11.5 70 1 plymouth satellite 18 8 318 150 3436 11 70 1 amc rebel sst 16 8 304 150 3433 12 70 1 ford torino 17 8 302 140 3449 10.5 70 1 ford galaxie 500 15 8 429 198 4341 10 70 1 chevrolet impala 14 8 454 220 4354 9 70 1 plymouth fury iii 14 8 440 215 4312 8.5 70 1 pontiac catalina 14 8 455 225 4425 10 70 1 amc ambassador dpl 15 8 390 190 3850 8.5 70 1 citroen ds-21 pallas NA 4 133 115 3090 17.5 70 2 chevrolet chevelle concours (sw) NA 8 350 165 4142 11.5 70 1 ford torino (sw) NA 8 351 153 4034 11 70 1 plymouth satellite (sw) NA 8 383 175 4166 10.5 70 1 amc rebel sst (sw) NA 8 360 175 3850 11 70 1 dodge challenger se 15 8 383 170 3563 10 70 1 plymouth 'cuda 340 14 8 340 160 3609 8 70 1 ford mustang boss 302 NA 8 302 140 3353 8 70 1 chevrolet monte carlo 15 8 400 150 3761 9.5 70 1 buick estate wagon (sw) 14 8 455 225 3086 10 70 1 toyota corona mark ii 24 4 113 95 2372 15 70 3 plymouth duster 22 6 198 95 2833 15.5 70 1 amc hornet 18 6 199 97 2774 15.5 70 1 ford maverick 21 6 200 85 2587 16 70 1 datsun pl510 27 4 97 88 2130 14.5 70 3 volkswagen 1131 deluxe sedan 26 4 97 46 1835 20.5 70 2 peugeot 504 25 4 110 87 2672 17.5 70 2 audi 100 ls 24 4 107 90 2430 14.5 70 2 saab 99e 25 4 104 95 2375 17.5 70 2 bmw 2002 26 4 121 113 2234 12.5 70 2 amc gremlin 21 6 199 90 2648 15 70 1 ford f250 10 8 360 215 4615 14 70 1 chevy c20 10 8 307 200 4376 15 70 1 dodge d200 11 8 318 210 4382 13.5 70 1 hi 1200d 9 8 304 193 4732 18.5 70 1 datsun pl510 27 4 97 88 2130 14.5 71 3 chevrolet vega 2300 28 4 140 90 2264 15.5 71 1 toyota corona 25 4 113 95 2228 14 71 3 ford pinto 25 4 98 NA 2046 19 71 1 volkswagen super beetle 117 NA 4 97 48 1978 20 71 2 amc gremlin 19 6 232 100 2634 13 71 1 plymouth satellite custom 16 6 225 105 3439 15.5 71 1 chevrolet chevelle malibu 17 6 250 100 3329 15.5 71 1 ford torino 500 19 6 250 88 3302 15.5 71 1 amc matador 18 6 232 100 3288 15.5 71 1 chevrolet impala 14 8 350 165 4209 12 71 1 pontiac catalina brougham 14 8 400 175 4464 11.5 71 1 ford galaxie 500 14 8 351 153 4154 13.5 71 1 plymouth fury iii 14 8 318 150 4096 13 71 1 dodge monaco (sw) 12 8 383 180 4955 11.5 71 1 ford country squire (sw) 13 8 400 170 4746 12 71 1 pontiac safari (sw) 13 8 400 175 5140 12 71 1 amc hornet sportabout (sw) 18 6 258 110 2962 13.5 71 1 chevrolet vega (sw) 22 4 140 72 2408 19 71 1 pontiac firebird 19 6 250 100 3282 15 71 1 ford mustang 18 6 250 88 3139 14.5 71 1 mercury capri 2000 23 4 122 86 2220 14 71 1 opel 1900 28 4 116 90 2123 14 71 2 peugeot 304 30 4 79 70 2074 19.5 71 2 fiat 124b 30 4 88 76 2065 14.5 71 2 toyota corolla 1200 31 4 71 65 1773 19 71 3 datsun 1200 35 4 72 69 1613 18 71 3 volkswagen model 111 27 4 97 60 1834 19 71 2 plymouth cricket 26 4 91 70 1955 20.5 71 1 toyota corona hardtop 24 4 113 95 2278 15.5 72 3 dodge colt hardtop 25 4 97.5 80 2126 17 72 1 volkswagen type 3 23 4 97 54 2254 23.5 72 2 chevrolet vega 20 4 140 90 2408 19.5 72 1 ford pinto runabout 21 4 122 86 2226 16.5 72 1 chevrolet impala 13 8 350 165 4274 12 72 1 pontiac catalina 14 8 400 175 4385 12 72 1 plymouth fury iii 15 8 318 150 4135 13.5 72 1 ford galaxie 500 14 8 351 153 4129 13 72 1 amc ambassador sst 17 8 304 150 3672 11.5 72 1 mercury marquis 11 8 429 208 4633 11 72 1 buick lesabre custom 13 8 350 155 4502 13.5 72 1 oldsmobile delta 88 royale 12 8 350 160 4456 13.5 72 1 chrysler newport royal 13 8 400 190 4422 12.5 72 1 mazda rx2 coupe 19 3 70 97 2330 13.5 72 3 amc matador (sw) 15 8 304 150 3892 12.5 72 1 chevrolet chevelle concours (sw) 13 8 307 130 4098 14 72 1 ford gran torino (sw) 13 8 302 140 4294 16 72 1 plymouth satellite custom (sw) 14 8 318 150 4077 14 72 1 volvo 145e (sw) 18 4 121 112 2933 14.5 72 2 volkswagen 411 (sw) 22 4 121 76 2511 18 72 2 peugeot 504 (sw) 21 4 120 87 2979 19.5 72 2 renault 12 (sw) 26 4 96 69 2189 18 72 2 ford pinto (sw) 22 4 122 86 2395 16 72 1 datsun 510 (sw) 28 4 97 92 2288 17 72 3 toyouta corona mark ii (sw) 23 4 120 97 2506 14.5 72 3 dodge colt (sw) 28 4 98 80 2164 15 72 1 toyota corolla 1600 (sw) 27 4 97 88 2100 16.5 72 3 buick century 350 13 8 350 175 4100 13 73 1 amc matador 14 8 304 150 3672 11.5 73 1 chevrolet malibu 13 8 350 145 3988 13 73 1 ford gran torino 14 8 302 137 4042 14.5 73 1 dodge coronet custom 15 8 318 150 3777 12.5 73 1 mercury marquis brougham 12 8 429 198 4952 11.5 73 1 chevrolet caprice classic 13 8 400 150 4464 12 73 1 ford ltd 13 8 351 158 4363 13 73 1 plymouth fury gran sedan 14 8 318 150 4237 14.5 73 1 chrysler new yorker brougham 13 8 440 215 4735 11 73 1 buick electra 225 custom 12 8 455 225 4951 11 73 1 amc ambassador brougham 13 8 360 175 3821 11 73 1 plymouth valiant 18 6 225 105 3121 16.5 73 1 chevrolet nova custom 16 6 250 100 3278 18 73 1 amc hornet 18 6 232 100 2945 16 73 1 ford maverick 18 6 250 88 3021 16.5 73 1 plymouth duster 23 6 198 95 2904 16 73 1 volkswagen super beetle 26 4 97 46 1950 21 73 2 chevrolet impala 11 8 400 150 4997 14 73 1 ford country 12 8 400 167 4906 12.5 73 1 plymouth custom suburb 13 8 360 170 4654 13 73 1 oldsmobile vista cruiser 12 8 350 180 4499 12.5 73 1 amc gremlin 18 6 232 100 2789 15 73 1 toyota carina 20 4 97 88 2279 19 73 3 chevrolet vega 21 4 140 72 2401 19.5 73 1 datsun 610 22 4 108 94 2379 16.5 73 3 maxda rx3 18 3 70 90 2124 13.5 73 3 ford pinto 19 4 122 85 2310 18.5 73 1 mercury capri v6 21 6 155 107 2472 14 73 1 fiat 124 sport coupe 26 4 98 90 2265 15.5 73 2 chevrolet monte carlo s 15 8 350 145 4082 13 73 1 pontiac grand prix 16 8 400 230 4278 9.5 73 1 fiat 128 29 4 68 49 1867 19.5 73 2 opel manta 24 4 116 75 2158 15.5 73 2 audi 100ls 20 4 114 91 2582 14 73 2 volvo 144ea 19 4 121 112 2868 15.5 73 2 dodge dart custom 15 8 318 150 3399 11 73 1 saab 99le 24 4 121 110 2660 14 73 2 toyota mark ii 20 6 156 122 2807 13.5 73 3 oldsmobile omega 11 8 350 180 3664 11 73 1 plymouth duster 20 6 198 95 3102 16.5 74 1 ford maverick 21 6 200 NA 2875 17 74 1 amc hornet 19 6 232 100 2901 16 74 1 chevrolet nova 15 6 250 100 3336 17 74 1 datsun b210 31 4 79 67 1950 19 74 3 ford pinto 26 4 122 80 2451 16.5 74 1 toyota corolla 1200 32 4 71 65 1836 21 74 3 chevrolet vega 25 4 140 75 2542 17 74 1 chevrolet chevelle malibu classic 16 6 250 100 3781 17 74 1 amc matador 16 6 258 110 3632 18 74 1 plymouth satellite sebring 18 6 225 105 3613 16.5 74 1 ford gran torino 16 8 302 140 4141 14 74 1 buick century luxus (sw) 13 8 350 150 4699 14.5 74 1 dodge coronet custom (sw) 14 8 318 150 4457 13.5 74 1 ford gran torino (sw) 14 8 302 140 4638 16 74 1 amc matador (sw) 14 8 304 150 4257 15.5 74 1 audi fox 29 4 98 83 2219 16.5 74 2 volkswagen dasher 26 4 79 67 1963 15.5 74 2 opel manta 26 4 97 78 2300 14.5 74 2 toyota corona 31 4 76 52 1649 16.5 74 3 datsun 710 32 4 83 61 2003 19 74 3 dodge colt 28 4 90 75 2125 14.5 74 1 fiat 128 24 4 90 75 2108 15.5 74 2 fiat 124 tc 26 4 116 75 2246 14 74 2 honda civic 24 4 120 97 2489 15 74 3 subaru 26 4 108 93 2391 15.5 74 3 fiat x1.9 31 4 79 67 2000 16 74 2 plymouth valiant custom 19 6 225 95 3264 16 75 1 chevrolet nova 18 6 250 105 3459 16 75 1 mercury monarch 15 6 250 72 3432 21 75 1 ford maverick 15 6 250 72 3158 19.5 75 1 pontiac catalina 16 8 400 170 4668 11.5 75 1 chevrolet bel air 15 8 350 145 4440 14 75 1 plymouth grand fury 16 8 318 150 4498 14.5 75 1 ford ltd 14 8 351 148 4657 13.5 75 1 buick century 17 6 231 110 3907 21 75 1 chevroelt chevelle malibu 16 6 250 105 3897 18.5 75 1 amc matador 15 6 258 110 3730 19 75 1 plymouth fury 18 6 225 95 3785 19 75 1 buick skyhawk 21 6 231 110 3039 15 75 1 chevrolet monza 2+2 20 8 262 110 3221 13.5 75 1 ford mustang ii 13 8 302 129 3169 12 75 1 toyota corolla 29 4 97 75 2171 16 75 3 ford pinto 23 4 140 83 2639 17 75 1 amc gremlin 20 6 232 100 2914 16 75 1 pontiac astro 23 4 140 78 2592 18.5 75 1 toyota corona 24 4 134 96 2702 13.5 75 3 volkswagen dasher 25 4 90 71 2223 16.5 75 2 datsun 710 24 4 119 97 2545 17 75 3 ford pinto 18 6 171 97 2984 14.5 75 1 volkswagen rabbit 29 4 90 70 1937 14 75 2 amc pacer 19 6 232 90 3211 17 75 1 audi 100ls 23 4 115 95 2694 15 75 2 peugeot 504 23 4 120 88 2957 17 75 2 volvo 244dl 22 4 121 98 2945 14.5 75 2 saab 99le 25 4 121 115 2671 13.5 75 2 honda civic cvcc 33 4 91 53 1795 17.5 75 3 fiat 131 28 4 107 86 2464 15.5 76 2 opel 1900 25 4 116 81 2220 16.9 76 2 capri ii 25 4 140 92 2572 14.9 76 1 dodge colt 26 4 98 79 2255 17.7 76 1 renault 12tl 27 4 101 83 2202 15.3 76 2 chevrolet chevelle malibu classic 17.5 8 305 140 4215 13 76 1 dodge coronet brougham 16 8 318 150 4190 13 76 1 amc matador 15.5 8 304 120 3962 13.9 76 1 ford gran torino 14.5 8 351 152 4215 12.8 76 1 plymouth valiant 22 6 225 100 3233 15.4 76 1 chevrolet nova 22 6 250 105 3353 14.5 76 1 ford maverick 24 6 200 81 3012 17.6 76 1 amc hornet 22.5 6 232 90 3085 17.6 76 1 chevrolet chevette 29 4 85 52 2035 22.2 76 1 chevrolet woody 24.5 4 98 60 2164 22.1 76 1 vw rabbit 29 4 90 70 1937 14.2 76 2 honda civic 33 4 91 53 1795 17.4 76 3 dodge aspen se 20 6 225 100 3651 17.7 76 1 ford granada ghia 18 6 250 78 3574 21 76 1 pontiac ventura sj 18.5 6 250 110 3645 16.2 76 1 amc pacer d/l 17.5 6 258 95 3193 17.8 76 1 volkswagen rabbit 29.5 4 97 71 1825 12.2 76 2 datsun b-210 32 4 85 70 1990 17 76 3 toyota corolla 28 4 97 75 2155 16.4 76 3 ford pinto 26.5 4 140 72 2565 13.6 76 1 volvo 245 20 4 130 102 3150 15.7 76 2 plymouth volare premier v8 13 8 318 150 3940 13.2 76 1 peugeot 504 19 4 120 88 3270 21.9 76 2 toyota mark ii 19 6 156 108 2930 15.5 76 3 mercedes-benz 280s 16.5 6 168 120 3820 16.7 76 2 cadillac seville 16.5 8 350 180 4380 12.1 76 1 chevy c10 13 8 350 145 4055 12 76 1 ford f108 13 8 302 130 3870 15 76 1 dodge d100 13 8 318 150 3755 14 76 1 honda accord cvcc 31.5 4 98 68 2045 18.5 77 3 buick opel isuzu deluxe 30 4 111 80 2155 14.8 77 1 renault 5 gtl 36 4 79 58 1825 18.6 77 2 plymouth arrow gs 25.5 4 122 96 2300 15.5 77 1 datsun f-10 hatchback 33.5 4 85 70 1945 16.8 77 3 chevrolet caprice classic 17.5 8 305 145 3880 12.5 77 1 oldsmobile cutlass supreme 17 8 260 110 4060 19 77 1 dodge monaco brougham 15.5 8 318 145 4140 13.7 77 1 mercury cougar brougham 15 8 302 130 4295 14.9 77 1 chevrolet concours 17.5 6 250 110 3520 16.4 77 1 buick skylark 20.5 6 231 105 3425 16.9 77 1 plymouth volare custom 19 6 225 100 3630 17.7 77 1 ford granada 18.5 6 250 98 3525 19 77 1 pontiac grand prix lj 16 8 400 180 4220 11.1 77 1 chevrolet monte carlo landau 15.5 8 350 170 4165 11.4 77 1 chrysler cordoba 15.5 8 400 190 4325 12.2 77 1 ford thunderbird 16 8 351 149 4335 14.5 77 1 volkswagen rabbit custom 29 4 97 78 1940 14.5 77 2 pontiac sunbird coupe 24.5 4 151 88 2740 16 77 1 toyota corolla liftback 26 4 97 75 2265 18.2 77 3 ford mustang ii 2+2 25.5 4 140 89 2755 15.8 77 1 chevrolet chevette 30.5 4 98 63 2051 17 77 1 dodge colt m/m 33.5 4 98 83 2075 15.9 77 1 subaru dl 30 4 97 67 1985 16.4 77 3 volkswagen dasher 30.5 4 97 78 2190 14.1 77 2 datsun 810 22 6 146 97 2815 14.5 77 3 bmw 320i 21.5 4 121 110 2600 12.8 77 2 mazda rx-4 21.5 3 80 110 2720 13.5 77 3 volkswagen rabbit custom diesel 43.1 4 90 48 1985 21.5 78 2 ford fiesta 36.1 4 98 66 1800 14.4 78 1 mazda glc deluxe 32.8 4 78 52 1985 19.4 78 3 datsun b210 gx 39.4 4 85 70 2070 18.6 78 3 honda civic cvcc 36.1 4 91 60 1800 16.4 78 3 oldsmobile cutlass salon brougham 19.9 8 260 110 3365 15.5 78 1 dodge diplomat 19.4 8 318 140 3735 13.2 78 1 mercury monarch ghia 20.2 8 302 139 3570 12.8 78 1 pontiac phoenix lj 19.2 6 231 105 3535 19.2 78 1 chevrolet malibu 20.5 6 200 95 3155 18.2 78 1 ford fairmont (auto) 20.2 6 200 85 2965 15.8 78 1 ford fairmont (man) 25.1 4 140 88 2720 15.4 78 1 plymouth volare 20.5 6 225 100 3430 17.2 78 1 amc concord 19.4 6 232 90 3210 17.2 78 1 buick century special 20.6 6 231 105 3380 15.8 78 1 mercury zephyr 20.8 6 200 85 3070 16.7 78 1 dodge aspen 18.6 6 225 110 3620 18.7 78 1 amc concord d/l 18.1 6 258 120 3410 15.1 78 1 chevrolet monte carlo landau 19.2 8 305 145 3425 13.2 78 1 buick regal sport coupe (turbo) 17.7 6 231 165 3445 13.4 78 1 ford futura 18.1 8 302 139 3205 11.2 78 1 dodge magnum xe 17.5 8 318 140 4080 13.7 78 1 chevrolet chevette 30 4 98 68 2155 16.5 78 1 toyota corona 27.5 4 134 95 2560 14.2 78 3 datsun 510 27.2 4 119 97 2300 14.7 78 3 dodge omni 30.9 4 105 75 2230 14.5 78 1 toyota celica gt liftback 21.1 4 134 95 2515 14.8 78 3 plymouth sapporo 23.2 4 156 105 2745 16.7 78 1 oldsmobile starfire sx 23.8 4 151 85 2855 17.6 78 1 datsun 200-sx 23.9 4 119 97 2405 14.9 78 3 audi 5000 20.3 5 131 103 2830 15.9 78 2 volvo 264gl 17 6 163 125 3140 13.6 78 2 saab 99gle 21.6 4 121 115 2795 15.7 78 2 peugeot 604sl 16.2 6 163 133 3410 15.8 78 2 volkswagen scirocco 31.5 4 89 71 1990 14.9 78 2 honda accord lx 29.5 4 98 68 2135 16.6 78 3 pontiac lemans v6 21.5 6 231 115 3245 15.4 79 1 mercury zephyr 6 19.8 6 200 85 2990 18.2 79 1 ford fairmont 4 22.3 4 140 88 2890 17.3 79 1 amc concord dl 6 20.2 6 232 90 3265 18.2 79 1 dodge aspen 6 20.6 6 225 110 3360 16.6 79 1 chevrolet caprice classic 17 8 305 130 3840 15.4 79 1 ford ltd landau 17.6 8 302 129 3725 13.4 79 1 mercury grand marquis 16.5 8 351 138 3955 13.2 79 1 dodge st. regis 18.2 8 318 135 3830 15.2 79 1 buick estate wagon (sw) 16.9 8 350 155 4360 14.9 79 1 ford country squire (sw) 15.5 8 351 142 4054 14.3 79 1 chevrolet malibu classic (sw) 19.2 8 267 125 3605 15 79 1 chrysler lebaron town @ country (sw) 18.5 8 360 150 3940 13 79 1 vw rabbit custom 31.9 4 89 71 1925 14 79 2 maxda glc deluxe 34.1 4 86 65 1975 15.2 79 3 dodge colt hatchback custom 35.7 4 98 80 1915 14.4 79 1 amc spirit dl 27.4 4 121 80 2670 15 79 1 mercedes benz 300d 25.4 5 183 77 3530 20.1 79 2 cadillac eldorado 23 8 350 125 3900 17.4 79 1 peugeot 504 27.2 4 141 71 3190 24.8 79 2 oldsmobile cutlass salon brougham 23.9 8 260 90 3420 22.2 79 1 plymouth horizon 34.2 4 105 70 2200 13.2 79 1 plymouth horizon tc3 34.5 4 105 70 2150 14.9 79 1 datsun 210 31.8 4 85 65 2020 19.2 79 3 fiat strada custom 37.3 4 91 69 2130 14.7 79 2 buick skylark limited 28.4 4 151 90 2670 16 79 1 chevrolet citation 28.8 6 173 115 2595 11.3 79 1 oldsmobile omega brougham 26.8 6 173 115 2700 12.9 79 1 pontiac phoenix 33.5 4 151 90 2556 13.2 79 1 vw rabbit 41.5 4 98 76 2144 14.7 80 2 toyota corolla tercel 38.1 4 89 60 1968 18.8 80 3 chevrolet chevette 32.1 4 98 70 2120 15.5 80 1 datsun 310 37.2 4 86 65 2019 16.4 80 3 chevrolet citation 28 4 151 90 2678 16.5 80 1 ford fairmont 26.4 4 140 88 2870 18.1 80 1 amc concord 24.3 4 151 90 3003 20.1 80 1 dodge aspen 19.1 6 225 90 3381 18.7 80 1 audi 4000 34.3 4 97 78 2188 15.8 80 2 toyota corona liftback 29.8 4 134 90 2711 15.5 80 3 mazda 626 31.3 4 120 75 2542 17.5 80 3 datsun 510 hatchback 37 4 119 92 2434 15 80 3 toyota corolla 32.2 4 108 75 2265 15.2 80 3 mazda glc 46.6 4 86 65 2110 17.9 80 3 dodge colt 27.9 4 156 105 2800 14.4 80 1 datsun 210 40.8 4 85 65 2110 19.2 80 3 vw rabbit c (diesel) 44.3 4 90 48 2085 21.7 80 2 vw dasher (diesel) 43.4 4 90 48 2335 23.7 80 2 audi 5000s (diesel) 36.4 5 121 67 2950 19.9 80 2 mercedes-benz 240d 30 4 146 67 3250 21.8 80 2 honda civic 1500 gl 44.6 4 91 67 1850 13.8 80 3 renault lecar deluxe 40.9 4 85 NA 1835 17.3 80 2 subaru dl 33.8 4 97 67 2145 18 80 3 vokswagen rabbit 29.8 4 89 62 1845 15.3 80 2 datsun 280-zx 32.7 6 168 132 2910 11.4 80 3 mazda rx-7 gs 23.7 3 70 100 2420 12.5 80 3 triumph tr7 coupe 35 4 122 88 2500 15.1 80 2 ford mustang cobra 23.6 4 140 NA 2905 14.3 80 1 honda accord 32.4 4 107 72 2290 17 80 3 plymouth reliant 27.2 4 135 84 2490 15.7 81 1 buick skylark 26.6 4 151 84 2635 16.4 81 1 dodge aries wagon (sw) 25.8 4 156 92 2620 14.4 81 1 chevrolet citation 23.5 6 173 110 2725 12.6 81 1 plymouth reliant 30 4 135 84 2385 12.9 81 1 toyota starlet 39.1 4 79 58 1755 16.9 81 3 plymouth champ 39 4 86 64 1875 16.4 81 1 honda civic 1300 35.1 4 81 60 1760 16.1 81 3 subaru 32.3 4 97 67 2065 17.8 81 3 datsun 210 mpg 37 4 85 65 1975 19.4 81 3 toyota tercel 37.7 4 89 62 2050 17.3 81 3 mazda glc 4 34.1 4 91 68 1985 16 81 3 plymouth horizon 4 34.7 4 105 63 2215 14.9 81 1 ford escort 4w 34.4 4 98 65 2045 16.2 81 1 ford escort 2h 29.9 4 98 65 2380 20.7 81 1 volkswagen jetta 33 4 105 74 2190 14.2 81 2 renault 18i 34.5 4 100 NA 2320 15.8 81 2 honda prelude 33.7 4 107 75 2210 14.4 81 3 toyota corolla 32.4 4 108 75 2350 16.8 81 3 datsun 200sx 32.9 4 119 100 2615 14.8 81 3 mazda 626 31.6 4 120 74 2635 18.3 81 3 peugeot 505s turbo diesel 28.1 4 141 80 3230 20.4 81 2 saab 900s NA 4 121 110 2800 15.4 81 2 volvo diesel 30.7 6 145 76 3160 19.6 81 2 toyota cressida 25.4 6 168 116 2900 12.6 81 3 datsun 810 maxima 24.2 6 146 120 2930 13.8 81 3 buick century 22.4 6 231 110 3415 15.8 81 1 oldsmobile cutlass ls 26.6 8 350 105 3725 19 81 1 ford granada gl 20.2 6 200 88 3060 17.1 81 1 chrysler lebaron salon 17.6 6 225 85 3465 16.6 81 1 chevrolet cavalier 28 4 112 88 2605 19.6 82 1 chevrolet cavalier wagon 27 4 112 88 2640 18.6 82 1 chevrolet cavalier 2-door 34 4 112 88 2395 18 82 1 pontiac j2000 se hatchback 31 4 112 85 2575 16.2 82 1 dodge aries se 29 4 135 84 2525 16 82 1 pontiac phoenix 27 4 151 90 2735 18 82 1 ford fairmont futura 24 4 140 92 2865 16.4 82 1 amc concord dl 23 4 151 NA 3035 20.5 82 1 volkswagen rabbit l 36 4 105 74 1980 15.3 82 2 mazda glc custom l 37 4 91 68 2025 18.2 82 3 mazda glc custom 31 4 91 68 1970 17.6 82 3 plymouth horizon miser 38 4 105 63 2125 14.7 82 1 mercury lynx l 36 4 98 70 2125 17.3 82 1 nissan stanza xe 36 4 120 88 2160 14.5 82 3 honda accord 36 4 107 75 2205 14.5 82 3 toyota corolla 34 4 108 70 2245 16.9 82 3 honda civic 38 4 91 67 1965 15 82 3 honda civic (auto) 32 4 91 67 1965 15.7 82 3 datsun 310 gx 38 4 91 67 1995 16.2 82 3 buick century limited 25 6 181 110 2945 16.4 82 1 oldsmobile cutlass ciera (diesel) 38 6 262 85 3015 17 82 1 chrysler lebaron medallion 26 4 156 92 2585 14.5 82 1 ford granada l 22 6 232 112 2835 14.7 82 1 toyota celica gt 32 4 144 96 2665 13.9 82 3 dodge charger 2.2 36 4 135 84 2370 13 82 1 chevrolet camaro 27 4 151 90 2950 17.3 82 1 ford mustang gl 27 4 140 86 2790 15.6 82 1 vw pickup 44 4 97 52 2130 24.6 82 2 dodge rampage 32 4 135 84 2295 11.6 82 1 ford ranger 28 4 120 79 2625 18.6 82 1 chevy s-10 31 4 119 82 2720 19.4 82 1 \ No newline at end of file diff --git a/learning/topic/loadfile2/index.html b/learning/topic/loadfile2/index.html deleted file mode 100644 index 75cd863..0000000 --- a/learning/topic/loadfile2/index.html +++ /dev/null @@ -1,287 +0,0 @@ ---- -layout: default ---- -

    LoadFile2

    - - - -

    This example loads a data file about cars. Each element is separated - -with a tab and corresponds to a different aspect of each car. The file stores - -the miles per gallon, cylinders, displacement, etc., for more than 400 different - -makes and models. Press a mouse button to advance to the next group of entries.

    - - - -

    Original Processing.org Example: LoadFile2
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -Record[] records;
    -
    -String[] lines;
    -
    -int recordCount;
    -
    -PFont body;
    -
    -int num = 9; // Display this many entries on each screen.
    -
    -int startingEntry = 0;  // Display from this entry number
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  fill(255);
    -
    -  noLoop();
    -
    -  
    -
    -  body = loadFont("TheSans-Plain-12.vlw");
    -
    -  textFont(body);
    -
    -  
    -
    -  lines = loadStrings("cars2.tsv");
    -
    -  records = new Record[lines.length];
    -
    -  for (int i = 0; i < lines.length; i++) {
    -
    -    String[] pieces = split(lines[i], '\t'); // Load data into arrayif (pieces.length == 9) {
    -
    -    records[recordCount] = new Record(pieces);
    -
    -    recordCount++;
    -
    -  }
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(0);
    -
    -  for (int i = 0; i < num; i++) {
    -
    -    int thisEntry = startingEntry + i;
    -
    -    text(thisEntry + " > " + records[thisEntry].name, 20, 20 + i*20); // Print name to console
    -
    -  }
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  startingEntry += num; 
    -
    -  if (startingEntry + num > records.length) {
    -
    -    startingEntry -= num;
    -
    -  } 
    -
    -  redraw();
    -
    -}
    -
    -
    -
    -class Record {
    -
    -  String name;
    -
    -  float mpg;
    -
    -  int cylinders;
    -
    -  float displacement;
    -
    -  float horsepower;
    -
    -  float weight;
    -
    -  float acceleration;
    -
    -  int year;
    -
    -  float origin;
    -
    -  public Record(String[] pieces) {
    -
    -    name = pieces[0];
    -
    -    mpg = float(pieces[1]);
    -
    -    cylinders = int(pieces[2]);
    -
    -    displacement = float(pieces[3]);
    -
    -    horsepower = float(pieces[4]);
    -
    -    weight = float(pieces[5]);
    -
    -    acceleration = float(pieces[6]);
    -
    -    year = int(pieces[7]);
    -
    -    origin = float(pieces[8]);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/mandelbrot/index.html b/learning/topic/mandelbrot/index.html deleted file mode 100644 index f3fb17b..0000000 --- a/learning/topic/mandelbrot/index.html +++ /dev/null @@ -1,281 +0,0 @@ ---- -layout: default ---- -

    Mandelbrot

    - - - -

    by Daniel Shiffman. - - - -Simple rendering of the Mandelbrot set.

    - - - -

    Original Processing.org Example: Mandelbrot
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// Establish a range of values on the complex plane
    -
    -// A different range will allow us to "zoom" in or out on the fractal
    -
    -// float xmin = -1.5; float ymin = -.1; float wh = 0.15;
    -
    -float xmin = -2.5; 
    -
    -float ymin = -2; 
    -
    -float wh = 4;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -
    -
    -  loadPixels();
    -
    -  
    -
    -  // Maximum number of iterations for each point on the complex plane
    -
    -  int maxiterations = 200;
    -
    -
    -
    -  // x goes from xmin to xmax
    -
    -  float xmax = xmin + wh;
    -
    -  // y goes from ymin to ymax
    -
    -  float ymax = ymin + wh;
    -
    -  
    -
    -  // Calculate amount we increment x,y for each pixel
    -
    -  float dx = (xmax - xmin) / (width);
    -
    -  float dy = (ymax - ymin) / (height);
    -
    -
    -
    -  // Start y
    -
    -  float y = ymin;
    -
    -  for(int j = 0; j < height; j++) {
    -
    -    // Start x
    -
    -    float x = xmin;
    -
    -    for(int i = 0;  i < width; i++) {
    -
    -      
    -
    -      // Now we test, as we iterate z = z^2 + cm does z tend towards infinity?
    -
    -      float a = x;
    -
    -      float b = y;
    -
    -      int n = 0;
    -
    -      while (n < maxiterations) {
    -
    -        float aa = a * a;
    -
    -        float bb = b * b;
    -
    -        float twoab = 2.0 * a * b;
    -
    -        a = aa - bb + x;
    -
    -        b = twoab + y;
    -
    -        // Infinty in our finite world is simple, let's just consider it 16
    -
    -        if(aa + bb > 16.0f) {
    -
    -          break;  // Bail
    -
    -        }
    -
    -        n++;
    -
    -      }
    -
    -      
    -
    -      // We color each pixel based on how long it takes to get to infinity
    -
    -      // If we never got there, let's pick the color black
    -
    -      if (n == maxiterations) pixels[i+j*width] = 0;
    -
    -      else pixels[i+j*width] = color(n*16 % 255);  // Gosh, we could make fancy colors here if we wanted
    -
    -      x += dx;
    -
    -    }
    -
    -    y += dy;
    -
    -  }
    -
    -  updatePixels();
    -
    -}
    - - - - - diff --git a/learning/topic/movingoncurves/index.html b/learning/topic/movingoncurves/index.html deleted file mode 100644 index 7e5c5b2..0000000 --- a/learning/topic/movingoncurves/index.html +++ /dev/null @@ -1,203 +0,0 @@ ---- -layout: default ---- -

    MovingOnCurves

    - - - -

    In this example, the circles moves along the curve y = x^4. - -Click the mouse to have it move to a new position.

    - - - -

    Original Processing.org Example: MovingOnCurves
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float beginX = 20.0;  // Initial x-coordinate
    -
    -float beginY = 10.0;  // Initial y-coordinate
    -
    -float endX = 170.0;   // Final x-coordinate
    -
    -float endY = 180.0;   // Final y-coordinate
    -
    -float distX;          // X-axis distance to move
    -
    -float distY;          // Y-axis distance to move
    -
    -float exponent = 4;   // Determines the curve
    -
    -float x = 0.0;        // Current x-coordinate
    -
    -float y = 0.0;        // Current y-coordinate
    -
    -float step = 0.01;    // Size of each step along the path
    -
    -float pct = 0.0;      // Percentage traveled (0.0 to 1.0)
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  smooth();
    -
    -  distX = endX - beginX;
    -
    -  distY = endY - beginY;
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  fill(0, 2);
    -
    -  rect(0, 0, width, height);
    -
    -  pct += step;
    -
    -  if (pct < 1.0) {
    -
    -    x = beginX + (pct * distX);
    -
    -    y = beginY + (pow(pct, exponent) * distY);
    -
    -  }
    -
    -  fill(255);
    -
    -  ellipse(x, y, 20, 20);
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  pct = 0.0;
    -
    -  beginX = x;
    -
    -  beginY = y;
    -
    -  endX = mouseX;
    -
    -  endY = mouseY;
    -
    -  distX = endX - beginX;
    -
    -  distY = endY - beginY;
    -
    -}
    - - - - - diff --git a/learning/topic/multipleparticlesystems/index.html b/learning/topic/multipleparticlesystems/index.html deleted file mode 100644 index 251c430..0000000 --- a/learning/topic/multipleparticlesystems/index.html +++ /dev/null @@ -1,1323 +0,0 @@ ---- -layout: default ---- -

    MultipleParticleSystems

    - - - -

    by Daniel Shiffman. - - - -Click the mouse to generate a burst of particles - -at mouse location. - - - -Each burst is one instance of a particle system - -with Particles and CrazyParticles (a subclass of Particle) - -Note use of Inheritance and Polymorphism here.

    - - - -

    Original Processing.org Example: MultipleParticleSystems
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -ArrayList psystems;
    -
    -
    -
    -void setup() {
    -
    -  size(200,200);
    -
    -  frameRate(30);
    -
    -  colorMode(RGB,255,255,255,100);
    -
    -  psystems = new ArrayList();
    -
    -  smooth();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(0);
    -
    -
    -
    -  // Cycle through all particle systems, run them and delete old ones
    -
    -  for (int i = psystems.size()-1; i >= 0; i--) {
    -
    -    ParticleSystem psys = (ParticleSystem) psystems.get(i);
    -
    -    psys.run();
    -
    -    if (psys.dead()) {
    -
    -      psystems.remove(i);
    -
    -    }
    -
    -  }
    -
    -
    -
    -}
    -
    -
    -
    -// When the mouse is pressed, add a new particle system
    -
    -void mousePressed() {
    -
    -  psystems.add(new ParticleSystem(int(random(5,25)),new Vector3D(mouseX,mouseY)));
    -
    -}
    -
    -
    -
    -
    -
    -// A subclass of Particle
    -
    -
    -
    -// Created 2 May 2005
    -
    -
    -
    -class CrazyParticle extends Particle {
    -
    -
    -
    -  // Just adding one new variable to a CrazyParticle
    -
    -  // It inherits all other fields from "Particle", and we don't have to retype them!
    -
    -  float theta;
    -
    -
    -
    -  // The CrazyParticle constructor can call the parent class (super class) constructor
    -
    -  CrazyParticle(Vector3D l) {
    -
    -    // "super" means do everything from the constructor in Particle
    -
    -    super(l);
    -
    -    // One more line of code to deal with the new variable, theta
    -
    -    theta = 0.0;
    -
    -
    -
    -  }
    -
    -
    -
    -  // Notice we don't have the method run() here; it is inherited from Particle
    -
    -
    -
    -  // This update() method overrides the parent class update() method
    -
    -  void update() {
    -
    -    super.update();
    -
    -    // Increment rotation based on horizontal velocity
    -
    -    float theta_vel = (vel.x * vel.magnitude()) / 10.0f;
    -
    -    theta += theta_vel;
    -
    -  }
    -
    -
    -
    -  // Override timer
    -
    -  void timer() {
    -
    -    timer -= 0.5;
    -
    -  }
    -
    -  
    -
    -  // Method to display
    -
    -  void render() {
    -
    -    // Render the ellipse just like in a regular particle
    -
    -    super.render();
    -
    -
    -
    -    // Then add a rotating line
    -
    -    pushMatrix();
    -
    -    translate(loc.x,loc.y);
    -
    -    rotate(theta);
    -
    -    stroke(255,timer);
    -
    -    line(0,0,25,0);
    -
    -    popMatrix();
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -// A simple Particle class
    -
    -
    -
    -class Particle {
    -
    -  Vector3D loc;
    -
    -  Vector3D vel;
    -
    -  Vector3D acc;
    -
    -  float r;
    -
    -  float timer;
    -
    -
    -
    -  // One constructor
    -
    -  Particle(Vector3D a, Vector3D v, Vector3D l, float r_) {
    -
    -    acc = a.copy();
    -
    -    vel = v.copy();
    -
    -    loc = l.copy();
    -
    -    r = r_;
    -
    -    timer = 100.0;
    -
    -  }
    -
    -  
    -
    -  // Another constructor (the one we are using here)
    -
    -  Particle(Vector3D l) {
    -
    -    acc = new Vector3D(0,0.05,0);
    -
    -    vel = new Vector3D(random(-1,1),random(-2,0),0);
    -
    -    loc = l.copy();
    -
    -    r = 10.0;
    -
    -    timer = 100.0;
    -
    -  }
    -
    -
    -
    -
    -
    -  void run() {
    -
    -    update();
    -
    -    render();
    -
    -  }
    -
    -
    -
    -  // Method to update location
    -
    -  void update() {
    -
    -    vel.add(acc);
    -
    -    loc.add(vel);
    -
    -    timer -= 1.0;
    -
    -  }
    -
    -
    -
    -  // Method to display
    -
    -  void render() {
    -
    -    ellipseMode(CENTER);
    -
    -    noStroke();
    -
    -    fill(255,timer);
    -
    -    ellipse(loc.x,loc.y,r,r);
    -
    -  }
    -
    -  
    -
    -  // Is the particle still useful?
    -
    -  boolean dead() {
    -
    -    if (timer <= 0.0) {
    -
    -      return true;
    -
    -    } else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -// A class to describe a group of Particles
    -
    -// An ArrayList is used to manage the list of Particles 
    -
    -
    -
    -class ParticleSystem {
    -
    -
    -
    -  ArrayList particles;    // An arraylist for all the particles
    -
    -  Vector3D origin;        // An origin point for where particles are birthed
    -
    -
    -
    -  ParticleSystem(int num, Vector3D v) {
    -
    -    particles = new ArrayList();              // Initialize the arraylist
    -
    -    origin = v.copy();                        // Store the origin point
    -
    -    for (int i = 0; i < num; i++) {
    -
    -      particles.add(new CrazyParticle(origin));    // Add "num" amount of particles to the arraylist
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void run() {
    -
    -    // Cycle through the ArrayList backwards b/c we are deleting
    -
    -    for (int i = particles.size()-1; i >= 0; i--) {
    -
    -      Particle p = (Particle) particles.get(i);
    -
    -      p.run();
    -
    -      if (p.dead()) {
    -
    -        particles.remove(i);
    -
    -      }
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void addParticle() {
    -
    -    particles.add(new Particle(origin));
    -
    -  }
    -
    -
    -
    -  void addParticle(Particle p) {
    -
    -    particles.add(p);
    -
    -  }
    -
    -
    -
    -  // A method to test if the particle system still has particles
    -
    -  boolean dead() {
    -
    -    if (particles.isEmpty()) {
    -
    -      return true;
    -
    -    } else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -
    -
    -}
    -
    -
    -
    -
    -
    -
    -
    -// Simple Vector3D Class 
    -
    -
    -
    -public class Vector3D {
    -
    -  public float x;
    -
    -  public float y;
    -
    -  public float z;
    -
    -
    -
    -  Vector3D(float x_, float y_, float z_) {
    -
    -    x = x_; y = y_; z = z_;
    -
    -  }
    -
    -
    -
    -  Vector3D(float x_, float y_) {
    -
    -    x = x_; y = y_; z = 0f;
    -
    -  }
    -
    -  
    -
    -  Vector3D() {
    -
    -    x = 0f; y = 0f; z = 0f;
    -
    -  }
    -
    -
    -
    -  void setX(float x_) {
    -
    -    x = x_;
    -
    -  }
    -
    -
    -
    -  void setY(float y_) {
    -
    -    y = y_;
    -
    -  }
    -
    -
    -
    -  void setZ(float z_) {
    -
    -    z = z_;
    -
    -  }
    -
    -  
    -
    -  void setXY(float x_, float y_) {
    -
    -    x = x_;
    -
    -    y = y_;
    -
    -  }
    -
    -  
    -
    -  void setXYZ(float x_, float y_, float z_) {
    -
    -    x = x_;
    -
    -    y = y_;
    -
    -    z = z_;
    -
    -  }
    -
    -
    -
    -  void setXYZ(Vector3D v) {
    -
    -    x = v.x;
    -
    -    y = v.y;
    -
    -    z = v.z;
    -
    -  }
    -
    -  public float magnitude() {
    -
    -    return (float) Math.sqrt(x*x + y*y + z*z);
    -
    -  }
    -
    -
    -
    -  public Vector3D copy() {
    -
    -    return new Vector3D(x,y,z);
    -
    -  }
    -
    -
    -
    -  public Vector3D copy(Vector3D v) {
    -
    -    return new Vector3D(v.x, v.y,v.z);
    -
    -  }
    -
    -  
    -
    -  public void add(Vector3D v) {
    -
    -    x += v.x;
    -
    -    y += v.y;
    -
    -    z += v.z;
    -
    -  }
    -
    -
    -
    -  public void sub(Vector3D v) {
    -
    -    x -= v.x;
    -
    -    y -= v.y;
    -
    -    z -= v.z;
    -
    -  }
    -
    -
    -
    -  public void mult(float n) {
    -
    -    x *= n;
    -
    -    y *= n;
    -
    -    z *= n;
    -
    -  }
    -
    -
    -
    -  public void div(float n) {
    -
    -    x /= n;
    -
    -    y /= n;
    -
    -    z /= n;
    -
    -  }
    -
    -
    -
    -  public void normalize() {
    -
    -    float m = magnitude();
    -
    -    if (m > 0) {
    -
    -       div(m);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  public void limit(float max) {
    -
    -    if (magnitude() > max) {
    -
    -      normalize();
    -
    -      mult(max);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  public float heading2D() {
    -
    -    float angle = (float) Math.atan2(-y, x);
    -
    -    return -1*angle;
    -
    -  }
    -
    -
    -
    -  public Vector3D add(Vector3D v1, Vector3D v2) {
    -
    -    Vector3D v = new Vector3D(v1.x + v2.x,v1.y + v2.y, v1.z + v2.z);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public Vector3D sub(Vector3D v1, Vector3D v2) {
    -
    -    Vector3D v = new Vector3D(v1.x - v2.x,v1.y - v2.y,v1.z - v2.z);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public Vector3D div(Vector3D v1, float n) {
    -
    -    Vector3D v = new Vector3D(v1.x/n,v1.y/n,v1.z/n);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public Vector3D mult(Vector3D v1, float n) {
    -
    -    Vector3D v = new Vector3D(v1.x*n,v1.y*n,v1.z*n);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public float distance (Vector3D v1, Vector3D v2) {
    -
    -    float dx = v1.x - v2.x;
    -
    -    float dy = v1.y - v2.y;
    -
    -    float dz = v1.z - v2.z;
    -
    -    return (float) Math.sqrt(dx*dx + dy*dy + dz*dz);
    -
    -  }
    -
    -
    -
    -}
    - - - - - diff --git a/learning/topic/pattern/index.html b/learning/topic/pattern/index.html deleted file mode 100644 index 9397dd8..0000000 --- a/learning/topic/pattern/index.html +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: default ---- -

    Pattern

    - - - -

    Move the cursor over the image to draw with a software tool - -which responds to the speed of the mouse.

    - - - -

    Original Processing.org Example: Pattern
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  background(102);
    -
    -  smooth();
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  // Call the variableEllipse() method and send it the
    -
    -  // parameters for the current mouse position
    -
    -  // and the previous mouse position
    -
    -  variableEllipse(mouseX, mouseY, pmouseX, pmouseY);
    -
    -}
    -
    -
    -
    -
    -
    -// The simple method variableEllipse() was created specifically 
    -
    -// for this program. It calculates the speed of the mouse
    -
    -// and draws a small ellipse if the mouse is moving slowly
    -
    -// and draws a large ellipse if the mouse is moving quickly 
    -
    -
    -
    -void variableEllipse(int x, int y, int px, int py) 
    -
    -{
    -
    -  float speed = abs(x-px) + abs(y-py);
    -
    -  stroke(speed);
    -
    -  ellipse(x, y, speed, speed);
    -
    -}
    - - - - - diff --git a/learning/topic/penrosesnowflake/index.html b/learning/topic/penrosesnowflake/index.html deleted file mode 100644 index 25cd28a..0000000 --- a/learning/topic/penrosesnowflake/index.html +++ /dev/null @@ -1,825 +0,0 @@ ---- -layout: default ---- -

    PenroseSnowflake

    - - - -

    - - - -

    Original Processing.org Example: PenroseSnowflake
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/** 
    -
    - * Penrose Snowflake L-System 
    -
    - * by Geraldine Sarmiento (Interactive Telecommunications Program, NYU). 
    -
    - * This code was based on Patrick Dwyer's L-System class. 
    -
    - */
    -
    -
    -
    -PenroseSnowflakeLSystem ps;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  smooth();
    -
    -  ps = new PenroseSnowflakeLSystem();
    -
    -  ps.simulate(4);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(0);
    -
    -  ps.render();
    -
    -}
    -
    -
    -
    -class LSystem 
    -
    -{
    -
    -  int steps = 0;
    -
    -
    -
    -  String axiom;
    -
    -  String rule;
    -
    -  String production;
    -
    -
    -
    -  float startLength;
    -
    -  float drawLength;
    -
    -  float theta;
    -
    -
    -
    -  int generations;
    -
    -
    -
    -  LSystem() {
    -
    -    axiom = "F";
    -
    -    rule = "F+F-F";
    -
    -    startLength = 90.0;
    -
    -    theta = radians(120.0);
    -
    -    reset();
    -
    -  }
    -
    -
    -
    -  void reset() {
    -
    -    production = axiom;
    -
    -    drawLength = startLength;
    -
    -    generations = 0;
    -
    -  }
    -
    -
    -
    -  int getAge() {
    -
    -    return generations;
    -
    -  }
    -
    -
    -
    -  void render() {
    -
    -    translate(width/2, height/2);
    -
    -    steps += 5;          
    -
    -    if (steps > production.length()) {
    -
    -      steps = production.length();
    -
    -    }
    -
    -    for (int i = 0; i < steps; i++) {
    -
    -      char step = production.charAt(i);
    -
    -      if (step == 'F') {
    -
    -        rect(0, 0, -drawLength, -drawLength);
    -
    -        noFill();
    -
    -        translate(0, -drawLength);
    -
    -      } 
    -
    -      else if (step == '+') {
    -
    -        rotate(theta);
    -
    -      } 
    -
    -      else if (step == '-') {
    -
    -        rotate(-theta);
    -
    -      } 
    -
    -      else if (step == '[') {
    -
    -        pushMatrix();
    -
    -      } 
    -
    -      else if (step == ']') {
    -
    -        popMatrix();            
    -
    -      }
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void simulate(int gen) {
    -
    -    while (getAge() < gen) {
    -
    -      production = iterate(production, rule);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  String iterate(String prod_, String rule_) {
    -
    -    drawLength = drawLength * 0.6;
    -
    -    generations++;
    -
    -    String newProduction = prod_;          
    -
    -    newProduction = newProduction.replaceAll("F", rule_);
    -
    -    return newProduction;
    -
    -  }
    -
    -}
    -
    -
    -
    -class PenroseSnowflakeLSystem extends LSystem {
    -
    -
    -
    -  String ruleF;
    -
    -
    -
    -  PenroseSnowflakeLSystem() {
    -
    -    axiom = "F3-F3-F3-F3-F";
    -
    -    ruleF = "F3-F3-F45-F++F3-F";
    -
    -    startLength = 200.0f;
    -
    -    theta = radians(18); 
    -
    -    reset();
    -
    -  }
    -
    -
    -
    -  void useRule(String r_) {
    -
    -    rule = r_;
    -
    -  }
    -
    -
    -
    -  void useAxiom(String a_) {
    -
    -    axiom = a_;
    -
    -  }
    -
    -
    -
    -  void useLength(float l_) {
    -
    -    startLength = l_;
    -
    -  }
    -
    -
    -
    -  void useTheta(float t_) {
    -
    -    theta = radians(t_);
    -
    -  }
    -
    -
    -
    -  void reset() {
    -
    -    production = axiom;
    -
    -    drawLength = startLength;
    -
    -    generations = 0;
    -
    -  }
    -
    -
    -
    -  int getAge() {
    -
    -    return generations;
    -
    -  }
    -
    -
    -
    -  void render() {
    -
    -    translate(width, height);
    -
    -    int repeats = 1;
    -
    -
    -
    -    steps += 3;          
    -
    -    if (steps > production.length()) {
    -
    -      steps = production.length();
    -
    -    }
    -
    -
    -
    -    for (int i = 0; i < steps; i++) {
    -
    -      char step = production.charAt(i);
    -
    -      if (step == 'F') {
    -
    -        stroke(255);
    -
    -        noFill();
    -
    -        for (int j = 0; j < repeats; j++) {
    -
    -          line(0,0,0, -drawLength);
    -
    -          translate(0, -drawLength);
    -
    -        }
    -
    -        repeats = 1;
    -
    -      } 
    -
    -      else if (step == '+') {
    -
    -        for (int j = 0; j < repeats; j++) {
    -
    -          rotate(theta);
    -
    -        }
    -
    -        repeats = 1;
    -
    -      } 
    -
    -      else if (step == '-') {
    -
    -        for (int j =0; j < repeats; j++) {
    -
    -          rotate(-theta);
    -
    -        }
    -
    -        repeats = 1;
    -
    -      } 
    -
    -      else if (step == '[') {
    -
    -        pushMatrix();
    -
    -      } 
    -
    -      else if (step == ']') {
    -
    -        popMatrix();
    -
    -      } 
    -
    -      else if ( (step >= 48) && (step <= 57) ) {
    -
    -        repeats += (int)step - 48;
    -
    -      }
    -
    -    }
    -
    -  }
    -
    -
    -
    -
    -
    -  String iterate(String prod_, String rule_) {
    -
    -    String newProduction = "";
    -
    -    for (int i = 0; i < prod_.length(); i++) {
    -
    -      char step = production.charAt(i);
    -
    -      if (step == 'F') {
    -
    -        newProduction = newProduction + ruleF;
    -
    -      } 
    -
    -      else {
    -
    -        if (step != 'F') {
    -
    -          newProduction = newProduction + step;
    -
    -        }
    -
    -      }
    -
    -    }
    -
    -    drawLength = drawLength * 0.4;
    -
    -    generations++;
    -
    -    return newProduction;
    -
    -  }
    -
    -
    -
    -}
    - - - - - diff --git a/learning/topic/penrosetile/index.html b/learning/topic/penrosetile/index.html deleted file mode 100644 index 3bf97d4..0000000 --- a/learning/topic/penrosetile/index.html +++ /dev/null @@ -1,933 +0,0 @@ ---- -layout: default ---- -

    PenroseTile

    - - - -

    - - - -

    Original Processing.org Example: PenroseTile
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/** 
    -
    - * Penrose Tile L-System 
    -
    - * by Geraldine Sarmiento (Interactive Telecommunications Program, NYU). 
    -
    - * This code was based on Patrick Dwyer's L-System class. 
    -
    - */
    -
    -
    -
    -PenroseLSystem ds;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  smooth();
    -
    -  ds = new PenroseLSystem();
    -
    -  ds.simulate(4);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(0);
    -
    -  ds.render();
    -
    -}
    -
    -
    -
    -
    -
    -class LSystem 
    -
    -{
    -
    -  int steps = 0;
    -
    -
    -
    -  String axiom;
    -
    -  String rule;
    -
    -  String production;
    -
    -
    -
    -  float startLength;
    -
    -  float drawLength;
    -
    -  float theta;
    -
    -
    -
    -  int generations;
    -
    -
    -
    -  LSystem() {
    -
    -    axiom = "F";
    -
    -    rule = "F+F-F";
    -
    -    startLength = 90.0;
    -
    -    theta = radians(120.0);
    -
    -    reset();
    -
    -  }
    -
    -
    -
    -  void reset() {
    -
    -    production = axiom;
    -
    -    drawLength = startLength;
    -
    -    generations = 0;
    -
    -  }
    -
    -
    -
    -  int getAge() {
    -
    -    return generations;
    -
    -  }
    -
    -
    -
    -  void render() {
    -
    -    translate(width/2, height/2);
    -
    -    steps += 5;          
    -
    -    if (steps > production.length()) {
    -
    -      steps = production.length();
    -
    -    }
    -
    -    for (int i = 0; i < steps; i++) {
    -
    -      char step = production.charAt(i);
    -
    -      if (step == 'F') {
    -
    -        rect(0, 0, -drawLength, -drawLength);
    -
    -        noFill();
    -
    -        translate(0, -drawLength);
    -
    -      } 
    -
    -      else if (step == '+') {
    -
    -        rotate(theta);
    -
    -      } 
    -
    -      else if (step == '-') {
    -
    -        rotate(-theta);
    -
    -      } 
    -
    -      else if (step == '[') {
    -
    -        pushMatrix();
    -
    -      } 
    -
    -      else if (step == ']') {
    -
    -        popMatrix();            
    -
    -      }
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void simulate(int gen) {
    -
    -    while (getAge() < gen) {
    -
    -      production = iterate(production, rule);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  String iterate(String prod_, String rule_) {
    -
    -    drawLength = drawLength * 0.6;
    -
    -    generations++;
    -
    -    String newProduction = prod_;          
    -
    -    newProduction = newProduction.replaceAll("F", rule_);
    -
    -    return newProduction;
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -class PenroseLSystem extends LSystem {
    -
    -
    -
    -  int steps = 0;
    -
    -  float somestep = 0.1;
    -
    -  String ruleW;
    -
    -  String ruleX;
    -
    -  String ruleY;
    -
    -  String ruleZ;
    -
    -
    -
    -  PenroseLSystem() {
    -
    -    axiom = "[X]++[X]++[X]++[X]++[X]";
    -
    -    ruleW = "YF++ZF4-XF[-YF4-WF]++";
    -
    -    ruleX = "+YF--ZF[3-WF--XF]+";
    -
    -    ruleY = "-WF++XF[+++YF++ZF]-";
    -
    -    ruleZ = "--YF++++WF[+ZF++++XF]--XF";
    -
    -    startLength = 200.0;
    -
    -    theta = radians(36);  
    -
    -    reset();
    -
    -  }
    -
    -
    -
    -  void useRule(String r_) {
    -
    -    rule = r_;
    -
    -  }
    -
    -
    -
    -  void useAxiom(String a_) {
    -
    -    axiom = a_;
    -
    -  }
    -
    -
    -
    -  void useLength(float l_) {
    -
    -    startLength = l_;
    -
    -  }
    -
    -
    -
    -  void useTheta(float t_) {
    -
    -    theta = radians(t_);
    -
    -  }
    -
    -
    -
    -  void reset() {
    -
    -    production = axiom;
    -
    -    drawLength = startLength;
    -
    -    generations = 0;
    -
    -  }
    -
    -
    -
    -  int getAge() {
    -
    -    return generations;
    -
    -  }
    -
    -
    -
    -  void render() {
    -
    -    translate(width/2, height/2);
    -
    -    int pushes = 0;
    -
    -    int repeats = 1;
    -
    -    steps += 12;          
    -
    -    if (steps > production.length()) {
    -
    -      steps = production.length();
    -
    -    }
    -
    -
    -
    -    for (int i = 0; i < steps; i++) {
    -
    -      char step = production.charAt(i);
    -
    -      if (step == 'F') {
    -
    -        stroke(255, 60);
    -
    -        for (int j = 0; j < repeats; j++) {
    -
    -          line(0,0,0, -drawLength);
    -
    -          noFill();
    -
    -          translate(0, -drawLength);
    -
    -        }
    -
    -        repeats = 1;
    -
    -      } 
    -
    -      else if (step == '+') {
    -
    -        for (int j = 0; j < repeats; j++) {
    -
    -          rotate(theta);
    -
    -        }
    -
    -        repeats = 1;
    -
    -      } 
    -
    -      else if (step == '-') {
    -
    -        for (int j =0; j < repeats; j++) {
    -
    -          rotate(-theta);
    -
    -        }
    -
    -        repeats = 1;
    -
    -      } 
    -
    -      else if (step == '[') {
    -
    -        pushes++;            
    -
    -        pushMatrix();
    -
    -      } 
    -
    -      else if (step == ']') {
    -
    -        popMatrix();
    -
    -        pushes--;
    -
    -      } 
    -
    -      else if ( (step >= 48) && (step <= 57) ) {
    -
    -        repeats = (int)step - 48;
    -
    -      }
    -
    -    }
    -
    -
    -
    -    // Unpush if we need too
    -
    -    while (pushes > 0) {
    -
    -      popMatrix();
    -
    -      pushes--;
    -
    -    }
    -
    -  }
    -
    -
    -
    -  String iterate(String prod_, String rule_) {
    -
    -    String newProduction = "";
    -
    -    for (int i = 0; i < prod_.length(); i++) {
    -
    -      char step = production.charAt(i);
    -
    -      if (step == 'W') {
    -
    -        newProduction = newProduction + ruleW;
    -
    -      } 
    -
    -      else if (step == 'X') {
    -
    -        newProduction = newProduction + ruleX;
    -
    -      }
    -
    -      else if (step == 'Y') {
    -
    -        newProduction = newProduction + ruleY;
    -
    -      }  
    -
    -      else if (step == 'Z') {
    -
    -        newProduction = newProduction + ruleZ;
    -
    -      } 
    -
    -      else {
    -
    -        if (step != 'F') {
    -
    -          newProduction = newProduction + step;
    -
    -        }
    -
    -      }
    -
    -    }
    -
    -
    -
    -    drawLength = drawLength * 0.5;
    -
    -    generations++;
    -
    -    return newProduction;
    -
    -  }
    -
    -
    -
    -}
    - - - - - diff --git a/learning/topic/pentigree/index.html b/learning/topic/pentigree/index.html deleted file mode 100644 index 32b0084..0000000 --- a/learning/topic/pentigree/index.html +++ /dev/null @@ -1,717 +0,0 @@ ---- -layout: default ---- -

    Pentigree

    - - - -

    - - - -

    Original Processing.org Example: Pentigree
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/** 
    -
    - * Pentigree L-System 
    -
    - * by Geraldine Sarmiento (Interactive Telecommunications Program, NYU). 
    -
    - * This code was based on Patrick Dwyer's L-System class. 
    -
    - */
    -
    -
    -
    -PentigreeLSystem ps;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  frameRate(24);
    -
    -  smooth();
    -
    -  ps = new PentigreeLSystem();
    -
    -  ps.simulate(3);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(0);
    -
    -  ps.render();
    -
    -}
    -
    -
    -
    -
    -
    -class LSystem {
    -
    -
    -
    -  int steps = 0;
    -
    -
    -
    -  String axiom;
    -
    -  String rule;
    -
    -  String production;
    -
    -
    -
    -  float startLength;
    -
    -  float drawLength;
    -
    -  float theta;
    -
    -
    -
    -  int generations;
    -
    -
    -
    -  LSystem() {
    -
    -
    -
    -    axiom = "F";
    -
    -    rule = "F+F-F";
    -
    -    startLength = 90.0f;
    -
    -    theta = radians(120.0);
    -
    -    reset();
    -
    -  }
    -
    -
    -
    -  void reset() {
    -
    -    production = axiom;
    -
    -    drawLength = startLength;
    -
    -    generations = 0;
    -
    -  }
    -
    -
    -
    -  int getAge() {
    -
    -    return generations;
    -
    -  }
    -
    -  
    -
    -  void render() {
    -
    -    translate(width/2, height/2);
    -
    -    steps += 5;          
    -
    -    if (steps > production.length()) {
    -
    -      steps = production.length();
    -
    -    }
    -
    -    for (int i = 0; i < steps; i++) {
    -
    -      char step = production.charAt(i);
    -
    -      if (step == 'F') {
    -
    -        rect(0, 0, -drawLength, -drawLength);
    -
    -        noFill();
    -
    -        translate(0, -drawLength);
    -
    -      } 
    -
    -      else if (step == '+') {
    -
    -        rotate(theta);
    -
    -      } 
    -
    -      else if (step == '-') {
    -
    -        rotate(-theta);
    -
    -      } 
    -
    -      else if (step == '[') {
    -
    -        pushMatrix();
    -
    -      } 
    -
    -      else if (step == ']') {
    -
    -        popMatrix();            
    -
    -      }
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  void simulate(int gen) {
    -
    -    while (getAge() < gen) {
    -
    -      production = iterate(production, rule);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  String iterate(String prod_, String rule_) {
    -
    -    drawLength = drawLength * 0.6;
    -
    -    generations++;
    -
    -    String newProduction = prod_;          
    -
    -    newProduction = newProduction.replaceAll("F", rule_);
    -
    -    return newProduction;
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -class PentigreeLSystem extends LSystem {
    -
    -
    -
    -  int steps = 0;
    -
    -  float somestep = 0.1;
    -
    -  float xoff = 0.01;
    -
    -
    -
    -  PentigreeLSystem() {
    -
    -    axiom = "F-F-F-F-F";
    -
    -    rule = "F-F++F+F-F-F";
    -
    -    startLength = 40.0;
    -
    -    theta = radians(72);  
    -
    -    reset();
    -
    -  }
    -
    -
    -
    -  void useRule(String r_) {
    -
    -    rule = r_;
    -
    -  }
    -
    -
    -
    -  void useAxiom(String a_) {
    -
    -    axiom = a_;
    -
    -  }
    -
    -
    -
    -  void useLength(float l_) {
    -
    -    startLength = l_;
    -
    -  }
    -
    -
    -
    -  void useTheta(float t_) {
    -
    -    theta = radians(t_);
    -
    -  }
    -
    -
    -
    -  void reset() {
    -
    -    production = axiom;
    -
    -    drawLength = startLength;
    -
    -    generations = 0;
    -
    -  }
    -
    -
    -
    -  int getAge() {
    -
    -    return generations;
    -
    -  }
    -
    -
    -
    -  void render() {
    -
    -    translate(width/4, height/2);
    -
    -    steps += 3;          
    -
    -    if (steps > production.length()) {
    -
    -      steps = production.length();
    -
    -    }
    -
    -
    -
    -    for (int i = 0; i < steps; i++) {
    -
    -      char step = production.charAt(i);
    -
    -      if (step == 'F') {
    -
    -        noFill();
    -
    -        stroke(255);
    -
    -        line(0, 0, 0, -drawLength);
    -
    -        translate(0, -drawLength);
    -
    -      } 
    -
    -      else if (step == '+') {
    -
    -        rotate(theta);
    -
    -      } 
    -
    -      else if (step == '-') {
    -
    -        rotate(-theta);
    -
    -      } 
    -
    -      else if (step == '[') {
    -
    -        pushMatrix();
    -
    -      } 
    -
    -      else if (step == ']') {
    -
    -        popMatrix();
    -
    -      }
    -
    -    }
    -
    -  }
    -
    -
    -
    -}
    - - - - - diff --git a/learning/topic/pixelarray/data/ystone08.jpg b/learning/topic/pixelarray/data/ystone08.jpg deleted file mode 100644 index 5428ada881a3ae39edb69383572db91d70f72880..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56999 zcmcG#1ymec(=OaI0}Sr&8XN+_-C>a6PC{^o!7V`W5CQ~u3GN<(1qd-bKyde9fdIh? z{tr3td(Qjab-#PRb=Uf9R_}hMs`jqh(!F+9b>B|kE(7?gN-!k=1O@>r$RBXKOGKz; z@8ap=VejHf|A6N{AR-6Tfb3%G*m$@&dU?WKoB<@^-{}G%eiM?v_Ho~)xM+|$eYZw=Z%_KvW$+~Lli^h%Bv zb{@!j7JXORmUK|KAei2eOs_A7p>#03A))3vO+5*Hz?f z-t__i%lvf!e~mFMj=qjMy^FVvyZgTs?`H5X86}#oBi!n*+P+BUU%kH*13>S;4s5^| zumK#AKNsLB-~o6d&(27W2vYvW1wSWU|lB{1p5I}NB}`$Aml@p)wUpFbPM4}BTmS#lVf5g(fMroK)^k8L>|hL zsJp*%VC5l5TJZMyJ%uDaYsD{xo%%(6yjG8tSd)uhG^BKnuN@aRc1^6G z7}$D;rkq(uqPcYejt_Pn++5yYSz8!1|91 zx3d5?-Z@q`+H385KYDe?+=yHIG_Z`O*!gspHDb;ZxXF;qUI_-WWiA1%|+~O zI!hmij~hM;UY0FjmIXtvg^HTzU;cvPR@8Yrq2`^d-vah6luZWYO2eirltWoxo4o|c zLcdU`P}c39&@i3RwN#zm0$=YPtd10&M{NS(w&j@!!?#90MqXVal2k6J$Uo^G`a(heON{3>?AdBQMD z8nL>et@d15<=HEK zldH8&4-?$6ff%m`S7|{@iShsp9|hF&ayfi=Ax;Wp%*`{*FF20pas$IzPSc2_%9uNfsl3rfe1J)?9n)Fn>=d&fnmj-P*WBoxj6S%Oilp$6%)$^9e;_d4hWG^A_ggj@_K1Nw(*e5WI z3^m^ZjO$+m9&gWd)mCg`Ra)g|(x5m`uMfZUt45@s6YMe*0#Z~-D^d&={4tc=Nhwy- zLc!RF3kpF?__Jr?iDr0Q%yfJ1_`=TEh-Jv0l;m|aY}{bi@v?6`;VQ29ymv+!GuOyt z)?}mUVOCxOU90!5c10zH_vt BG*LI1NqRanBK{;9P)4Zb9qE{lJobz2M@SVIl(l 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
    VZ)hr}3RJL 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 diff --git a/learning/topic/pixelarray/index.html b/learning/topic/pixelarray/index.html deleted file mode 100644 index 5e6233b..0000000 --- a/learning/topic/pixelarray/index.html +++ /dev/null @@ -1,185 +0,0 @@ ---- -layout: default ---- -

    PixelArray

    - - - -

    Click and drag the mouse up and down to control the signal and - -press and hold any key to see the current pixel being read. - -This program sequentially reads the color of every pixel of an image - -and displays this color to fill the window.

    - - - -

    Original Processing.org Example: PixelArray
    - -

    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/ystone08.jpg"; crisp="true"; */
    -
    -PImage img;
    -
    -int direction = 1;
    -
    -float signal;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  noFill();
    -
    -  stroke(255);
    -
    -  frameRate(30);
    -
    -  img = loadImage("data/ystone08.jpg");
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  if (signal > img.width*img.height-1 || signal < 0) { 
    -
    -    direction = direction * -1; 
    -
    -  }
    -
    -
    -
    -  if (mousePressed) {
    -
    -    int mx = constrain(mouseX, 0, img.width-1);
    -
    -    int my = constrain(mouseY, 0, img.height-1);
    -
    -    signal = my*img.width + mx;
    -
    -  } else {
    -
    -    signal += 0.33*direction;
    -
    -  }
    -
    -
    -
    -  int sx = int(signal) % img.width;
    -
    -  int sy = int(signal) / img.width;
    -
    -
    -
    -  if (keyPressed) {
    -
    -    set(0, 0, img);  // fast way to draw an image
    -
    -    point(sx, sy);
    -
    -    rect(sx - 5, sy - 5, 10, 10);
    -
    -  } else {
    -
    -    color c = img.get(sx, sy);
    -
    -    background(c);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/puff/index.html b/learning/topic/puff/index.html deleted file mode 100644 index c60fe7b..0000000 --- a/learning/topic/puff/index.html +++ /dev/null @@ -1,353 +0,0 @@ ---- -layout: default ---- -

    Puff

    - - - -

    by Ira Greenberg. - - - -Series of ellipses simulating a multi-segmented - -organism, utilizing a follow the leader algorithm. - -Collision detection occurs on the organism's head, - -controlling overall direction, and on the individual - -body segments, controlling body shape and jitter.

    - - - -

    Original Processing.org Example: Puff
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// for puff head
    -
    -float headX;
    -
    -float headY;
    -
    -float speedX = .7;
    -
    -float speedY = .9;
    -
    -
    -
    -// for puff body
    -
    -int cells = 1000;
    -
    -float[]px= new float[cells];
    -
    -float[]py= new float[cells];
    -
    -float[]radiiX = new float[cells];
    -
    -float[]radiiY = new float[cells];
    -
    -float[]angle = new float[cells];
    -
    -float[]frequency = new float[cells];
    -
    -float[]cellRadius = new float[cells];
    -
    -
    -
    -void setup(){
    -
    -  
    -
    -  size(200, 200);
    -
    -  // begin in the center
    -
    -  headX = width/2;
    -
    -  headY = height/2;
    -
    -
    -
    -  //fill body arrays
    -
    -  for (int i=0; i< cells; i++){
    -
    -    radiiX[i] = random(-7, 7); 
    -
    -    radiiY[i] = random(-4, 4);
    -
    -    frequency[i]= random(-9, 9);
    -
    -    cellRadius[i] = random(16, 30);
    -
    -  }
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw(){
    -
    -  background(0);
    -
    -  noStroke();
    -
    -  fill(255, 255, 255, 5);
    -
    -
    -
    -  //follow the leader
    -
    -  for (int i =0; i< cells; i++){
    -
    -    if (i==0){
    -
    -      px[i] = headX+sin(radians(angle[i]))*radiiX[i];
    -
    -      py[i] = headY+cos(radians(angle[i]))*radiiY[i];
    -
    -    } 
    -
    -    else{
    -
    -      px[i] = px[i-1]+cos(radians(angle[i]))*radiiX[i];
    -
    -      py[i] = py[i-1]+sin(radians(angle[i]))*radiiY[i];
    -
    -
    -
    -      //check collision of body
    -
    -      if (px[i] >= width-cellRadius[i]/2 || px[i] <= cellRadius[i]/2){
    -
    -        radiiX[i]*=-1;
    -
    -        cellRadius[i] = random(1, 40);
    -
    -        frequency[i]= random(-13, 13);
    -
    -      }
    -
    -      if (py[i] >= height-cellRadius[i]/2 || py[i] <= cellRadius[i]/2){
    -
    -        radiiY[i]*=-1;
    -
    -        cellRadius[i] = random(1, 40);
    -
    -        frequency[i]= random(-9, 9);
    -
    -      }
    -
    -    }
    -
    -    // draw puff
    -
    -    ellipse(px[i],  py[i],  cellRadius[i],  cellRadius[i]);
    -
    -    // set speed of body
    -
    -    angle[i]+=frequency[i];
    -
    -  }
    -
    -
    -
    -  // set velocity of head
    -
    -  headX+=speedX;
    -
    -  headY+=speedY;
    -
    -
    -
    -  //check boundary collision of head
    -
    -  if (headX >= width-cellRadius[0]/2 || headX <=cellRadius[0]/2){
    -
    -    speedX*=-1;
    -
    -  }
    -
    -  if (headY >= height-cellRadius[0]/2 || headY <= cellRadius[0]/2){
    -
    -    speedY*=-1;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/pulses/index.html b/learning/topic/pulses/index.html deleted file mode 100644 index 99bd2e3..0000000 --- a/learning/topic/pulses/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -layout: default ---- -

    Pulses

    - - - -

    Software drawing instruments can follow a rhythm or abide by rules independent - -of drawn gestures. This is a form of collaborative drawing in which the draftsperson - -controls some aspects of the image and the software controls others.

    - - - -

    Original Processing.org Example: Pulses
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int angle = 0;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  background(102);
    -
    -  smooth();
    -
    -  noStroke();
    -
    -  fill(0, 102);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  // Draw only when mouse is pressed
    -
    -  if (mousePressed == true) {
    -
    -    angle += 10;
    -
    -    float val = cos(radians(angle)) * 6.0;
    -
    -    for (int a = 0; a < 360; a += 75) {
    -
    -      float xoff = cos(radians(a)) * val;
    -
    -      float yoff = sin(radians(a)) * val;
    -
    -      fill(0);
    -
    -      ellipse(mouseX + xoff, mouseY + yoff, val/2, val/2);
    -
    -    }
    -
    -    fill(255);
    -
    -    ellipse(mouseX, mouseY, 2, 2);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/reach1/index.html b/learning/topic/reach1/index.html deleted file mode 100644 index 5ad89b3..0000000 --- a/learning/topic/reach1/index.html +++ /dev/null @@ -1,191 +0,0 @@ ---- -layout: default ---- -

    Reach1

    - - - -

    Based on code from Keith Peters (www.bit-101.com) - - - -The arm follows the position of the mouse by - -calculating the angles with atan2().

    - - - -

    Original Processing.org Example: Reach1
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float x = 100;
    -
    -float y = 100;
    -
    -float x2 = 100;
    -
    -float y2 = 100;
    -
    -float segLength = 30;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  smooth(); 
    -
    -  strokeWeight(20.0);
    -
    -  stroke(0, 100);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(226);
    -
    -  
    -
    -  float dx = mouseX - x;
    -
    -  float dy = mouseY - y;
    -
    -  float angle1 = atan2(dy, dx);  
    -
    -  
    -
    -  float tx = mouseX - cos(angle1) * segLength;
    -
    -  float ty = mouseY - sin(angle1) * segLength;
    -
    -  dx = tx - x2;
    -
    -  dy = ty - y2;
    -
    -  float angle2 = atan2(dy, dx);  
    -
    -  x = x2 + cos(angle2) * segLength;
    -
    -  y = y2 + sin(angle2) * segLength;
    -
    -  
    -
    -  segment(x, y, angle1); 
    -
    -  segment(x2, y2, angle2); 
    -
    -}
    -
    -
    -
    -void segment(float x, float y, float a) {
    -
    -  pushMatrix();
    -
    -  translate(x, y);
    -
    -  rotate(a);
    -
    -  line(0, 0, segLength, 0);
    -
    -  popMatrix();
    -
    -}
    - - - - - diff --git a/learning/topic/reach2/index.html b/learning/topic/reach2/index.html deleted file mode 100644 index 9b31cba..0000000 --- a/learning/topic/reach2/index.html +++ /dev/null @@ -1,243 +0,0 @@ ---- -layout: default ---- -

    Reach2

    - - - -

    Based on code from Keith Peters (www.bit-101.com) - - - -The arm follows the position of the mouse by - -calculating the angles with atan2().

    - - - -

    Original Processing.org Example: Reach2
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int numSegments = 10;
    -
    -float[] x = new float[numSegments];
    -
    -float[] y = new float[numSegments];
    -
    -float[] angle = new float[numSegments];
    -
    -float segLength = 20;
    -
    -float targetX, targetY;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  smooth(); 
    -
    -  strokeWeight(20.0);
    -
    -  stroke(0, 100);
    -
    -  x[x.length-1] = 0;     // Set base x-coordinate
    -
    -  y[x.length-1] = height;  // Set base y-coordinate
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(226);
    -
    -  
    -
    -  reachSegment(0, mouseX, mouseY);
    -
    -  for(int i=1; i<numSegments; i++) {
    -
    -    reachSegment(i, targetX, targetY);
    -
    -  }
    -
    -  for(int i=x.length-1; i>=1; i--) {
    -
    -    positionSegment(i, i-1);  
    -
    -  } 
    -
    -  for(int i=0; i<x.length; i++) {
    -
    -    segment(x[i], y[i], angle[i], (i+1)*2); 
    -
    -  }
    -
    -}
    -
    -
    -
    -void positionSegment(int a, int b) {
    -
    -  x[b] = x[a] + cos(angle[a]) * segLength;
    -
    -  y[b] = y[a] + sin(angle[a]) * segLength; 
    -
    -}
    -
    -
    -
    -void reachSegment(int i, float xin, float yin) {
    -
    -  float dx = xin - x[i];
    -
    -  float dy = yin - y[i];
    -
    -  angle[i] = atan2(dy, dx);  
    -
    -  targetX = xin - cos(angle[i]) * segLength;
    -
    -  targetY = yin - sin(angle[i]) * segLength;
    -
    -}
    -
    -
    -
    -void segment(float x, float y, float a, float sw) {
    -
    -  strokeWeight(sw);
    -
    -  pushMatrix();
    -
    -  translate(x, y);
    -
    -  rotate(a);
    -
    -  line(0, 0, segLength, 0);
    -
    -  popMatrix();
    -
    -}
    - - - - - diff --git a/learning/topic/reach3/index.html b/learning/topic/reach3/index.html deleted file mode 100644 index 4e72294..0000000 --- a/learning/topic/reach3/index.html +++ /dev/null @@ -1,311 +0,0 @@ ---- -layout: default ---- -

    Reach3

    - - - -

    Based on code from Keith Peters (www.bit-101.com) - - - -The arm follows the position of the ball by - -calculating the angles with atan2().

    - - - -

    Original Processing.org Example: Reach3
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int numSegments = 6;
    -
    -float[] x = new float[numSegments];
    -
    -float[] y = new float[numSegments];
    -
    -float[] angle = new float[numSegments];
    -
    -float segLength = 15;
    -
    -float targetX, targetY;
    -
    -
    -
    -float ballX = 50;
    -
    -float ballY = 50;
    -
    -int ballXDirection = 1;
    -
    -int ballYDirection = -1;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  smooth(); 
    -
    -  strokeWeight(20.0);
    -
    -  stroke(0, 100);
    -
    -  noFill();
    -
    -  x[x.length-1] = width/2;     // Set base x-coordinate
    -
    -  y[x.length-1] = height;  // Set base y-coordinate
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(226);
    -
    -  
    -
    -  strokeWeight(20);
    -
    -  ballX = ballX + 1.0 * ballXDirection;
    -
    -  ballY = ballY + 0.8 * ballYDirection;
    -
    -  if(ballX > width-25 || ballX < 25) {
    -
    -    ballXDirection *= -1; 
    -
    -  }
    -
    -  if(ballY > height-25 || ballY < 25) {
    -
    -    ballYDirection *= -1; 
    -
    -  }
    -
    -  ellipse(ballX, ballY, 30, 30);
    -
    -  
    -
    -  reachSegment(0, ballX, ballY);
    -
    -  for(int i=1; i<numSegments; i++) {
    -
    -    reachSegment(i, targetX, targetY);
    -
    -  }
    -
    -  for(int i=x.length-1; i>=1; i--) {
    -
    -    positionSegment(i, i-1);  
    -
    -  } 
    -
    -  for(int i=0; i<x.length; i++) {
    -
    -    segment(x[i], y[i], angle[i], (i+1)*2); 
    -
    -  }
    -
    -}
    -
    -
    -
    -void positionSegment(int a, int b) {
    -
    -  x[b] = x[a] + cos(angle[a]) * segLength;
    -
    -  y[b] = y[a] + sin(angle[a]) * segLength; 
    -
    -}
    -
    -
    -
    -void reachSegment(int i, float xin, float yin) {
    -
    -  float dx = xin - x[i];
    -
    -  float dy = yin - y[i];
    -
    -  angle[i] = atan2(dy, dx);  
    -
    -  targetX = xin - cos(angle[i]) * segLength;
    -
    -  targetY = yin - sin(angle[i]) * segLength;
    -
    -}
    -
    -
    -
    -void segment(float x, float y, float a, float sw) {
    -
    -  strokeWeight(sw);
    -
    -  pushMatrix();
    -
    -  translate(x, y);
    -
    -  rotate(a);
    -
    -  line(0, 0, segLength, 0);
    -
    -  popMatrix();
    -
    -}
    - - - - - diff --git a/learning/topic/reflection1/index.html b/learning/topic/reflection1/index.html deleted file mode 100644 index 439fc8b..0000000 --- a/learning/topic/reflection1/index.html +++ /dev/null @@ -1,513 +0,0 @@ ---- -layout: default ---- -

    Reflection1

    - - - -

    by Ira Greenberg. - - - -Based on the equation (R = 2N(N*L)-L) where R is the - -reflection vector, N is the normal, and L is the incident - -vector.

    - - - -

    Original Processing.org Example: Reflection1
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    - float baseX1, baseY1, baseX2, baseY2;
    -
    -float baseLength;
    -
    -float[] xCoords, yCoords;
    -
    -float ellipseX, ellipseY, ellipseRadius = 6;
    -
    -float directionX, directionY;
    -
    -float ellipseSpeed = 3.5;
    -
    -float velocityX, velocityY; 
    -
    -
    -
    -void setup(){
    -
    -  size(200, 200);
    -
    -  frameRate(30);
    -
    -  fill(128);
    -
    -  smooth();
    -
    -  baseX1 = 0;
    -
    -  baseY1 = height-150;
    -
    -  baseX2 = width;
    -
    -  baseY2 = height;
    -
    -
    -
    -  // start ellipse at middle top of screen
    -
    -  ellipseX = width/2;
    -
    -  
    -
    -  // calculate initial random direction
    -
    -  directionX = random(0.1, 0.99);
    -
    -  directionY = random(0.1, 0.99);
    -
    -
    -
    -  // normalize direction vector
    -
    -  float directionVectLength = sqrt(directionX*directionX + 
    -
    -            directionY*directionY);
    -
    -  directionX /= directionVectLength;
    -
    -  directionY /= directionVectLength;
    -
    -}
    -
    -
    -
    -void draw(){
    -
    -  // draw background
    -
    -  fill(0, 12);
    -
    -  noStroke();
    -
    -  rect(0, 0, width, height);
    -
    -
    -
    -  // calculate length of base top
    -
    -  baseLength = dist(baseX1, baseY1, baseX2, baseY2);
    -
    -  xCoords = new float[ceil(baseLength)];
    -
    -  yCoords = new float[ceil(baseLength)];
    -
    -
    -
    -  // fill base top coordinate array
    -
    -  for (int i=0; i<xCoords.length; i++){
    -
    -    xCoords[i] = baseX1 + ((baseX2-baseX1)/baseLength)*i;
    -
    -    yCoords[i] = baseY1 + ((baseY2-baseY1)/baseLength)*i;
    -
    -  }
    -
    -
    -
    -  // draw base
    -
    -  fill(200);
    -
    -  quad(baseX1, baseY1, baseX2, baseY2, baseX2, height, 0, height);
    -
    -
    -
    -  // calculate base top normal
    -
    -  float baseDeltaX = (baseX2-baseX1)/baseLength;
    -
    -  float baseDeltaY = (baseY2-baseY1)/baseLength;
    -
    -  float normalX = -baseDeltaY;
    -
    -  float normalY = baseDeltaX;
    -
    -
    -
    -  // draw ellipse
    -
    -  noFill();
    -
    -  stroke(200);
    -
    -  ellipse(ellipseX, ellipseY, ellipseRadius*2, ellipseRadius*2);
    -
    -
    -
    -  // calculate ellipse velocity
    -
    -  velocityX = directionX * ellipseSpeed;
    -
    -  velocityY = directionY * ellipseSpeed;
    -
    -
    -
    -  // move elipse
    -
    -  ellipseX += velocityX;
    -
    -  ellipseY += velocityY;
    -
    -
    -
    -  // normalized incidence vector
    -
    -  float incidenceVectorX = -directionX;
    -
    -  float incidenceVectorY = -directionY;
    -
    -
    -
    -  // detect and handle collision
    -
    -  for (int i=0; i<xCoords.length; i++){
    -
    -    // check distance between ellipse and base top coordinates
    -
    -    if (dist(ellipseX, ellipseY, xCoords[i], yCoords[i]) < ellipseRadius){
    -
    -
    -
    -      // calculate dot product of incident vector and base top normal 
    -
    -      float dot = incidenceVectorX*normalX + incidenceVectorY*normalY;
    -
    -
    -
    -      // calculate reflection vector
    -
    -      float reflectionVectorX = 2*normalX*dot - incidenceVectorX;
    -
    -      float reflectionVectorY = 2*normalY*dot - incidenceVectorY;
    -
    -
    -
    -      // assign reflection vector to direction vector
    -
    -      directionX = reflectionVectorX;
    -
    -      directionY = reflectionVectorY;
    -
    -
    -
    -      // draw base top normal at collision point
    -
    -      stroke(255, 128, 0);
    -
    -      line(ellipseX, ellipseY, ellipseX-normalX*100, 
    -
    -            ellipseY-normalY*100);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  // detect boundary collision
    -
    -  // right
    -
    -  if (ellipseX > width-ellipseRadius){
    -
    -    ellipseX = width-ellipseRadius;
    -
    -    directionX *= -1;
    -
    -  }
    -
    -  // left 
    -
    -  if (ellipseX < ellipseRadius){
    -
    -    ellipseX = ellipseRadius;
    -
    -    directionX *= -1;
    -
    -  }
    -
    -  // top
    -
    -  if (ellipseY < ellipseRadius){
    -
    -    ellipseY = ellipseRadius;
    -
    -    directionY *= -1;
    -
    -    // randomize base top
    -
    -    baseY1 = random(height-100, height);
    -
    -    baseY2 = random(height-100, height);
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/reflection2/index.html b/learning/topic/reflection2/index.html deleted file mode 100644 index 4c2a729..0000000 --- a/learning/topic/reflection2/index.html +++ /dev/null @@ -1,701 +0,0 @@ ---- -layout: default ---- -

    Reflection2

    - - - -

    by Ira Greenberg. - - - -Based on Keith Peter's Solution in - -Foundation Actionscript Animation: Making Things Move! - -http://www.friendsofed.com/book.html?isbn=1590597915

    - - - -

    Original Processing.org Example: Reflection2
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -Orb orb;
    -
    -Vect2D velocity;
    -
    -float gravity = .05, damping = 0.8;
    -
    -int segments = 40;
    -
    -Ground[] ground = new Ground[segments];
    -
    -float[] peakHeights = new float[segments+1];
    -
    -
    -
    -void setup(){
    -
    -  size(200, 200);
    -
    -  smooth();
    -
    -  orb = new Orb(50, 50, 3);
    -
    -  velocity = new Vect2D(.5, 0);
    -
    -
    -
    -  // calculate ground peak heights 
    -
    -  for (int i=0; i<peakHeights.length; i++){
    -
    -    peakHeights[i] = random(height-40, height-30);
    -
    -  }
    -
    -
    -
    -  /* float value required for segment width (segs)
    -
    -   calculations so the ground spans the entire 
    -
    -   display window, regardless of segment number. */
    -
    -  float segs = segments;
    -
    -  for (int i=0; i<segments; i++){
    -
    -    ground[i]  = new Ground(width/segs*i, peakHeights[i],
    -
    -    width/segs*(i+1), peakHeights[i+1]);
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -void draw(){
    -
    -  // background
    -
    -  noStroke();
    -
    -  fill(0, 15);
    -
    -  rect(0, 0, width, height);
    -
    -
    -
    -  // move orb
    -
    -  orb.x += velocity.vx;
    -
    -  velocity.vy += gravity;
    -
    -  orb.y += velocity.vy;
    -
    -
    -
    -  // draw ground
    -
    -  fill(127);
    -
    -  beginShape();
    -
    -  for (int i=0; i<segments; i++){
    -
    -    vertex(ground[i].x1, ground[i].y1);
    -
    -    vertex(ground[i].x2, ground[i].y2);
    -
    -  }
    -
    -  vertex(ground[segments-1].x2, height);
    -
    -  vertex(ground[0].x1, height);
    -
    -  endShape(CLOSE);
    -
    -
    -
    -  // draw orb
    -
    -  noStroke();
    -
    -  fill(200);
    -
    -  ellipse(orb.x, orb.y, orb.r*2, orb.r*2);
    -
    -
    -
    -  // collision detection
    -
    -  checkWallCollision();
    -
    -  for (int i=0; i<segments; i++){
    -
    -    checkGroundCollision(ground[i]);
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -void checkWallCollision(){
    -
    -  if (orb.x > width-orb.r){
    -
    -    orb.x = width-orb.r;
    -
    -    velocity.vx *= -1;
    -
    -    velocity.vx *= damping;
    -
    -  } 
    -
    -  else if (orb.x < orb.r){
    -
    -    orb.x = orb.r;
    -
    -    velocity.vx *= -1;
    -
    -    velocity.vx *= damping;
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -void checkGroundCollision(Ground groundSegment) {
    -
    -
    -
    -  // get difference between orb and ground
    -
    -  float deltaX = orb.x - groundSegment.x;
    -
    -  float deltaY = orb.y - groundSegment.y;
    -
    -
    -
    -  // precalculate trig values
    -
    -  float cosine = cos(groundSegment.rot);
    -
    -  float sine = sin(groundSegment.rot);
    -
    -
    -
    -  /* rotate ground and velocity to allow 
    -
    -   orthogonal collision calculations */
    -
    -  float groundXTemp = cosine * deltaX + sine * deltaY;
    -
    -  float groundYTemp = cosine * deltaY - sine * deltaX;
    -
    -  float velocityXTemp = cosine * velocity.vx + sine * velocity.vy;
    -
    -  float velocityYTemp = cosine * velocity.vy - sine * velocity.vx;
    -
    -
    -
    -  /* ground collision - check for surface 
    -
    -   collision and also that orb is within 
    -
    -   left/rights bounds of ground segment */
    -
    -  if (groundYTemp > -orb.r &&
    -
    -    orb.x > groundSegment.x1 &&
    -
    -    orb.x < groundSegment.x2 ){
    -
    -    // keep orb from going into ground
    -
    -    groundYTemp = -orb.r;
    -
    -    // bounce and slow down orb
    -
    -    velocityYTemp *= -1.0;
    -
    -    velocityYTemp *= damping;
    -
    -  }
    -
    -
    -
    -  // reset ground, velocity and orb
    -
    -  deltaX = cosine * groundXTemp - sine * groundYTemp;
    -
    -  deltaY = cosine * groundYTemp + sine * groundXTemp;
    -
    -  velocity.vx = cosine * velocityXTemp - sine * velocityYTemp;
    -
    -  velocity.vy = cosine * velocityYTemp + sine * velocityXTemp;
    -
    -  orb.x = groundSegment.x + deltaX;
    -
    -  orb.y = groundSegment.y + deltaY;
    -
    -}
    -
    -
    -
    -
    -
    -class Ground {
    -
    -  float x1, y1, x2, y2;  
    -
    -  float x, y, len, rot;
    -
    -
    -
    -  // default constructor
    -
    -  Ground(){
    -
    -  }
    -
    -
    -
    -  // constructor
    -
    -  Ground(float x1, float y1, float x2, float y2) {
    -
    -    this.x1 = x1;
    -
    -    this.y1 = y1;
    -
    -    this.x2 = x2;
    -
    -    this.y2 = y2;
    -
    -    x = (x1+x2)/2;
    -
    -    y = (y1+y2)/2;
    -
    -    len = dist(x1, y1, x2, y2);
    -
    -    rot = atan2((y2-y1), (x2-x1));
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -class Orb{
    -
    -  float x, y, r;
    -
    -
    -
    -  // default constructor
    -
    -  Orb() {
    -
    -  }
    -
    -
    -
    -  Orb(float x, float y, float r) {
    -
    -    this.x = x;
    -
    -    this.y = y;
    -
    -    this.r = r;
    -
    -  }
    -
    -}
    -
    -
    -
    -class Vect2D{
    -
    -  float vx, vy;
    -
    -
    -
    -  // default constructor
    -
    -  Vect2D() {
    -
    -  }
    -
    -
    -
    -  Vect2D(float vx, float vy) {
    -
    -    this.vx = vx;
    -
    -    this.vy = vy;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/rollover/index.html b/learning/topic/rollover/index.html deleted file mode 100644 index 4a0751a..0000000 --- a/learning/topic/rollover/index.html +++ /dev/null @@ -1,355 +0,0 @@ ---- -layout: default ---- -

    Rollover

    - - - -

    Roll over the colored squares in the center of the image - -to change the color of the outside rectangle. - - - -Updated 09 February 2003.

    - - - -

    Original Processing.org Example: Rollover
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int rectX, rectY;      // Position of square button
    -
    -int circleX, circleY;  // Position of circle button
    -
    -int rectSize = 50;     // Diameter of rect
    -
    -int circleSize = 53;   // Diameter of circle
    -
    -
    -
    -color rectColor;
    -
    -color circleColor;
    -
    -color baseColor;
    -
    -
    -
    -boolean rectOver = false;
    -
    -boolean circleOver = false;
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  smooth();
    -
    -  rectColor = color(0);
    -
    -  circleColor = color(255);
    -
    -  baseColor = color(102);
    -
    -  circleX = width/2+circleSize/2+10;
    -
    -  circleY = height/2;
    -
    -  rectX = width/2-rectSize-10;
    -
    -  rectY = height/2-rectSize/2;
    -
    -  ellipseMode(CENTER);
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  update(mouseX, mouseY);
    -
    -
    -
    -  noStroke();
    -
    -  if (rectOver) {
    -
    -    background(rectColor);
    -
    -  } else if (circleOver) {
    -
    -    background(circleColor);
    -
    -  } else {
    -
    -    background(baseColor);
    -
    -  }
    -
    -
    -
    -  stroke(255);
    -
    -  fill(rectColor);
    -
    -  rect(rectX, rectY, rectSize, rectSize);
    -
    -  stroke(0);
    -
    -  fill(circleColor);
    -
    -  ellipse(circleX, circleY, circleSize, circleSize);
    -
    -}
    -
    -
    -
    -void update(int x, int y)
    -
    -{
    -
    -  if( overCircle(circleX, circleY, circleSize) ) {
    -
    -    circleOver = true;
    -
    -    rectOver = false;
    -
    -  } else if ( overRect(rectX, rectY, rectSize, rectSize) ) {
    -
    -    rectOver = true;
    -
    -    circleOver = false;
    -
    -  } else {
    -
    -    circleOver = rectOver = false;
    -
    -  }
    -
    -}
    -
    -
    -
    -boolean overRect(int x, int y, int width, int height) 
    -
    -{
    -
    -  if (mouseX >= x && mouseX <= x+width && 
    -
    -      mouseY >= y && mouseY <= y+height) {
    -
    -    return true;
    -
    -  } else {
    -
    -    return false;
    -
    -  }
    -
    -}
    -
    -
    -
    -boolean overCircle(int x, int y, int diameter) 
    -
    -{
    -
    -  float disX = x - mouseX;
    -
    -  float disY = y - mouseY;
    -
    -  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) {
    -
    -    return true;
    -
    -  } else {
    -
    -    return false;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/scribbleplotter/index.html b/learning/topic/scribbleplotter/index.html deleted file mode 100644 index 7f3c9bd..0000000 --- a/learning/topic/scribbleplotter/index.html +++ /dev/null @@ -1,367 +0,0 @@ ---- -layout: default ---- -

    ScribblePlotter

    - - - -

    by Ira Greenberg. - - - -Using 2-dimensional arrays, record end points - -and replot scribbles between points.

    - - - -

    Original Processing.org Example: ScribblePlotter
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// some scribble style constants that control 
    -
    -// how the scribble plotting works
    -
    -int SCRIBBLE = 0;
    -
    -int HATCHING = 1;
    -
    -
    -
    -void setup(){
    -
    -  size(200, 200);
    -
    -  background(0);
    -
    -
    -
    -  // create arrays to hold x, y coords
    -
    -  float[]x = new float[4];
    -
    -  float[]y  = new float[4];
    -
    -  // create a convenient 2-dimensional 
    -
    -  // array to hold x, y arrays
    -
    -  float[][]xy = {x, y};
    -
    -
    -
    -  // record points
    -
    -  // x positions     
    -
    -  xy[0][0] = 25;
    -
    -  xy[0][1] = 175;
    -
    -  xy[0][2] = 175;
    -
    -  xy[0][3] = 25;
    -
    -
    -
    -  // y positions
    -
    -  xy[1][0] = 25;
    -
    -  xy[1][1] = 25;
    -
    -  xy[1][2] = 175;
    -
    -  xy[1][3] = 175;
    -
    -
    -
    -  // call plotting function
    -
    -  makeRect(xy);
    -
    -}
    -
    -
    -
    -void makeRect(float[][]pts){
    -
    -  stroke(255);
    -
    -  smooth();
    -
    -  
    -
    -  // scribble variables, that get passed as arguments to the scribble function
    -
    -  int steps = 100;
    -
    -  float scribVal = 3.0;
    -
    -  for (int i=0; i< pts[0].length; i++){
    -
    -    //plots vertices
    -
    -    strokeWeight(5);
    -
    -    point(pts[0][i], pts[1][i]);
    -
    -
    -
    -    // call scribble function
    -
    -    strokeWeight(.5);
    -
    -    if (i>0){ 
    -
    -      scribble(pts[0][i], pts[1][i], pts[0][i-1], pts[1][i-1], steps, scribVal, SCRIBBLE);
    -
    -    } 
    -
    -    if (i== pts[0].length-1){
    -
    -    // show some hatching between last 2 points
    -
    -      scribble(pts[0][i], pts[1][i], pts[0][0], pts[1][0], steps, scribVal*2, HATCHING);
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -/* 
    -
    -scribble function plots lines between end points, 
    -
    -determined by steps and scribVal arguments.
    -
    -2 styles are available: SCRIBBLE and HATCHING, which
    -
    -are interestingly only dependent on parentheses
    -
    -placement in the line() function calls.
    -
    -*/
    -
    -void scribble(float x1, float y1, float x2, float y2, int steps, float scribVal, int style){
    -
    -
    -
    -  float xStep = (x2-x1)/steps;
    -
    -  float yStep = (y2-y1)/steps;
    -
    -  for (int i = 0; i<steps; i++){
    -
    -    if(style == SCRIBBLE){
    -
    -      if (i<steps-1){
    -
    -        line(x1, y1, x1+=xStep+random(-scribVal, scribVal), y1+=yStep+random(-scribVal, scribVal));
    -
    -      } 
    -
    -      else {
    -
    -        // extra line needed to attach line back to point- not necessary in HATCHING style
    -
    -        line(x1, y1, x2, y2);
    -
    -      }
    -
    -    }
    -
    -    else if (style == HATCHING){
    -
    -       line(x1, y1, (x1+=xStep)+random(-scribVal, scribVal), (y1+=yStep)+random(-scribVal, scribVal));
    -
    -    }
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/scrollbar/data/seedBottom.jpg b/learning/topic/scrollbar/data/seedBottom.jpg deleted file mode 100644 index dd98337c95844659cef8714166bfea723e88c0a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13319 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

    J4b2l`M-Zbz-X|zQe)3X|} zziUw_IOZkK#MV3#S!WF?SG|9lf7SO58g>rNRu0?I6La)FxoTT-pukT=^wBV+bJ zR>*YzsGc9kla;N^g*KEh!!oMA^4ME7ahLxJM*O$E^M+QbNel)8ZY#NRjkMMbj$ip1 z4#l3qUtYsBSG-*E7I!Yo6qF2gRjfXa>xHFrUW($x0tiNBHSi7Sm~E@<7&j-WA!;wdBtT44yQxC{1<*0s5= z?rNNeemS`=U(M)vVUb0L+n>vBI8l-?)=5l!E$FXie&U%YOlnKJwd79a0@vMKoWmlg z5%6DF>MN0cECi**6@iWC!%(3`+4nIGvFN&o(9phf`Z*YIIhGz2^9c15sEnCx-^z71 z*pZso;I|QzJHD~r*DIbi%Gtat$|hFxvmHN&tsEZgV%x7az)D<@Z`Gqvoy$!Or(w}X zchH0w!!_$pE8Kw}OJh;0*}1j6a@xvOv;E`DvGX^Ediiedm4+_Y9+<_QYd;M2T@)M8 zPrI113jw{70Buv>=MHiE0ev0DIz z3rHQq-F^mn87V4sBU*&L1Scrollbar

    - - - -

    Move the scrollbars left and right to change the positions of the images.

    - - - -

    Original Processing.org Example: Scrollbar
    - -

    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -/* @pjs preload="data/seedTop.jpg, data/seedBottom.jpg"; */
    -
    -HScrollbar hs1, hs2;
    -
    -
    -
    -PImage top, bottom;         // Two image to load
    -
    -int topWidth, bottomWidth;  // The width of the top and bottom images
    -
    -
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke();
    -
    -  hs1 = new HScrollbar(0, 20, width, 10, 3*5+1);
    -
    -  hs2 = new HScrollbar(0, height-20, width, 10, 3*5+1);
    -
    -  top = loadImage("data/seedTop.jpg");
    -
    -  topWidth = top.width;
    -
    -  bottom = loadImage("data/seedBottom.jpg");
    -
    -  bottomWidth = bottom.width;
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  background(255);
    -
    -  
    -
    -  // Get the position of the top scrollbar
    -
    -  // and convert to a value to display the top image 
    -
    -  float topPos = hs1.getPos()-width/2;
    -
    -  fill(255);
    -
    -  image(top, width/2-topWidth/2 + topPos*2, 0);
    -
    -  
    -
    -  // Get the position of the bottom scrollbar
    -
    -  // and convert to a value to display the bottom image
    -
    -  float bottomPos = hs2.getPos()-width/2;
    -
    -  fill(255);
    -
    -  image(bottom, width/2-bottomWidth/2 + bottomPos*2, height/2);
    -
    - 
    -
    -  hs1.update();
    -
    -  hs2.update();
    -
    -  hs1.display();
    -
    -  hs2.display();
    -
    -}
    -
    -
    -
    -
    -
    -class HScrollbar
    -
    -{
    -
    -  int swidth, sheight;    // width and height of bar
    -
    -  int xpos, ypos;         // x and y position of bar
    -
    -  float spos, newspos;    // x position of slider
    -
    -  int sposMin, sposMax;   // max and min values of slider
    -
    -  int loose;              // how loose/heavy
    -
    -  boolean over;           // is the mouse over the slider?
    -
    -  boolean locked;
    -
    -  float ratio;
    -
    -
    -
    -  HScrollbar (int xp, int yp, int sw, int sh, int l) {
    -
    -    swidth = sw;
    -
    -    sheight = sh;
    -
    -    int widthtoheight = sw - sh;
    -
    -    ratio = (float)sw / (float)widthtoheight;
    -
    -    xpos = xp;
    -
    -    ypos = yp-sheight/2;
    -
    -    spos = xpos + swidth/2 - sheight/2;
    -
    -    newspos = spos;
    -
    -    sposMin = xpos;
    -
    -    sposMax = xpos + swidth - sheight;
    -
    -    loose = l;
    -
    -  }
    -
    -
    -
    -  void update() {
    -
    -    if(over()) {
    -
    -      over = true;
    -
    -    } else {
    -
    -      over = false;
    -
    -    }
    -
    -    if(mousePressed && over) {
    -
    -      locked = true;
    -
    -    }
    -
    -    if(!mousePressed) {
    -
    -      locked = false;
    -
    -    }
    -
    -    if(locked) {
    -
    -      newspos = constrain(mouseX-sheight/2, sposMin, sposMax);
    -
    -    }
    -
    -    if(abs(newspos - spos) > 1) {
    -
    -      spos = spos + (newspos-spos)/loose;
    -
    -    }
    -
    -  }
    -
    -
    -
    -  int constrain(int val, int minv, int maxv) {
    -
    -    return min(max(val, minv), maxv);
    -
    -  }
    -
    -
    -
    -  boolean over() {
    -
    -    if(mouseX > xpos && mouseX < xpos+swidth &&
    -
    -    mouseY > ypos && mouseY < ypos+sheight) {
    -
    -      return true;
    -
    -    } else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void display() {
    -
    -    fill(255);
    -
    -    rect(xpos, ypos, swidth, sheight);
    -
    -    if(over || locked) {
    -
    -      fill(153, 102, 0);
    -
    -    } else {
    -
    -      fill(102, 102, 102);
    -
    -    }
    -
    -    rect(spos, ypos, sheight, sheight);
    -
    -  }
    -
    -
    -
    -  float getPos() {
    -
    -    // Convert spos to be values between
    -
    -    // 0 and the total width of the scrollbar
    -
    -    return spos * ratio;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/sequential/data/PT_anim0000.gif b/learning/topic/sequential/data/PT_anim0000.gif deleted file mode 100644 index b0e3f04acd508828316dbdd7144f8448d4817141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3840 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 CO2VoD diff --git a/learning/topic/sequential/data/PT_anim0001.gif b/learning/topic/sequential/data/PT_anim0001.gif deleted file mode 100644 index 4f7cb902461597b7d2178559410b8b72acd62881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3819 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 diff --git a/learning/topic/sequential/data/PT_anim0002.gif b/learning/topic/sequential/data/PT_anim0002.gif deleted file mode 100644 index 4d37297faf22df87fefcce216042ec63ef68a59c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3910 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 UJG4Yw3baOhv`Cw@9vcAwJIU$rXaE2J diff --git a/learning/topic/sequential/data/PT_anim0003.gif b/learning/topic/sequential/data/PT_anim0003.gif deleted file mode 100644 index d3ab40361b44f85e02750922c5fe69905275eb44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3750 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 Qx~<&Wt={^rHy8l`J5$1-5dZ)H diff --git a/learning/topic/sequential/data/PT_anim0004.gif b/learning/topic/sequential/data/PT_anim0004.gif deleted file mode 100644 index 44cd62bdb6f59f1b4e5bcf3d4b790ddee11b4647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3681 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 diff --git a/learning/topic/sequential/data/PT_anim0005.gif b/learning/topic/sequential/data/PT_anim0005.gif deleted file mode 100644 index 185298a9428900844b3bac159a7253f6b13160ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3657 zcmV-P4z}?}Nk%w1VaNc;0OJ4v%*@Q0nVA3p0RR90W@ctHGc(}e;Ly;}u&}UjaB!fY zpn!mYARr(R5D-8>Ku}OnEC2ui0LTEy000F35XecZy?B~^vZspjjbw=(MrW>U>%J5R z&vb3yc&_h!@BhHnK@}_-kI2f#kZd}ixFr!vty(S8t5%DkExNBIHvrxZQriz9A#yF& z?bdKgeJ29DB{Q9|!`^FUd@BhAfjB5KgBXT1h6HhoCsPQ81b8-Ck{1C4f-aq&n-__D z6QQ4BXrmSi1Pi2e9FKmvhw1+vyukZmdh1`Ud?T-g}$ z)dHzXi1{1ja00;tZwlz77Y}Hjk|(R4e6K+R)|L61(8D=M&;pF)LgRQ{$-eDaa784vd5r{Hr9A+UjAJONnTV~u4*#tgXhz|H~- zb|{bmhY2O2YT0B_46e4g35gX8q_#`kFkmwaw0SYfDkZC&fxu8(6 zqV;Kzw)(Zx)3;w{b1n<6$eD(!G!!HrdJG^?$!_$%%7nIuiCe>tn`CH1Hs1!7B0CKf z3~#4;-jHO&)y%Mw00ITI9mN)3jORW2;=9HR=_0bC4d~IdtpMi~gqz8)`m<#}kg&YV zCsN5gKu|kRaF3TbD+T8mAt6{Wkg&~4Sb#pRU znKHp)4LrFujKIFoizo#eR^KHW#lM$atuHWLwa+ZUSU>n9!dus0{!cct^Mkg`~pH z0|Nzp!P2pNsExz7v+#zTQh_{>LWe>e{DR@VTs#Y%92#C|z@_5U^9nk3dm>`9knod> z^LQB2-22A-_xyg7&Dl}2R6)?`n^(~3oIwloZsPs6^T+jbj`y7KG?%F@2aIvYK*~n} z=LHZn?7$xo6c9dJEZ}{L2@zis^gyUctODSmjstiUg}^4Mc-E zsNnu6GQ=DGWaA*sk>W>mCV|XBE9fOb{qf{1a>vKUk`dwIdrs0EHkp=9HruoYzVR@{vhEE7|9uy1V9D186@K9 zAxE|Njt87HOD|YbhEmQkbb87SEP24N9Si{p2j~PdfHQ$?H13D6)W$CdGD{sCfO59% z7!V2p3umE30GE^^EZNaFs6dWI1#H2tv}gkaEC3Hos1#y$QP7VX-5AX;QB(j9Xeh37=#c?d?IQ*NOAct05q4f6pPe$| z1H5($g*2e0qtS>f1M)GZ&9sK-AYKM=g|S%ev;_cj6a#Y;flV#&IyQxq0Sz62LaOx}5NPA6I2`K@5&;EF z)x!|Txg`lY3Z)PUb_N%GV@%T+(Yri06Ud;#MdfA*O=7?w!Ge(+IroCY@a~%PQ^`u; zVa)a+!4-M^KmazY*O0)dE-J)<*}R!JTuQH3q-DX>M)0w6f<{VR%Yhx;{t-fj)s3*2 zqZ1)Q^-Npq7cu*%#|BCZxTvj zU@J&&1VdHJay5)VSAA%`)R-$PM%S_^I;TbXeF6PElE){wb{B~_!v`{Ho_o+&2QQWC zfFWu?u_;7Rf>~S;Tues?13`Z^%`Au+=bIK;I0r+`Ff^ciJM>sLH*6VKhd(e>@_09y zzg1(91ryVtPJqQbsH#Vj`-2Y?*)YfPjm^e|jQzsEU&R{ockJx`giYn%4xEmZU)1{Dl)?{f< zVBSZrCTtzc?Q%%yvj-*}5HdPpCLclVvu$kxKO{lXR)qe5nt zXO?Gmw#9!t;C}$vfDLE_eWwGN5n_#!DiMeS)y8?c_YD!@fF2ltSm$R!U`e@$cp{hs z9cNT5BQXE>fi74CW%mOLfj$DENL3(bUne&$=z=`RZ)A6XMGzEUra6UF1!abGA0RM2 zxP%UPe(nbYe$jPQwsT0>1V;#V63_u5z=T}*fVnno8Ige=kujHIbU6rDJJ^L?Xn+^E z4=bmDP{3FNp=EB-fogb%UifA)=wU!O0s9As*+w%Tfp%MnhlZGk5&(v@H+xL=5$kdU zg!XXV_W*}jiA|Vm5&Hyz{x1VSR&^YfSc=m{1$zhpbrls=$O8`ZhbJ}~ zrD%zhM+I_60-x6?fmw zc?h+QCrDgr=z{3hYz+{P^7sO|GXkloN7zVsG(!U&V25h>j{`9e0*QyGXpplvLEP7U zK4<|BiH8t5GqO05YB&k~#)~%)Vwu*Bg;&W5aS?;5gD15`I%fu3~w-Y zIY|*AHd&yVnxToAjdTG!=nq4PI031ewE2S2@PsCCOp*r?Qwe~kRTH8yn6){aFxZD9 zkeRmt04vFZ0oH7uIh?c^f(x@9-q?i*W@gZtomgj*8X=clNP-{1Y1s*#^_YDo*_(IR zh=Yhy<4K%|*GB{vmec;&B2ZBfl-QopX@bVNfZkb(HbWQMfuH%QmiyUF{W*>JwHSCQ zps87TK+uqRiD0k8psIOu+=+&g`Ig~Gp$*zj2P&34d0(W+p`Y1v9SNEtIshL-qM+FW zzqp*W`H?D07%W<%68NF1DWl0#qc-{tI9i)l7Fr3zqm~JU=*gj#aRwnGoJ2a8EKr(F z>VS*m6)XXhQJR+~aHLU60C3S0SBjWPc%onWfepc=V=9*Cr<^}}rfe#iZn36q8mEX^ zopM^Ic6z6Hnx}fYr+nI{e)^|?8mNLgsDxUmhI*)ony8ApsEpdEj{2yO8mW>xsgzo& bmU^j}nyH$)sSKRjsh;|&pc<;f836!0ksfSN diff --git a/learning/topic/sequential/data/PT_anim0006.gif b/learning/topic/sequential/data/PT_anim0006.gif deleted file mode 100644 index 30de511621dbab77861a8f73b1b1beceba0ac052..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3437 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 V8l_S?rBqs_R(hpa8UPUh06RrMH*5d^ diff --git a/learning/topic/sequential/data/PT_anim0008.gif b/learning/topic/sequential/data/PT_anim0008.gif deleted file mode 100644 index 76475facd459cbdd9b46aa25628d7004c8c3d80c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3631 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 BQd$52 diff --git a/learning/topic/sequential/data/PT_anim0009.gif b/learning/topic/sequential/data/PT_anim0009.gif deleted file mode 100644 index 3b224625a327b83625db296100176e25a8e6b557..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3651 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 VmU^j}nyH$)sRo?dsc#wq06TBMRYd>* diff --git a/learning/topic/sequential/data/PT_anim0010.gif b/learning/topic/sequential/data/PT_anim0010.gif deleted file mode 100644 index 9c008f38b66b9d17b8fae65997897b19c71e2c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3695 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 NxSFfFij)xm06ULEhkyV8 diff --git a/learning/topic/sequential/data/PT_anim0011.gif b/learning/topic/sequential/data/PT_anim0011.gif deleted file mode 100644 index db227e220d24f54104357044748ad3c42fa90f52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3827 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 diff --git a/learning/topic/sequential/index.html b/learning/topic/sequential/index.html deleted file mode 100644 index 14ac408..0000000 --- a/learning/topic/sequential/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: default ---- -

    Sequential

    - -

    by James Patterson. - -Displaying a sequence of images creates the illusion of motion. -Twelve images are loaded and each is displayed individually in a loop.

    - -

    Original Processing.org Example: Sequential
    -

    - -
    // All Examples Written by Casey Reas and Ben Fry
    -// unless otherwise stated.
    -/* @pjs preload="data/PT_anim0000.gif, data/PT_anim0001.gif, data/PT_anim0002.gif, 
    -data/PT_anim0003.gif, data/PT_anim0004.gif, data/PT_anim0005.gif, 
    -data/PT_anim0006.gif, data/PT_anim0007.gif, data/PT_anim0008.gif, 
    -data/PT_anim0009.gif, data/PT_anim0010.gif, data/PT_anim0011.gif"; */
    -int numFrames = 12;  // The number of frames in the animation
    -int frame = 0;
    -PImage[] images = new PImage[numFrames];
    -    
    -void setup()
    -{
    -  size(200, 200);
    -  frameRate(30);
    -  
    -  images[0]  = loadImage("data/PT_anim0000.gif");
    -  images[1]  = loadImage("data/PT_anim0001.gif"); 
    -  images[2]  = loadImage("data/PT_anim0002.gif");
    -  images[3]  = loadImage("data/PT_anim0003.gif"); 
    -  images[4]  = loadImage("data/PT_anim0004.gif");
    -  images[5]  = loadImage("data/PT_anim0005.gif"); 
    -  images[6]  = loadImage("data/PT_anim0006.gif");
    -  images[7]  = loadImage("data/PT_anim0007.gif"); 
    -  images[8]  = loadImage("data/PT_anim0008.gif");
    -  images[9]  = loadImage("data/PT_anim0009.gif"); 
    -  images[10] = loadImage("data/PT_anim0010.gif");
    -  images[11] = loadImage("data/PT_anim0011.gif"); 
    -  
    -  // If you don't want to load each image separately
    -  // and you know how many frames you have, you
    -  // can create the filenames as the program runs.
    -  // The nf() command does number formatting, which will
    -  // ensure that the number is (in this case) 4 digits.
    -  //for(int i=0; i<numFrames; i++) {
    -  //  String imageName = "PT_anim" + nf(i, 4) + ".gif";
    -  //  images[i] = loadImage(imageName);
    -  //}
    -} 
    - 
    -void draw() 
    -{ 
    -  frame = (frame+1)%numFrames;  // Use % to cycle through frames
    -  image(images[frame], 0, 0);
    -}
    diff --git a/learning/topic/simpleparticlesystem/index.html b/learning/topic/simpleparticlesystem/index.html deleted file mode 100644 index 892a736..0000000 --- a/learning/topic/simpleparticlesystem/index.html +++ /dev/null @@ -1,1055 +0,0 @@ ---- -layout: default ---- -

    SimpleParticleSystem

    - - - -

    by Daniel Shiffman. - - - -Particles are generated each cycle through draw(), - -fall with gravity and fade out over time - -A ParticleSystem object manages a variable size (ArrayList) - -list of particles.

    - - - -

    Original Processing.org Example: SimpleParticleSystem
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -ParticleSystem ps;
    -
    -
    -
    -void setup() {
    -
    -  size(200,200);
    -
    -  frameRate(30);
    -
    -  colorMode(RGB,255,255,255,100);
    -
    -  ps = new ParticleSystem(1,new Vector3D(width/2,height/2,0));
    -
    -  smooth();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(0);
    -
    -  ps.run();
    -
    -  ps.addParticle();
    -
    -}
    -
    -
    -
    -
    -
    -// A simple Particle class
    -
    -
    -
    -class Particle {
    -
    -  Vector3D loc;
    -
    -  Vector3D vel;
    -
    -  Vector3D acc;
    -
    -  float r;
    -
    -  float timer;
    -
    -
    -
    -  // One constructor
    -
    -  Particle(Vector3D a, Vector3D v, Vector3D l, float r_) {
    -
    -    acc = a.copy();
    -
    -    vel = v.copy();
    -
    -    loc = l.copy();
    -
    -    r = r_;
    -
    -    timer = 100.0;
    -
    -  }
    -
    -  
    -
    -  // Another constructor (the one we are using here)
    -
    -  Particle(Vector3D l) {
    -
    -    acc = new Vector3D(0,0.05,0);
    -
    -    vel = new Vector3D(random(-1,1),random(-2,0),0);
    -
    -    loc = l.copy();
    -
    -    r = 10.0;
    -
    -    timer = 100.0;
    -
    -  }
    -
    -
    -
    -
    -
    -  void run() {
    -
    -    update();
    -
    -    render();
    -
    -  }
    -
    -
    -
    -  // Method to update location
    -
    -  void update() {
    -
    -    vel.add(acc);
    -
    -    loc.add(vel);
    -
    -    timer -= 1.0;
    -
    -  }
    -
    -
    -
    -  // Method to display
    -
    -  void render() {
    -
    -    ellipseMode(CENTER);
    -
    -    noStroke();
    -
    -    fill(255,timer);
    -
    -    ellipse(loc.x,loc.y,r,r);
    -
    -  }
    -
    -  
    -
    -  // Is the particle still useful?
    -
    -  boolean dead() {
    -
    -    if (timer <= 0.0) {
    -
    -      return true;
    -
    -    } else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -// A class to describe a group of Particles
    -
    -// An ArrayList is used to manage the list of Particles 
    -
    -
    -
    -class ParticleSystem {
    -
    -
    -
    -  ArrayList particles;    // An arraylist for all the particles
    -
    -  Vector3D origin;        // An origin point for where particles are birthed
    -
    -
    -
    -  ParticleSystem(int num, Vector3D v) {
    -
    -    particles = new ArrayList();              // Initialize the arraylist
    -
    -    origin = v.copy();                        // Store the origin point
    -
    -    for (int i = 0; i < num; i++) {
    -
    -      particles.add(new Particle(origin));    // Add "num" amount of particles to the arraylist
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void run() {
    -
    -    // Cycle through the ArrayList backwards b/c we are deleting
    -
    -    for (int i = particles.size()-1; i >= 0; i--) {
    -
    -      Particle p = (Particle) particles.get(i);
    -
    -      p.run();
    -
    -      if (p.dead()) {
    -
    -        particles.remove(i);
    -
    -      }
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void addParticle() {
    -
    -    particles.add(new Particle(origin));
    -
    -  }
    -
    -
    -
    -  void addParticle(Particle p) {
    -
    -    particles.add(p);
    -
    -  }
    -
    -
    -
    -  // A method to test if the particle system still has particles
    -
    -  boolean dead() {
    -
    -    if (particles.isEmpty()) {
    -
    -      return true;
    -
    -    } else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -
    -
    -}
    -
    -
    -
    -
    -
    -
    -
    -// Simple Vector3D Class 
    -
    -
    -
    -public class Vector3D {
    -
    -  public float x;
    -
    -  public float y;
    -
    -  public float z;
    -
    -
    -
    -  Vector3D(float x_, float y_, float z_) {
    -
    -    x = x_; y = y_; z = z_;
    -
    -  }
    -
    -
    -
    -  Vector3D(float x_, float y_) {
    -
    -    x = x_; y = y_; z = 0f;
    -
    -  }
    -
    -  
    -
    -  Vector3D() {
    -
    -    x = 0f; y = 0f; z = 0f;
    -
    -  }
    -
    -
    -
    -  void setX(float x_) {
    -
    -    x = x_;
    -
    -  }
    -
    -
    -
    -  void setY(float y_) {
    -
    -    y = y_;
    -
    -  }
    -
    -
    -
    -  void setZ(float z_) {
    -
    -    z = z_;
    -
    -  }
    -
    -  
    -
    -  void setXY(float x_, float y_) {
    -
    -    x = x_;
    -
    -    y = y_;
    -
    -  }
    -
    -  
    -
    -  void setXYZ(float x_, float y_, float z_) {
    -
    -    x = x_;
    -
    -    y = y_;
    -
    -    z = z_;
    -
    -  }
    -
    -
    -
    -  void setXYZ(Vector3D v) {
    -
    -    x = v.x;
    -
    -    y = v.y;
    -
    -    z = v.z;
    -
    -  }
    -
    -  public float magnitude() {
    -
    -    return (float) Math.sqrt(x*x + y*y + z*z);
    -
    -  }
    -
    -
    -
    -  public Vector3D copy() {
    -
    -    return new Vector3D(x,y,z);
    -
    -  }
    -
    -
    -
    -  public Vector3D copy(Vector3D v) {
    -
    -    return new Vector3D(v.x, v.y,v.z);
    -
    -  }
    -
    -  
    -
    -  public void add(Vector3D v) {
    -
    -    x += v.x;
    -
    -    y += v.y;
    -
    -    z += v.z;
    -
    -  }
    -
    -
    -
    -  public void sub(Vector3D v) {
    -
    -    x -= v.x;
    -
    -    y -= v.y;
    -
    -    z -= v.z;
    -
    -  }
    -
    -
    -
    -  public void mult(float n) {
    -
    -    x *= n;
    -
    -    y *= n;
    -
    -    z *= n;
    -
    -  }
    -
    -
    -
    -  public void div(float n) {
    -
    -    x /= n;
    -
    -    y /= n;
    -
    -    z /= n;
    -
    -  }
    -
    -
    -
    -  public void normalize() {
    -
    -    float m = magnitude();
    -
    -    if (m > 0) {
    -
    -       div(m);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  public void limit(float max) {
    -
    -    if (magnitude() > max) {
    -
    -      normalize();
    -
    -      mult(max);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  public float heading2D() {
    -
    -    float angle = (float) Math.atan2(-y, x);
    -
    -    return -1*angle;
    -
    -  }
    -
    -
    -
    -  public Vector3D add(Vector3D v1, Vector3D v2) {
    -
    -    Vector3D v = new Vector3D(v1.x + v2.x,v1.y + v2.y, v1.z + v2.z);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public Vector3D sub(Vector3D v1, Vector3D v2) {
    -
    -    Vector3D v = new Vector3D(v1.x - v2.x,v1.y - v2.y,v1.z - v2.z);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public Vector3D div(Vector3D v1, float n) {
    -
    -    Vector3D v = new Vector3D(v1.x/n,v1.y/n,v1.z/n);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public Vector3D mult(Vector3D v1, float n) {
    -
    -    Vector3D v = new Vector3D(v1.x*n,v1.y*n,v1.z*n);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public float distance (Vector3D v1, Vector3D v2) {
    -
    -    float dx = v1.x - v2.x;
    -
    -    float dy = v1.y - v2.y;
    -
    -    float dz = v1.z - v2.z;
    -
    -    return (float) Math.sqrt(dx*dx + dy*dy + dz*dz);
    -
    -  }
    -
    -
    -
    -}
    - - - - - diff --git a/learning/topic/smoke/index.html b/learning/topic/smoke/index.html deleted file mode 100644 index ecced2e..0000000 --- a/learning/topic/smoke/index.html +++ /dev/null @@ -1,1063 +0,0 @@ ---- -layout: default ---- -

    Smoke

    - - - -

    by Glen Murphy. - - - -Drag the mouse across the image to move the particles. - -Code has not been optimised and will run fairly slowly. - - - -Completed 5 November 2002

    - - - -

    Original Processing.org Example: Smoke
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int res = 2;
    -
    -int penSize = 30;
    -
    -int lwidth;
    -
    -int lheight;
    -
    -int pnum = 30000;
    -
    -vsquare[][] v;
    -
    -vbuffer[][] vbuf;
    -
    -particle[] p;
    -
    -int pcount = 0;
    -
    -int mouseXvel = 0;
    -
    -int mouseYvel = 0;
    -
    -
    -
    -int randomGust = 0;
    -
    -int randomGustMax;
    -
    -float randomGustX;
    -
    -float randomGustY;
    -
    -float randomGustSize;
    -
    -float randomGustXvel;
    -
    -float randomGustYvel;
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  lwidth = width/res;
    -
    -  lheight = height/res;
    -
    -  v = new vsquare[lwidth+1][lheight+1];
    -
    -  vbuf = new vbuffer[lwidth+1][lheight+1];
    -
    -  p = new particle[pnum];
    -
    -  noStroke();
    -
    -  for(int i = 0; i < pnum; i++) {
    -
    -    p[i] = new particle(random(width/2-20,width/2+20),random(height-20,height));
    -
    -  }
    -
    -  for(int i = 0; i <= lwidth; i++) {
    -
    -    for(int u = 0; u <= lheight; u++) {
    -
    -      v[i][u] = new vsquare(i*res,u*res);
    -
    -      vbuf[i][u] = new vbuffer(i*res,u*res);
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(#cccccc);
    -
    -  
    -
    -  int axvel = mouseX-pmouseX;
    -
    -  int ayvel = mouseY-pmouseY;
    -
    -
    -
    -  mouseXvel = (axvel != mouseXvel) ? axvel : 0;
    -
    -  mouseYvel = (ayvel != mouseYvel) ? ayvel : 0;
    -
    -
    -
    -  if(randomGust <= 0) {
    -
    -    if(random(0,10)<1) {
    -
    -      randomGustMax = (int)random(5,12);
    -
    -      randomGust = randomGustMax;
    -
    -      randomGustX = random(0,width);
    -
    -      randomGustY = random(0,height-10);
    -
    -      randomGustSize = random(0,50);
    -
    -      if(randomGustX > width/2) {
    -
    -        randomGustXvel = random(-8,0);
    -
    -      } else { 
    -
    -        randomGustXvel = random(0,8);
    -
    -      }
    -
    -      randomGustYvel = random(-2,1);
    -
    -    }
    -
    -    randomGust--;
    -
    -  }
    -
    -
    -
    -  for(int i = 0; i < lwidth; i++) {
    -
    -    for(int u = 0; u < lheight; u++) {
    -
    -      vbuf[i][u].updatebuf(i,u);
    -
    -      v[i][u].col = 0;
    -
    -    }
    -
    -  }
    -
    -  for(int i = 0; i < pnum-1; i++) {
    -
    -    p[i].updatepos();
    -
    -  }
    -
    -  for(int i = 0; i < lwidth; i++) {
    -
    -    for(int u = 0; u < lheight; u++) {
    -
    -      v[i][u].addbuffer(i, u);
    -
    -      v[i][u].updatevels(mouseXvel, mouseYvel);
    -
    -      v[i][u].display(i, u);
    -
    -    }
    -
    -  }
    -
    -  randomGust = 0;
    -
    -}
    -
    -
    -
    -class particle 
    -
    -{
    -
    -  float x;
    -
    -  float y;
    -
    -  float xvel;
    -
    -  float yvel;
    -
    -  float temp;
    -
    -  int pos;
    -
    -
    -
    -  particle(float xIn, float yIn) {
    -
    -    x = xIn;
    -
    -    y = yIn;
    -
    -  }
    -
    -
    -
    -  void reposition() {
    -
    -    x = width/2+random(-20,20);
    -
    -    y = random(height-10,height);
    -
    -
    -
    -    xvel = random(-1,1);
    -
    -    yvel = random(-1,1);
    -
    -  }
    -
    -
    -
    -  void updatepos() {
    -
    -    int vi = (int)(x/res);
    -
    -    int vu = (int)(y/res);
    -
    -
    -
    -    if(vi > 0 && vi < lwidth && vu > 0 && vu < lheight) {
    -
    -      v[vi][vu].addcolour(2);
    -
    -
    -
    -      float ax = (x%res)/res;
    -
    -      float ay = (y%res)/res;
    -
    -
    -
    -      xvel += (1-ax)*v[vi][vu].xvel*0.05;
    -
    -      yvel += (1-ay)*v[vi][vu].yvel*0.05;
    -
    -
    -
    -      xvel += ax*v[vi+1][vu].xvel*0.05;
    -
    -      yvel += ax*v[vi+1][vu].yvel*0.05;
    -
    -
    -
    -      xvel += ay*v[vi][vu+1].xvel*0.05;
    -
    -      yvel += ay*v[vi][vu+1].yvel*0.05;
    -
    -
    -
    -      v[vi][vu].yvel -= (1-ay)*0.003;
    -
    -      v[vi+1][vu].yvel -= ax*0.003;
    -
    -
    -
    -      if(v[vi][vu].yvel < 0) v[vi][vu].yvel *= 1.00025;
    -
    -
    -
    -      x += xvel;
    -
    -      y += yvel;
    -
    -    } 
    -
    -    else {
    -
    -      reposition();
    -
    -    }
    -
    -    if(random(0,400) < 1) {
    -
    -      reposition();
    -
    -    }
    -
    -    xvel *= 0.6;
    -
    -    yvel *= 0.6;
    -
    -  }
    -
    -}
    -
    -
    -
    -class vbuffer
    -
    -{
    -
    -  int x;
    -
    -  int y;
    -
    -  float xvel;
    -
    -  float yvel;
    -
    -  float pressurex = 0;
    -
    -  float pressurey = 0;
    -
    -  float pressure = 0;
    -
    -
    -
    -  vbuffer(int xIn,int yIn) {
    -
    -    x = xIn;
    -
    -    y = yIn;
    -
    -    pressurex = 0;
    -
    -    pressurey = 0;
    -
    -  }
    -
    -
    -
    -  void updatebuf(int i, int u) {
    -
    -    if(i>0 && i<lwidth && u>0 && u<lheight) {
    -
    -      pressurex = (v[i-1][u-1].xvel*0.5 + v[i-1][u].xvel + v[i-1][u+1].xvel*0.5 - v[i+1][u-1].xvel*0.5 - v[i+1][u].xvel - v[i+1][u+1].xvel*0.5);
    -
    -      pressurey = (v[i-1][u-1].yvel*0.5 + v[i][u-1].yvel + v[i+1][u-1].yvel*0.5 - v[i-1][u+1].yvel*0.5 - v[i][u+1].yvel - v[i+1][u+1].yvel*0.5);
    -
    -      pressure = (pressurex + pressurey)*0.25;
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -class vsquare {
    -
    -  int x;
    -
    -  int y;
    -
    -  float xvel;
    -
    -  float yvel;
    -
    -  float col;
    -
    -
    -
    -  vsquare(int xIn,int yIn) {
    -
    -    x = xIn;
    -
    -    y = yIn;
    -
    -  }
    -
    -
    -
    -  void addbuffer(int i, int u) {
    -
    -    if(i>0 && i<lwidth && u>0 && u<lheight) {
    -
    -      xvel += (vbuf[i-1][u-1].pressure*0.5
    -
    -      +vbuf[i-1][u].pressure
    -
    -      +vbuf[i-1][u+1].pressure*0.5
    -
    -      -vbuf[i+1][u-1].pressure*0.5
    -
    -      -vbuf[i+1][u].pressure
    -
    -      -vbuf[i+1][u+1].pressure*0.5
    -
    -      )*0.49;
    -
    -      yvel += (vbuf[i-1][u-1].pressure*0.5
    -
    -      +vbuf[i][u-1].pressure
    -
    -      +vbuf[i+1][u-1].pressure*0.5
    -
    -      -vbuf[i-1][u+1].pressure*0.5
    -
    -      -vbuf[i][u+1].pressure
    -
    -      -vbuf[i+1][u+1].pressure*0.5
    -
    -      )*0.49;
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void updatevels(int mvelX, int mvelY) {
    -
    -    float adj;
    -
    -    float opp;
    -
    -    float dist;
    -
    -    float mod;
    -
    -
    -
    -    if(mousePressed) {
    -
    -      adj = x - mouseX;
    -
    -      opp = y - mouseY;
    -
    -      dist = sqrt(opp*opp + adj*adj);
    -
    -      if(dist < penSize) {
    -
    -        if(dist < 4) dist = penSize;
    -
    -        mod = penSize/dist;
    -
    -        xvel += mvelX*mod;
    -
    -        yvel += mvelY*mod;
    -
    -      }
    -
    -    }
    -
    -    if(randomGust > 0) {
    -
    -      adj = x - randomGustX;
    -
    -      opp = y - randomGustY;
    -
    -      dist = sqrt(opp*opp + adj*adj);
    -
    -      if(dist < randomGustSize) {
    -
    -        if(dist < res*2) dist = randomGustSize;
    -
    -        mod = randomGustSize/dist;
    -
    -        xvel += (randomGustMax-randomGust)*randomGustXvel*mod;
    -
    -        yvel += (randomGustMax-randomGust)*randomGustYvel*mod;
    -
    -      }
    -
    -    }
    -
    -    xvel *= 0.99;
    -
    -    yvel *= 0.98;
    -
    -  }
    -
    -
    -
    -  void addcolour(int amt) {
    -
    -    col += amt;
    -
    -    if(col > 196) col = 196;
    -
    -  }
    -
    -
    -
    -  void display(int i, int u) {
    -
    -    float tcol = 0;
    -
    -    if(i>0 && i<lwidth-1 && u>0 && u<lheight-1) {
    -
    -
    -
    -      tcol = (+ v[i][u+1].col
    -
    -      + v[i+1][u].col
    -
    -      + v[i+1][u+1].col*0.5
    -
    -      )*0.3;
    -
    -      tcol = (int)(tcol+col*0.5);
    -
    -    }
    -
    -
    -
    -    fill(255-tcol, 255-tcol, 255-tcol);
    -
    -    rect(x,y,res,res);
    -
    -    col = 0;
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/smokeparticlesystem/data/texture.gif b/learning/topic/smokeparticlesystem/data/texture.gif deleted file mode 100644 index 17e84e80677eeefd1f0609e1e2c37d428e6f6f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1829 zcmV+=2io{YNk%w1VITk?0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui03ZM$000R8009UbNU)&6g9QTw5I|r+0RspUC}_~&!Gj18Fg|d= zU;%;y1`0G3AV8pi0R##hIG}(*0|*i*RJefQf=vq)Bs^%K;G@U^B>|j#cwoUx2^KPN z@Bku22oN4RXuwb*0>=agewuuUU}6Ld8a#+Fkzz%Qvno)K0MP*h1qckViWHc#r~?TX zIEX;eLWYeTJb3KDQ6t8R5+5>Dcn~+Mzye+GUg$uA#S9%mj4Wx=gh`SiJ#4^05n=-c z#t8}tG?1V{gbN-@w73yOi4-kf!if3OrHYdxJ!Gg5q2Y8-fd?2ssL-K=3minAY$?-b z&K*2;6CPN= zm_W)|;K2zq1OWvYZ~W0nCZe2z3MrjXV#pn5TyaDWEsT)C1Pu_Fo(L}JpoA7}`~gWQ zuH@p&FT2o!N+yTcF@_XD&~QQr6*wT!0~ByzLV{A1kw+t;%rZL63jH;lylBF+9-nyDURSVh7&%(;Nb)UL2v;GE$Fa> z7j!5R3NFof!_GYPz*CMj!?a?_A81e!#0(~EfF}SDU=TtJJ1_yp9gd*#%QWT8qt8C~ zw8M=uvS=a*8&?qjK?4dLP>`ploHii_9*>{`Of}}v!%si?wBwC3v~V&=8?nwntE~V$ zaKU;zECGfcjFiGlG~&F2Pd@ahvyCyZWD>|4RtP~U2NnEi!3QefkOUWT7~%;n$Yf(q zJMN?djx@iZG6^4LL;*w$By1qTkIbDw0})oF(FY}`=(5Z;+<2o+G{eNwNg{NB!2}O2 zh!=rC4NR~B2{8QN#20cLl1VDK43ms9$M_OUD39=wh80EFpuz_ha0!5Gd#Z3l5mlIh z2O^h{(#kBf#F9!Uj{xFE7ftj4g9#i=;3EJEI1pqBFYKTM7H8Zsh$EM5!U-mlAi{?m zU_>!Q4J&B>89|5uB*1_K7=VDn3_d7v#Takg@y8&91i}X$YIG3=5jb>c+JFEUuz=Yb zgrEZANJO!P7-+E3h8kvofkhKT;P8S80Y(tlV+ky<+y)}3AcGD>%0-BXn?q*gY9w5&{wk`mS|-~ki3fCf4M0uq$q1ST*+2}bY%4!FfCJ;@3I z1fmd!93XcUnScc_pn(l=;Dj5h!`a!F`SmokeParticleSystem

    - - - -

    by Daniel Shiffman. - - - -A basic smoke effect using a particle system. - -Each particle is rendered as an alpha masked image.

    - - - -

    Original Processing.org Example: SmokeParticleSystem
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -ParticleSystem ps;
    -
    -Random generator;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  frameRate(30);
    -
    -  colorMode(RGB, 255, 255, 255, 100);
    -
    -  generator = new Random();
    -
    -    
    -
    -  // Create an alpha masked image to be applied as the particle's texture
    -
    -  PImage msk = loadImage("texture.gif");
    -
    -  PImage img = new PImage(msk.width,msk.height);
    -
    -  for (int i = 0; i < img.pixels.length; i++) img.pixels[i] = color(255);
    -
    -  img.mask(msk);
    -
    -
    -
    -  ps = new ParticleSystem(0,new Vector3D(width/2,height-20),img);
    -
    -  smooth();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(0);
    -
    -  
    -
    -  // Calculate a "wind" force based on mouse horizontal position
    -
    -  float dx = (mouseX - width/2) / 1000.0;
    -
    -  Vector3D wind = new Vector3D(dx,0,0);
    -
    -  ps.add_force(wind);
    -
    -  ps.run();
    -
    -  for (int i = 0; i < 2; i++) {
    -
    -    ps.addParticle();
    -
    -  }
    -
    -  
    -
    -  // Draw an arrow representing the wind force
    -
    -  drawVector(wind, new Vector3D(width/2,50,0),500);
    -
    -
    -
    -}
    -
    -
    -
    -// Renders a vector object 'v' as an arrow and a location 'loc'
    -
    -void drawVector(Vector3D v, Vector3D loc, float scayl) {
    -
    -  pushMatrix();
    -
    -  float arrowsize = 4;
    -
    -  // Translate to location to render vector
    -
    -  translate(loc.x,loc.y);
    -
    -  stroke(255);
    -
    -  // Call vector heading function to get direction (note that pointing up is a heading of 0) and rotate
    -
    -  rotate(v.heading2D());
    -
    -  // Calculate length of vector & scale it to be bigger or smaller if necessary
    -
    -  float len = v.magnitude()*scayl;
    -
    -  // Draw three lines to make an arrow (draw pointing up since we've rotate to the proper direction)
    -
    -  line(0,0,len,0);
    -
    -  line(len,0,len-arrowsize,+arrowsize/2);
    -
    -  line(len,0,len-arrowsize,-arrowsize/2);
    -
    -  popMatrix();
    -
    -}
    -
    -
    -
    -
    -
    -
    -
    -// A simple Particle class, renders the particle as an image
    -
    -
    -
    -class Particle {
    -
    -  Vector3D loc;
    -
    -  Vector3D vel;
    -
    -  Vector3D acc;
    -
    -  float timer;
    -
    -  PImage img;
    -
    -
    -
    -  // One constructor
    -
    -  Particle(Vector3D a, Vector3D v, Vector3D l, PImage img_) {
    -
    -    acc = a.copy();
    -
    -    vel = v.copy();
    -
    -    loc = l.copy();
    -
    -    timer = 100.0;
    -
    -    img = img_;
    -
    -  }
    -
    -
    -
    -  // Another constructor (the one we are using here)
    -
    -  Particle(Vector3D l,PImage img_) {
    -
    -    acc = new Vector3D(0.0,0.0,0.0);
    -
    -    float x = (float) generator.nextGaussian()*0.3f;
    -
    -    float y = (float) generator.nextGaussian()*0.3f - 1.0f;
    -
    -    vel = new Vector3D(x,y,0);
    -
    -    loc = l.copy();
    -
    -    timer = 100.0;
    -
    -    img = img_;
    -
    -  }
    -
    -
    -
    -  void run() {
    -
    -    update();
    -
    -    render();
    -
    -  }
    -
    -  
    -
    -  // Method to apply a force vector to the Particle object
    -
    -  // Note we are ignoring "mass" here
    -
    -  void add_force(Vector3D f) {
    -
    -    acc.add(f);
    -
    -  }  
    -
    -
    -
    -  // Method to update location
    -
    -  void update() {
    -
    -    vel.add(acc);
    -
    -    loc.add(vel);
    -
    -    timer -= 2.5;
    -
    -    acc.setXY(0,0);
    -
    -  }
    -
    -
    -
    -  // Method to display
    -
    -  void render() {
    -
    -    imageMode(CORNER);
    -
    -    tint(255,timer);
    -
    -    image(img,loc.x-img.width/2,loc.y-img.height/2);
    -
    -  }
    -
    -
    -
    -  // Is the particle still useful?
    -
    -  boolean dead() {
    -
    -    if (timer <= 0.0) {
    -
    -      return true;
    -
    -    } else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -
    -
    -// A class to describe a group of Particles
    -
    -// An ArrayList is used to manage the list of Particles 
    -
    -
    -
    -class ParticleSystem {
    -
    -
    -
    -  ArrayList particles;    // An arraylist for all the particles
    -
    -  Vector3D origin;        // An origin point for where particles are birthed
    -
    -  PImage img;
    -
    -  
    -
    -  ParticleSystem(int num, Vector3D v, PImage img_) {
    -
    -    particles = new ArrayList();              // Initialize the arraylist
    -
    -    origin = v.copy();                        // Store the origin point
    -
    -    img = img_;
    -
    -    for (int i = 0; i < num; i++) {
    -
    -      particles.add(new Particle(origin, img));    // Add "num" amount of particles to the arraylist
    -
    -    }
    -
    -  }
    -
    -
    -
    -  void run() {
    -
    -    // Cycle through the ArrayList backwards b/c we are deleting
    -
    -    for (int i = particles.size()-1; i >= 0; i--) {
    -
    -      Particle p = (Particle) particles.get(i);
    -
    -      p.run();
    -
    -      if (p.dead()) {
    -
    -        particles.remove(i);
    -
    -      }
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  // Method to add a force vector to all particles currently in the system
    -
    -  void add_force(Vector3D dir) {
    -
    -    for (int i = particles.size()-1; i >= 0; i--) {
    -
    -      Particle p = (Particle) particles.get(i);
    -
    -      p.add_force(dir);
    -
    -    }
    -
    -  
    -
    -  }  
    -
    -
    -
    -  void addParticle() {
    -
    -    particles.add(new Particle(origin,img));
    -
    -  }
    -
    -
    -
    -  void addParticle(Particle p) {
    -
    -    particles.add(p);
    -
    -  }
    -
    -
    -
    -  // A method to test if the particle system still has particles
    -
    -  boolean dead() {
    -
    -    if (particles.isEmpty()) {
    -
    -      return true;
    -
    -    } else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -
    -
    -}
    -
    -
    -
    -
    -
    -public class Vector3D {
    -
    -  public float x;
    -
    -  public float y;
    -
    -  public float z;
    -
    -
    -
    -  Vector3D(float x_, float y_, float z_) {
    -
    -    x = x_; y = y_; z = z_;
    -
    -  }
    -
    -
    -
    -  Vector3D(float x_, float y_) {
    -
    -    x = x_; y = y_; z = 0f;
    -
    -  }
    -
    -  
    -
    -  Vector3D() {
    -
    -    x = 0f; y = 0f; z = 0f;
    -
    -  }
    -
    -
    -
    -  void setX(float x_) {
    -
    -    x = x_;
    -
    -  }
    -
    -
    -
    -  void setY(float y_) {
    -
    -    y = y_;
    -
    -  }
    -
    -
    -
    -  void setZ(float z_) {
    -
    -    z = z_;
    -
    -  }
    -
    -  
    -
    -  void setXY(float x_, float y_) {
    -
    -    x = x_;
    -
    -    y = y_;
    -
    -  }
    -
    -  
    -
    -  void setXYZ(float x_, float y_, float z_) {
    -
    -    x = x_;
    -
    -    y = y_;
    -
    -    z = z_;
    -
    -  }
    -
    -
    -
    -  void setXYZ(Vector3D v) {
    -
    -    x = v.x;
    -
    -    y = v.y;
    -
    -    z = v.z;
    -
    -  }
    -
    -  public float magnitude() {
    -
    -    return (float) Math.sqrt(x*x + y*y + z*z);
    -
    -  }
    -
    -
    -
    -  public Vector3D copy() {
    -
    -    return new Vector3D(x,y,z);
    -
    -  }
    -
    -
    -
    -  public Vector3D copy(Vector3D v) {
    -
    -    return new Vector3D(v.x, v.y,v.z);
    -
    -  }
    -
    -  
    -
    -  public void add(Vector3D v) {
    -
    -    x += v.x;
    -
    -    y += v.y;
    -
    -    z += v.z;
    -
    -  }
    -
    -
    -
    -  public void sub(Vector3D v) {
    -
    -    x -= v.x;
    -
    -    y -= v.y;
    -
    -    z -= v.z;
    -
    -  }
    -
    -
    -
    -  public void mult(float n) {
    -
    -    x *= n;
    -
    -    y *= n;
    -
    -    z *= n;
    -
    -  }
    -
    -
    -
    -  public void div(float n) {
    -
    -    x /= n;
    -
    -    y /= n;
    -
    -    z /= n;
    -
    -  }
    -
    -  
    -
    -  /*public float dot(Vector3D v) {
    -
    -    //implement DOT product
    -
    -  }*/
    -
    -  
    -
    -  /*public Vector3D cross(Vector3D v) {
    -
    -    //implement CROSS product
    -
    -  }*/
    -
    -
    -
    -  public void normalize() {
    -
    -    float m = magnitude();
    -
    -    if (m > 0) {
    -
    -       div(m);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  public void limit(float max) {
    -
    -    if (magnitude() > max) {
    -
    -      normalize();
    -
    -      mult(max);
    -
    -    }
    -
    -  }
    -
    -
    -
    -  public float heading2D() {
    -
    -    float angle = (float) Math.atan2(-y, x);
    -
    -    return -1*angle;
    -
    -  }
    -
    -
    -
    -  public Vector3D add(Vector3D v1, Vector3D v2) {
    -
    -    Vector3D v = new Vector3D(v1.x + v2.x,v1.y + v2.y, v1.z + v2.z);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public Vector3D sub(Vector3D v1, Vector3D v2) {
    -
    -    Vector3D v = new Vector3D(v1.x - v2.x,v1.y - v2.y,v1.z - v2.z);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public Vector3D div(Vector3D v1, float n) {
    -
    -    Vector3D v = new Vector3D(v1.x/n,v1.y/n,v1.z/n);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public Vector3D mult(Vector3D v1, float n) {
    -
    -    Vector3D v = new Vector3D(v1.x*n,v1.y*n,v1.z*n);
    -
    -    return v;
    -
    -  }
    -
    -
    -
    -  public float distance (Vector3D v1, Vector3D v2) {
    -
    -    float dx = v1.x - v2.x;
    -
    -    float dy = v1.y - v2.y;
    -
    -    float dz = v1.z - v2.z;
    -
    -    return (float) Math.sqrt(dx*dx + dy*dy + dz*dz);
    -
    -  }
    -
    -
    -
    -}
    - - - - - diff --git a/learning/topic/softbody/index.html b/learning/topic/softbody/index.html deleted file mode 100644 index 98ca261..0000000 --- a/learning/topic/softbody/index.html +++ /dev/null @@ -1,397 +0,0 @@ ---- -layout: default ---- -

    SoftBody

    - - - -

    by Ira Greenberg. - - - -Softbody dynamics simulation using curveVertex() and curveTightness()

    - - - -

    Original Processing.org Example: SoftBody
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// center point
    -
    -float centerX = 0, centerY = 0;
    -
    -
    -
    -float radius = 45, rotAngle = -90;
    -
    -float accelX, accelY;
    -
    -float springing = .0085, damping = .98;
    -
    -
    -
    -//corner nodes
    -
    -int nodes = 5;
    -
    -float nodeStartX[] = new float[nodes];
    -
    -float nodeStartY[] = new float[nodes];
    -
    -float[]nodeX = new float[nodes];
    -
    -float[]nodeY = new float[nodes];
    -
    -float[]angle = new float[nodes];
    -
    -float[]frequency = new float[nodes];
    -
    -
    -
    -// soft-body dynamics
    -
    -float organicConstant = 1;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  //center shape in window
    -
    -  centerX = width/2;
    -
    -  centerY = height/2;
    -
    -  // iniitalize frequencies for corner nodes
    -
    -  for (int i=0; i<nodes; i++){
    -
    -    frequency[i] = random(5, 12);
    -
    -  }
    -
    -  noStroke();
    -
    -  smooth();
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  //fade background
    -
    -  fill(0, 100);
    -
    -  rect(0,0,width, height);
    -
    -  drawShape();
    -
    -  moveShape();
    -
    -}
    -
    -
    -
    -void drawShape() {
    -
    -  //  calculate node  starting locations
    -
    -  for (int i=0; i<nodes; i++){
    -
    -    nodeStartX[i] = centerX+cos(radians(rotAngle))*radius;
    -
    -    nodeStartY[i] = centerY+sin(radians(rotAngle))*radius;
    -
    -    rotAngle += 360.0/nodes;
    -
    -  }
    -
    -
    -
    -  // draw polygon
    -
    -  curveTightness(organicConstant);
    -
    -  fill(255);
    -
    -  beginShape();
    -
    -  for (int i=0; i<nodes; i++){
    -
    -    curveVertex(nodeX[i], nodeY[i]);
    -
    -  }
    -
    -  for (int i=0; i<nodes-1; i++){
    -
    -    curveVertex(nodeX[i], nodeY[i]);
    -
    -  }
    -
    -  endShape(CLOSE);
    -
    -}
    -
    -
    -
    -void moveShape() {
    -
    -  //move center point
    -
    -  float deltaX = mouseX-centerX;
    -
    -  float deltaY = mouseY-centerY;
    -
    -
    -
    -  // create springing effect
    -
    -  deltaX *= springing;
    -
    -  deltaY *= springing;
    -
    -  accelX += deltaX;
    -
    -  accelY += deltaY;
    -
    -
    -
    -  // move predator's center
    -
    -  centerX += accelX;
    -
    -  centerY += accelY;
    -
    -
    -
    -  // slow down springing
    -
    -  accelX *= damping;
    -
    -  accelY *= damping;
    -
    -
    -
    -  // change curve tightness
    -
    -  organicConstant = 1-((abs(accelX)+abs(accelY))*.1);
    -
    -
    -
    -  //move nodes
    -
    -  for (int i=0; i<nodes; i++){
    -
    -    nodeX[i] = nodeStartX[i]+sin(radians(angle[i]))*(accelX*2);
    -
    -    nodeY[i] = nodeStartY[i]+sin(radians(angle[i]))*(accelY*2);
    -
    -    angle[i]+=frequency[i];
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/spore1/index.html b/learning/topic/spore1/index.html deleted file mode 100644 index fca6ef7..0000000 --- a/learning/topic/spore1/index.html +++ /dev/null @@ -1,525 +0,0 @@ ---- -layout: default ---- -

    Spore1

    - - - -

    by Mike Davis. - - - -A short program for alife experiments. Click in the window to restart. - -Each cell is represented by a pixel on the display as well as an entry in - -the array 'cells'. Each cell has a run() method, which performs actions - -based on the cell's surroundings. Cells run one at a time (to avoid conflicts - -like wanting to move to the same space) and in random order.

    - - - -

    Original Processing.org Example: Spore1
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -World w;
    -
    -int numcells = 0;
    -
    -int maxcells = 4700;
    -
    -Cell[] cells = new Cell[maxcells];
    -
    -color spore_color;
    -
    -// set lower for smoother animation, higher for faster simulation
    -
    -int runs_per_loop = 100;
    -
    -color black = color(0, 0, 0);
    -
    -  
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  frameRate(24);
    -
    -  clearscr();  
    -
    -  w = new World();
    -
    -  spore_color = color(172, 255, 128);
    -
    -  seed();
    -
    -}
    -
    -
    -
    -void seed() 
    -
    -{
    -
    -  // Add cells at random places
    -
    -  for (int i = 0; i < maxcells; i++)
    -
    -  {
    -
    -    int cX = (int)random(width);
    -
    -    int cY = (int)random(height);
    -
    -    if (w.getpix(cX, cY) == black)
    -
    -    {
    -
    -      w.setpix(cX, cY, spore_color);
    -
    -      cells[numcells] = new Cell(cX, cY);
    -
    -      numcells++;
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  // Run cells in random order
    -
    -  for (int i = 0; i < runs_per_loop; i++) {
    -
    -    int selected = min((int)random(numcells), numcells - 1);
    -
    -    cells[selected].run();
    -
    -  }
    -
    -}
    -
    -
    -
    -void clearscr()
    -
    -{
    -
    -  background(0);
    -
    -}
    -
    -
    -
    -class Cell
    -
    -{
    -
    -  int x, y;
    -
    -  Cell(int xin, int yin)
    -
    -  {
    -
    -    x = xin;
    -
    -    y = yin;
    -
    -  }
    -
    -
    -
    -    // Perform action based on surroundings
    -
    -  void run()
    -
    -  {
    -
    -    // Fix cell coordinates
    -
    -    while(x < 0) {
    -
    -      x+=width;
    -
    -    }
    -
    -    while(x > width - 1) {
    -
    -      x-=width;
    -
    -    }
    -
    -    while(y < 0) {
    -
    -      y+=height;
    -
    -    }
    -
    -    while(y > height - 1) {
    -
    -      y-=height;
    -
    -    }
    -
    -    
    -
    -    // Cell instructions
    -
    -    if (w.getpix(x + 1, y) == black) {
    -
    -      move(0, 1);
    -
    -    } else if (w.getpix(x, y - 1) != black && w.getpix(x, y + 1) != black) {
    -
    -      move((int)random(9) - 4, (int)random(9) - 4);
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  // Will move the cell (dx, dy) units if that space is empty
    -
    -  void move(int dx, int dy) {
    -
    -    if (w.getpix(x + dx, y + dy) == black) {
    -
    -      w.setpix(x + dx, y + dy, w.getpix(x, y));
    -
    -      w.setpix(x, y, color(0));
    -
    -      x += dx;
    -
    -      y += dy;
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -//  The World class simply provides two functions, get and set, which access the
    -
    -//  display in the same way as getPixel and setPixel.  The only difference is that
    -
    -//  the World class's get and set do screen wraparound ("toroidal coordinates").
    -
    -class World
    -
    -{
    -
    -  void setpix(int x, int y, int c) {
    -
    -    while(x < 0) x+=width;
    -
    -    while(x > width - 1) x-=width;
    -
    -    while(y < 0) y+=height;
    -
    -    while(y > height - 1) y-=height;
    -
    -    set(x, y, c);
    -
    -  }
    -
    -  
    -
    -  color getpix(int x, int y) {
    -
    -    while(x < 0) x+=width;
    -
    -    while(x > width - 1) x-=width;
    -
    -    while(y < 0) y+=height;
    -
    -    while(y > height - 1) y-=height;
    -
    -    return get(x, y);
    -
    -  }
    -
    -}
    -
    -
    -
    -void mousePressed()
    -
    -{
    -
    -  numcells = 0;
    -
    -  setup();
    -
    -}
    - - - - - diff --git a/learning/topic/spore2/index.html b/learning/topic/spore2/index.html deleted file mode 100644 index ec3e7ce..0000000 --- a/learning/topic/spore2/index.html +++ /dev/null @@ -1,689 +0,0 @@ ---- -layout: default ---- -

    Spore2

    - - - -

    by Mike Davis. - - - -A short program for alife experiments. Click in the window to restart. - -Each cell is represented by a pixel on the display as well as an entry in - -the array 'cells'. Each cell has a run() method, which performs actions - -based on the cell's surroundings. Cells run one at a time (to avoid conflicts - -like wanting to move to the same space) and in random order.

    - - - -

    Original Processing.org Example: Spore2
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -World w;
    -
    -int maxcells = 4000;
    -
    -int numcells;
    -
    -Cell[] cells = new Cell[maxcells];
    -
    -color spore1, spore2, spore3, spore4;
    -
    -color black = color(0, 0, 0);
    -
    -// set lower for smoother animation, higher for faster simulation
    -
    -int runs_per_loop = 100;
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  frameRate(24);
    -
    -  clearscr();
    -
    -  w = new World();
    -
    -  spore1 = color(128, 172, 255);
    -
    -  spore2 = color(64, 128, 255);
    -
    -  spore3 = color(255, 128, 172);
    -
    -  spore4 = color(255, 64, 128);
    -
    -  numcells = 0;
    -
    -  seed();
    -
    -}
    -
    -
    -
    -void seed()
    -
    -{
    -
    -  // Add cells at random places
    -
    -  for (int i = 0; i < maxcells; i++)
    -
    -  {
    -
    -    int cX = int(random(width));
    -
    -    int cY = int(random(height));
    -
    -    int c;
    -
    -    float r = random(1);
    -
    -    if (r < 0.25) c = spore1;
    -
    -    else if (r < 0.5) c = spore2;
    -
    -    else if (r < 0.75) c = spore3;
    -
    -    else c = spore4;
    -
    -    if (w.getpix(cX, cY) == black)
    -
    -    {
    -
    -      w.setpix(cX, cY, c);
    -
    -      cells[numcells] = new Cell(cX, cY);
    -
    -      numcells++;
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  // Run cells in random order
    -
    -  for (int i = 0; i < runs_per_loop; i++) {
    -
    -    int selected = min((int)random(numcells), numcells - 1);
    -
    -    cells[selected].run();
    -
    -  }
    -
    -}
    -
    -
    -
    -void clearscr()
    -
    -{
    -
    -  for (int y = 0; y < height; y++) {
    -
    -    for (int x = 0; x < width; x++) {
    -
    -      set(x, y, color(0));
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -class Cell
    -
    -{
    -
    -  int x, y;
    -
    -  Cell(int xin, int yin)
    -
    -  {
    -
    -    x = xin;
    -
    -    y = yin;
    -
    -  }
    -
    -  // Perform action based on surroundings
    -
    -  void run()
    -
    -  {
    -
    -    // Fix cell coordinates
    -
    -    while(x < 0) {
    -
    -      x+=width;
    -
    -    }
    -
    -    while(x > width - 1) {
    -
    -      x-=width;
    -
    -    }
    -
    -    while(y < 0) {
    -
    -      y+=height;
    -
    -    }
    -
    -    while(y > height - 1) {
    -
    -      y-=height;
    -
    -    }
    -
    -
    -
    -    // Cell instructions
    -
    -    int myColor = w.getpix(x, y);
    -
    -    if (myColor == spore1) {
    -
    -      if (w.getpix(x - 1, y + 1) == black && w.getpix(x + 1, y + 1) == black && w.getpix(x, y + 1) == black) move(0, 1);
    -
    -      else if (w.getpix(x - 1, y) == spore2 && w.getpix(x - 1, y - 1) != black) move(0, -1);
    -
    -      else if (w.getpix(x - 1, y) == spore2 && w.getpix(x - 1, y - 1) == black) move(-1, -1);
    -
    -      else if (w.getpix(x + 1, y) == spore1 && w.getpix(x + 1, y - 1) != black) move(0, -1);
    -
    -      else if (w.getpix(x + 1, y) == spore1 && w.getpix(x + 1, y - 1) == black) move(1, -1);
    -
    -      else move((int)random(3) - 1, 0);
    -
    -    } else if (myColor == spore2) {
    -
    -      if (w.getpix(x - 1, y + 1) == black && w.getpix(x + 1, y + 1) == black && w.getpix(x, y + 1) == black) move(0, 1);
    -
    -      else if (w.getpix(x + 1, y) == spore1 && w.getpix(x + 1, y - 1) != black) move(0, -1);
    -
    -      else if (w.getpix(x + 1, y) == spore1 && w.getpix(x + 1, y - 1) == black) move(1, -1);
    -
    -      else if (w.getpix(x - 1, y) == spore2 && w.getpix(x - 1, y - 1) != black) move(0, -1);
    -
    -      else if (w.getpix(x - 1, y) == spore2 && w.getpix(x - 1, y - 1) == black) move(-1, -1);
    -
    -      else move((int)random(3) - 1, 0);
    -
    -    }
    -
    -    else if (myColor == spore3)
    -
    -    {
    -
    -      if (w.getpix(x - 1, y - 1) == black && w.getpix(x + 1, y - 1) == black && w.getpix(x, y - 1) == black) move(0, -1);
    -
    -      else if (w.getpix(x - 1, y) == spore4 && w.getpix(x - 1, y + 1) != black) move(0, 1);
    -
    -      else if (w.getpix(x - 1, y) == spore4 && w.getpix(x - 1, y + 1) == black) move(-1, 1);
    -
    -      else if (w.getpix(x + 1, y) == spore3 && w.getpix(x + 1, y + 1) != black) move(0, 1);
    -
    -      else if (w.getpix(x + 1, y) == spore3 && w.getpix(x + 1, y + 1) == black) move(1, 1);
    -
    -      else move((int)random(3) - 1, 0);
    -
    -    }
    -
    -    else if (myColor == spore4)
    -
    -    {
    -
    -      if (w.getpix(x - 1, y - 1) == black && w.getpix(x + 1, y - 1) == black && w.getpix(x, y - 1) == black) move(0, -1);
    -
    -      else if (w.getpix(x + 1, y) == spore3 && w.getpix(x + 1, y + 1) != black) move(0, 1);
    -
    -      else if (w.getpix(x + 1, y) == spore3 && w.getpix(x + 1, y + 1) == black) move(1, 1);
    -
    -      else if (w.getpix(x - 1, y) == spore4 && w.getpix(x - 1, y + 1) != black) move(0, 1);
    -
    -      else if (w.getpix(x - 1, y) == spore4 && w.getpix(x - 1, y + 1) == black) move(-1, 1);
    -
    -      else move((int)random(3) - 1, 0);
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  // Will move the cell (dx, dy) units if that space is empty
    -
    -  void move(int dx, int dy) {
    -
    -    if (w.getpix(x + dx, y + dy) == black) {
    -
    -      w.setpix(x + dx, y + dy, w.getpix(x, y));
    -
    -      w.setpix(x, y, color(0));
    -
    -      x += dx;
    -
    -      y += dy;
    -
    -    }
    -
    -  }
    -
    -}
    -
    -
    -
    -//  The World class simply provides two functions, get and set, which access the
    -
    -//  display in the same way as getPixel and setPixel.  The only difference is that
    -
    -//  the World class's get and set do screen wraparound ("toroidal coordinates").
    -
    -class World
    -
    -{
    -
    -  void setpix(int x, int y, int c) {
    -
    -    while(x < 0) x+=width;
    -
    -    while(x > width - 1) x-=width;
    -
    -    while(y < 0) y+=height;
    -
    -    while(y > height - 1) y-=height;
    -
    -    set(x, y, c);
    -
    -  }
    -
    -  
    -
    -  color getpix(int x, int y) {
    -
    -    while(x < 0) x+=width;
    -
    -    while(x > width - 1) x-=width;
    -
    -    while(y < 0) y+=height;
    -
    -    while(y > height - 1) y-=height;
    -
    -    return get(x, y);
    -
    -  }
    -
    -}
    -
    -
    -
    -void mousePressed()
    -
    -{
    -
    -  setup();
    -
    -}
    - - - - - diff --git a/learning/topic/spring/index.html b/learning/topic/spring/index.html deleted file mode 100644 index c4ee517..0000000 --- a/learning/topic/spring/index.html +++ /dev/null @@ -1,393 +0,0 @@ ---- -layout: default ---- -

    Spring

    - - - -

    Click, drag, and release the horizontal bar to start the spring.

    - - - -

    Original Processing.org Example: Spring
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -// Spring drawing constants for top bar
    -
    -int s_height = 16;     // Height
    -
    -int left = 50;         // Left position
    -
    -int right = 150;       // Right position
    -
    -int max = 100;         // Maximum Y value
    -
    -int min = 20;          // Minimum Y value
    -
    -boolean over = false;  // If mouse over
    -
    -boolean move = false;  // If mouse down and over
    -
    -
    -
    -// Spring simulation constants
    -
    -float M = 0.8;   // Mass
    -
    -float K = 0.2;   // Spring constant
    -
    -float D = 0.92;  // Damping
    -
    -float R = 60;    // Rest position
    -
    -
    -
    -// Spring simulation variables
    -
    -float ps = 60.0; // Position
    -
    -float vs = 0.0;  // Velocity
    -
    -float as = 0;    // Acceleration
    -
    -float f = 0;     // Force
    -
    -
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  rectMode(CORNERS);
    -
    -  noStroke();
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(102);
    -
    -  updateSpring();
    -
    -  drawSpring();
    -
    -}
    -
    -
    -
    -void drawSpring() 
    -
    -{
    -
    -  // Draw base
    -
    -  fill(0.2);
    -
    -  float b_width = 0.5 * ps + -8;
    -
    -  rect(width/2 - b_width, ps + s_height, width/2 + b_width, 150);
    -
    -
    -
    -  // Set color and draw top bar
    -
    -  if(over || move) { 
    -
    -    fill(255);
    -
    -  } else { 
    -
    -    fill(204);
    -
    -  }
    -
    -  rect(left, ps, right, ps + s_height);
    -
    -}
    -
    -
    -
    -
    -
    -void updateSpring()
    -
    -{
    -
    -  // Update the spring position
    -
    -  if(!move) {
    -
    -    f = -K * (ps - R);    // f=-ky
    -
    -    as = f / M;           // Set the acceleration, f=ma == a=f/m
    -
    -    vs = D * (vs + as);   // Set the velocity
    -
    -    ps = ps + vs;         // Updated position
    -
    -  }
    -
    -  if(abs(vs) < 0.1) {
    -
    -    vs = 0.0;
    -
    -  }
    -
    -
    -
    -  // Test if mouse is over the top bar
    -
    -  if(mouseX > left && mouseX < right && mouseY > ps && mouseY < ps + s_height) {
    -
    -    over = true;
    -
    -  } else {
    -
    -    over = false;
    -
    -  }
    -
    -  
    -
    -  // Set and constrain the position of top bar
    -
    -  if(move) {
    -
    -    ps = mouseY - s_height/2;
    -
    -    if (ps < min) { ps = min; } 
    -
    -    if (ps > max) { ps = max; }
    -
    -  }
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  if(over) {
    -
    -    move = true;
    -
    -  }
    -
    -}
    -
    -
    -
    -void mouseReleased()
    -
    -{
    -
    -  move = false;
    -
    -}
    - - - - - diff --git a/learning/topic/springs/index.html b/learning/topic/springs/index.html deleted file mode 100644 index 910cae3..0000000 --- a/learning/topic/springs/index.html +++ /dev/null @@ -1,645 +0,0 @@ ---- -layout: default ---- -

    Springs

    - - - -

    Move the mouse over one of the circles and click to re-position. - -When you release the mouse, it will snap back into position. - -Each circle has a slightly different behavior.

    - - - -

    Original Processing.org Example: Springs
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int num = 3; 
    -
    -Spring[] springs = new Spring[num]; 
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200, 200);
    -
    -  noStroke(); 
    -
    -  smooth();
    -
    -  springs[0] = new Spring( 70, 160,  20, 0.98, 8.0, 0.1, springs, 0); 
    -
    -  springs[1] = new Spring(150, 110,  60, 0.95, 9.0, 0.1, springs, 1); 
    -
    -  springs[2] = new Spring( 40,  70, 120, 0.90, 9.9, 0.1, springs, 2);   
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  background(51); 
    -
    -  
    -
    -  for (int i=0; i<num; i++) { 
    -
    -    springs[i].update(); 
    -
    -    springs[i].display(); 
    -
    -  }  
    -
    -}
    -
    -
    -
    -void mousePressed() 
    -
    -{
    -
    -  for (int i=0; i<num; i++) { 
    -
    -    springs[i].pressed(); 
    -
    -  } 
    -
    -}
    -
    -
    -
    -void mouseReleased() 
    -
    -{
    -
    -  for (int i=0; i<num; i++) { 
    -
    -    springs[i].released(); 
    -
    -  } 
    -
    -}
    -
    -
    -
    -class Spring 
    -
    -{ 
    -
    -  // Screen values 
    -
    -  float xpos, ypos;
    -
    -  float tempxpos, tempypos; 
    -
    -  int size = 20; 
    -
    -  boolean isOver = false; 
    -
    -  boolean move = false; 
    -
    -
    -
    -  // Spring simulation constants 
    -
    -  float mass;       // Mass 
    -
    -  float k = 0.2;    // Spring constant 
    -
    -  float damp;       // Damping 
    -
    -  float rest_posx;  // Rest position X 
    -
    -  float rest_posy;  // Rest position Y 
    -
    -
    -
    -  // Spring simulation variables 
    -
    -  //float pos = 20.0; // Position 
    -
    -  float velx = 0.0;   // X Velocity 
    -
    -  float vely = 0.0;   // Y Velocity 
    -
    -  float accel = 0;    // Acceleration 
    -
    -  float force = 0;    // Force 
    -
    -
    -
    -  Spring[] friends;
    -
    -  int me;
    -
    -  
    -
    -  // Constructor
    -
    -  Spring(float x, float y, int s, float d, float m, 
    -
    -         float k_in, Spring[] others, int id) 
    -
    -  { 
    -
    -    xpos = tempxpos = x; 
    -
    -    ypos = tempypos = y;
    -
    -    rest_posx = x;
    -
    -    rest_posy = y;
    -
    -    size = s;
    -
    -    damp = d; 
    -
    -    mass = m; 
    -
    -    k = k_in;
    -
    -    friends = others;
    -
    -    me = id; 
    -
    -  } 
    -
    -
    -
    -  void update() 
    -
    -  { 
    -
    -    if (move) { 
    -
    -      rest_posy = mouseY; 
    -
    -      rest_posx = mouseX;
    -
    -    } 
    -
    -
    -
    -    force = -k * (tempypos - rest_posy);  // f=-ky 
    -
    -    accel = force / mass;                 // Set the acceleration, f=ma == a=f/m 
    -
    -    vely = damp * (vely + accel);         // Set the velocity 
    -
    -    tempypos = tempypos + vely;           // Updated position 
    -
    -
    -
    -    force = -k * (tempxpos - rest_posx);  // f=-ky 
    -
    -    accel = force / mass;                 // Set the acceleration, f=ma == a=f/m 
    -
    -    velx = damp * (velx + accel);         // Set the velocity 
    -
    -    tempxpos = tempxpos + velx;           // Updated position 
    -
    -
    -
    -    
    -
    -    if ((over() || move) && !otherOver() ) { 
    -
    -      isOver = true; 
    -
    -    } else { 
    -
    -      isOver = false; 
    -
    -    } 
    -
    -  } 
    -
    -  
    -
    -  // Test to see if mouse is over this spring
    -
    -  boolean over() {
    -
    -    float disX = tempxpos - mouseX;
    -
    -    float disY = tempypos - mouseY;
    -
    -    if (sqrt(sq(disX) + sq(disY)) < size/2 ) {
    -
    -      return true;
    -
    -    } else {
    -
    -      return false;
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  // Make sure no other springs are active
    -
    -  boolean otherOver() {
    -
    -    for (int i=0; i<num; i++) {
    -
    -      if (i != me) {
    -
    -        if (friends[i].isOver == true) {
    -
    -          return true;
    -
    -        }
    -
    -      }
    -
    -    }
    -
    -    return false;
    -
    -  }
    -
    -
    -
    -  void display() 
    -
    -  { 
    -
    -    if (isOver) { 
    -
    -      fill(153); 
    -
    -    } else { 
    -
    -      fill(255); 
    -
    -    } 
    -
    -    ellipse(tempxpos, tempypos, size, size);
    -
    -  } 
    -
    -
    -
    -  void pressed() 
    -
    -  { 
    -
    -    if (isOver) { 
    -
    -      move = true; 
    -
    -    } else { 
    -
    -      move = false; 
    -
    -    }  
    -
    -  } 
    -
    -
    -
    -  void released() 
    -
    -  { 
    -
    -    move = false; 
    -
    -    rest_posx = xpos;
    -
    -    rest_posy = ypos;
    -
    -  } 
    -
    -}
    - - - - - diff --git a/learning/topic/tickle/index.html b/learning/topic/tickle/index.html deleted file mode 100644 index 31c1294..0000000 --- a/learning/topic/tickle/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -layout: default ---- -

    Tickle

    - - - -

    The word "tickle" jitters when the cursor hovers over. - -Sometimes, it can be tickled off the screen.

    - - - -

    Original Processing.org Example: Tickle
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -PFont font;
    -
    -float x = 33; // X-coordinate of text
    -
    -float y = 60; // Y-coordinate of text
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  font = loadFont("AmericanTypewriter-24.vlw");
    -
    -  textFont(font);
    -
    -  noStroke();
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  fill(204, 120);
    -
    -  rect(0, 0, width, height);
    -
    -  fill(0);
    -
    -  // If the cursor is over the text, change the position
    -
    -  if ((mouseX >= x) && (mouseX <= x+55) &&
    -
    -    (mouseY >= y-24) && (mouseY <= y)) {
    -
    -    x += random(-5, 5);
    -
    -    y += random(-5, 5);
    -
    -  }
    -
    -  text("tickle", x, y);
    -
    -}
    - - - - - diff --git a/learning/topic/tileimages/index.html b/learning/topic/tileimages/index.html deleted file mode 100644 index d1f9895..0000000 --- a/learning/topic/tileimages/index.html +++ /dev/null @@ -1,159 +0,0 @@ ---- -layout: default ---- -

    TileImages

    - - - -

    Draws an image larger than the screen by tiling it into small sections. - -The scaleValue variable sets amount of scaling: 1 is 100%, 2 is 200%, etc.

    - - - -

    Original Processing.org Example: TileImages
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -int scaleValue = 3;  // Multiplication factor
    -
    -int xoffset = 0;     // x-axis offset
    -
    -int yoffset = 0;     // y-axis offset
    -
    -
    -
    -void setup() 
    -
    -{
    -
    -  size(600, 600);
    -
    -  stroke(0, 100);
    -
    -}
    -
    -
    -
    -void draw() 
    -
    -{
    -
    -  scale(scaleValue);
    -
    -  translate(xoffset *(-width / scaleValue), yoffset *(-height / scaleValue));
    -
    -  line(10, 150, 500, 50);
    -
    -  line(0, 600, 600, 0);
    -
    -  setOffset();
    -
    -}
    -
    -
    -
    -void setOffset() 
    -
    -{
    -
    -  save("lines-" + xoffset + "-" + yoffset + ".jpg");
    -
    -  xoffset++;
    -
    -  if (xoffset == scaleValue) {
    -
    -    xoffset = 0;
    -
    -    yoffset++;
    -
    -    if (yoffset == scaleValue) {
    -
    -      exit();
    -
    -    }
    -
    -  }
    -
    -  background(204);
    -
    -}
    - - - - - diff --git a/learning/topic/tree/index.html b/learning/topic/tree/index.html deleted file mode 100644 index be4197e..0000000 --- a/learning/topic/tree/index.html +++ /dev/null @@ -1,227 +0,0 @@ ---- -layout: default ---- -

    Tree

    - - - -

    by Daniel Shiffman. - - - -Renders a simple tree-like structure via recursion - -Branching angle calculated as a function of horizontal mouse location

    - - - -

    Original Processing.org Example: Tree
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -float theta;   
    -
    -void setup() {
    -
    -  size(200,200);
    -
    -  smooth();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(0);
    -
    -  frameRate(30);
    -
    -  stroke(255);
    -
    -  // Let's pick an angle 0 to 90 degrees based on the mouse position
    -
    -  float a = (mouseX / (float) width) * 90f;
    -
    -  // Convert it to radians
    -
    -  theta = radians(a);
    -
    -  // Start the tree from the bottom of the screen
    -
    -  translate(width/2,height);
    -
    -  // Draw a line 60 pixels
    -
    -  line(0,0,0,-60);
    -
    -  // Move to the end of that line
    -
    -  translate(0,-60);
    -
    -  // Start the recursive branching!
    -
    -  branch(60);
    -
    -
    -
    -}
    -
    -
    -
    -void branch(float h) {
    -
    -  // Each branch will be 2/3rds the size of the previous one
    -
    -  h *= 0.66f;
    -
    -  
    -
    -  // All recursive functions must have an exit condition!!!!
    -
    -  // Here, ours is when the length of the branch is 2 pixels or less
    -
    -  if (h > 2) {
    -
    -    pushMatrix();    // Save the current state of transformation (i.e. where are we now)
    -
    -    rotate(theta);   // Rotate by theta
    -
    -    line(0,0,0,-h);  // Draw the branch
    -
    -    translate(0,-h); // Move to the end of the branch
    -
    -    branch(h);       // Ok, now call myself to draw two new branches!!
    -
    -    popMatrix();     // Whenever we get back here, we "pop" in order to restore the previous matrix state
    -
    -    
    -
    -    // Repeat the same thing, only branch off to the "left" this time!
    -
    -    pushMatrix();
    -
    -    rotate(-theta);
    -
    -    line(0,0,0,-h);
    -
    -    translate(0,-h);
    -
    -    branch(h);
    -
    -    popMatrix();
    -
    -  }
    -
    -}
    - - - - - diff --git a/learning/topic/wolfram/index.html b/learning/topic/wolfram/index.html deleted file mode 100644 index 7c6d00d..0000000 --- a/learning/topic/wolfram/index.html +++ /dev/null @@ -1,521 +0,0 @@ ---- -layout: default ---- -

    Wolfram

    - - - -

    by Daniel Shiffman. - - - -Simple demonstration of a Wolfram 1-dimensional cellular automata - -When the system reaches bottom of the window, it restarts with a new ruleset - -Mouse click restarts as well.

    - - - -

    Original Processing.org Example: Wolfram
    - -

    - -
    - - - -
    // All Examples Written by Casey Reas and Ben Fry
    -
    -// unless otherwise stated.
    -
    -CA ca;   // An instance object to describe the Wolfram basic Cellular Automata
    -
    -
    -
    -void setup() {
    -
    -  size(200,200);
    -
    -  frameRate(30);
    -
    -  background(0);
    -
    -  int[] ruleset = {0,1,0,1,1,0,1,0};    // An initial rule system
    -
    -  ca = new CA(ruleset);                 // Initialize CA
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  ca.render();    // Draw the CA
    -
    -  ca.generate();  // Generate the next level
    -
    -  
    -
    -  if (ca.finished()) {   // If we're done, clear the screen, pick a new ruleset and restart
    -
    -    background(0);
    -
    -    ca.randomize();
    -
    -    ca.restart();
    -
    -  }
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  background(0);
    -
    -  ca.randomize();
    -
    -  ca.restart();
    -
    -}
    -
    -
    -
    -
    -
    -class CA {
    -
    -
    -
    -  int[] cells;     // An array of 0s and 1s 
    -
    -  int generation;  // How many generations?
    -
    -  int scl;         // How many pixels wide/high is each cell?
    -
    -
    -
    -  int[] rules;     // An array to store the ruleset, for example {0,1,1,0,1,1,0,1}
    -
    -
    -
    -  CA(int[] r) {
    -
    -    rules = r;
    -
    -    scl = 1;
    -
    -    cells = new int[width/scl];
    -
    -    restart();
    -
    -  }
    -
    -  
    -
    -   CA() {
    -
    -    scl = 1;
    -
    -    cells = new int[width/scl];
    -
    -    randomize();
    -
    -    restart();
    -
    -  }
    -
    -  
    -
    -  // Set the rules of the CA
    -
    -  void setRules(int[] r) {
    -
    -    rules = r;
    -
    -  }
    -
    -  
    -
    -  // Make a random ruleset
    -
    -  void randomize() {
    -
    -    for (int i = 0; i < 8; i++) {
    -
    -      rules[i] = int(random(2));
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  // Reset to generation 0
    -
    -  void restart() {
    -
    -    for (int i = 0; i < cells.length; i++) {
    -
    -      cells[i] = 0;
    -
    -    }
    -
    -    cells[cells.length/2] = 1;    // We arbitrarily start with just the middle cell having a state of "1"
    -
    -    generation = 0;
    -
    -  }
    -
    -
    -
    -  // The process of creating the new generation
    -
    -  void generate() {
    -
    -    // First we create an empty array for the new values
    -
    -    int[] nextgen = new int[cells.length];
    -
    -    // For every spot, determine new state by examing current state, and neighbor states
    -
    -    // Ignore edges that only have one neighor
    -
    -    for (int i = 1; i < cells.length-1; i++) {
    -
    -      int left = cells[i-1];   // Left neighbor state
    -
    -      int me = cells[i];       // Current state
    -
    -      int right = cells[i+1];  // Right neighbor state
    -
    -      nextgen[i] = rules(left,me,right); // Compute next generation state based on ruleset
    -
    -    }
    -
    -    // Copy the array into current value
    -
    -    cells = (int[]) nextgen.clone();
    -
    -    generation++;
    -
    -  }
    -
    -  
    -
    -  // This is the easy part, just draw the cells, fill 255 for '1', fill 0 for '0'
    -
    -  void render() {
    -
    -    for (int i = 0; i < cells.length; i++) {
    -
    -      if (cells[i] == 1) fill(255);
    -
    -      else               fill(0);
    -
    -      noStroke();
    -
    -      rect(i*scl,generation*scl, scl,scl);
    -
    -    }
    -
    -  }
    -
    -  
    -
    -  // Implementing the Wolfram rules
    -
    -  // Could be improved and made more concise, but here we can explicitly see what is going on for each case
    -
    -  int rules (int a, int b, int c) {
    -
    -    if (a == 1 && b == 1 && c == 1) return rules[0];
    -
    -    if (a == 1 && b == 1 && c == 0) return rules[1];
    -
    -    if (a == 1 && b == 0 && c == 1) return rules[2];
    -
    -    if (a == 1 && b == 0 && c == 0) return rules[3];
    -
    -    if (a == 0 && b == 1 && c == 1) return rules[4];
    -
    -    if (a == 0 && b == 1 && c == 0) return rules[5];
    -
    -    if (a == 0 && b == 0 && c == 1) return rules[6];
    -
    -    if (a == 0 && b == 0 && c == 0) return rules[7];
    -
    -    return 0;
    -
    -  }
    -
    -  
    -
    -  // The CA is done if it reaches the bottom of the screen
    -
    -  boolean finished() {
    -
    -    if (generation > height/scl) {
    -
    -       return true;
    -
    -    } else {
    -
    -       return false;
    -
    -    }
    -
    -  }
    -
    -}
    - - - - - diff --git a/reference/Array/index.html b/reference/Array/index.html deleted file mode 100644 index cef3042..0000000 --- a/reference/Array/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: withcc -title: Array | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    Array

    Examples
    int[] numbers = new int[3];
    -
    -numbers[0] = 90;
    -
    -numbers[1] = 150;
    -
    -numbers[2] = 30;
    -
    -int a = numbers[0] + numbers[1]; // Sets variable a to 240
    -
    -int b = numbers[1] + numbers[2]; // Sets variable b to 180

    int[] numbers = { 90, 150, 30 };
    -
    -int a = numbers[0] + numbers[1]; // Sets variable a to 240
    -
    -int b = numbers[1] + numbers[2]; // Sets variable b to 180

    int degrees = 360;
    -
    -float[] cos_vals = new float[degrees];
    -
    -for(int i=0; i < degrees; i++) {
    -
    -  cos_vals[i] = cos(TWO_PI/degrees * i);
    -
    -}
    DescriptionAn array is a list of data. It is possible to have an array of any type of data. Each piece of data in an array is identified by an index number representing its position in the array. The first element in the array is [0], the second element is [1], and so on. Arrays are similar to objects, so they must be created with the keyword new. Every array has a variable length which is an integer value for the total number of elements in the array. (People are often confused by the use of length() to get the size of a String and length to get the size of an array. Notice the absence of the parentheses when working with arrays.)
    Syntax
    datatype[] varvar[element] = valuevar.length
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    datatypeany primitive or compound datatype, including user defined classes
    varany valid variable name
    elementint: must not exceed the length of the array - 1
    valuedata to assign to the array element, must be the same datatype as the array
    UsageWeb & Application
    - - - diff --git a/reference/ArrayList/index.html b/reference/ArrayList/index.html deleted file mode 100644 index 74d13f9..0000000 --- a/reference/ArrayList/index.html +++ /dev/null @@ -1,166 +0,0 @@ ---- -layout: withcc -title: ArrayList | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    ArrayList

    Examples
    // This is a code fragment that shows how to use an ArrayList.
    -
    -// It won't compile because it's missing the Ball class.
    -
    -
    -
    -ArrayList balls;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  balls = new ArrayList();  // Create an empty ArrayList
    -
    -  balls.add(new Ball(width/2, 0, 48));  // Start by adding one element
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(255);
    -
    -
    -
    -  // With an array, we say balls.length, with an ArrayList, 
    -
    -  // we say balls.size(). The length of an ArrayList is dynamic. 
    -
    -  // Notice how we are looping through the ArrayList backwards, this 
    -
    -  // is because we are deleting elements from the list  
    -
    -  for (int i = balls.size()-1; i >= 0; i--) { 
    -
    -    // An ArrayList doesn't know what it is storing so we have 
    -
    -    // to cast the object coming out
    -
    -    Ball ball = (Ball) balls.get(i);
    -
    -    ball.move();
    -
    -    ball.display();
    -
    -    if (ball.finished()) {
    -
    -      // Items can be deleted with remove()
    -
    -      balls.remove(i);
    -
    -    }
    -
    -  }  
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  // A new ball object is added to the ArrayList, by default to the end
    -
    -  balls.add(new Ball(mouseX, mouseY, ballWidth));
    -
    -}
    DescriptionAn ArrayList stores a variable number of objects. This is similar to making an array of objects, but with an ArrayList, items can be easily added and removed from the ArrayList and it is resized dynamically. This can be very convenient, but it's slower than making an array of objects when using many elements. - - - -

    - -An ArrayList is a resizable-array implementation of the Java List interface. It has many methods used to control and search its contents. For example, the length of the ArrayList is returned by its size() method, which is an integer value for the total number of elements in the list. An element is added to an ArrayList with the add() method and is deleted with the remove() method. The get() method returns the element at the specified position in the list. (See the above example for context.) - - - -

    - -For a list of the numerous ArrayList features, please read the Java reference description.
    Constructor
    ArrayList()
    -
    -ArrayList(initialCapacity)
    Parameters - - - - - - - - - - - -
    initialCapacityint: defines the initial capacity of the list, it's empty by default
    UsageWeb & Application
    - diff --git a/reference/HALF_PI.gif b/reference/HALF_PI.gif deleted file mode 100644 index 5a62c106fee874e1a9e5cf7835c8942e30c45287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2296 zcmVFMdLtgL5eXY%s$=H}*{oSXmv0OI1}+1c65%*=|4ihO*0($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u%+1cv(9zP<)YaD447HtR#Ks?h z$+OHE0PIBizsH*yxI zhL=8wQ^|4zhoeZ7DqYI7sne%Wqe_L^a%azy+=4>T*MVY74jRIW9ZR;X*|TWVs$I*L zEr+TPI>^iR#}bLH61%nxd!Vo1zkmY^9!$8f;lqd#hpoz!?w?k8yFS>!H?if*m@{h* zyqKcgY*+!bVnEcW2EQIsr$)fKwd>cgW6PdRySDAyvo*Yp+q3RT(vm5oPA#DLk>kjd zD__pMx%21DUmwu0!Lz*34uMYw+n0E8*>2chqkNTbaxNm!Iz&;zy9;{ zx~r@AU93I#1MtNsfPDlOXdr9o>31Ffe;D|88h`>0XyAktnukDwywR0ae-dr?V1V&e zDB_69A(&r=>s{htcM+24qKhV`x8Q~icIY020=}qYg)u6q;TS5~_#cSh?Pz3yJ)+3q zia3UNYw?ABH*Rn#q-!qL&`Bm?N8X z9^vMaXv*niops(xWu8qI$!DJzo;YQfHGY}qoP)CIC!$rV+31*$o~fvwf=)_lp)#5o zsc_zCWvZ$|$!emfz8dSQocj1Ct*%OXtC6!t%IL4a=BnhM zpxR38k--A0?6NyHo2;+Uk|=Het<+X4;ogY4%f%)>%EG)q*hbOYSG2gfGt}lOFv&|;s?Ci)pM|U%x z)6yLDax=qxG}1#Oo37GFOVDQ1kp67+&JswCT+%uREr9@9AIG)ISbGq**i`SEGOSVe zb+(;p3+yr3D@)+l+dGWScFhtbg|`lRFD(H~e^(H=*B2FTc-$Q$yf?@a0HpZgF-wrn z z-vB14Kir9qbpoKE1~Kn$V~he*UC8u5ro1fuP9Ab}(bv4>WRj}xaz#VQ&xdbVj|5*v_! z1~dSQ$t#W*$4JKiGMe#>XiTFT*Vq93jZXq>G$R;CC&oD1@s4;jqZ`EsM>`gv0Rrfor%F|-3e}eqsH#@C>Qtr*-~tN(t60NI z*0GwktY|%}TGL8ag|3sRSzW7K**aITdi4T$&8uGb%GbX7^{;$2CtM`}*uon2uXjDH zVi((2qB8ceiuI}jE-=~3QueZz%`9d&tJ%(S_OqT1Eoes@S_Mc}0jN!_YFEqJ*1Gn! zu#K&3XY1P2()PBv&8=>A8~ap`r7xt^1ZKq z_sd`U=C{894sd`ep3n$7|yVUH_YJss5| z9|{3YNf_h`aO5K*@d&oChfQo^&%-CY76CGpfsJN6``OTrwl+B34Oe^s7T~}KFt*L@ SZhQON$maAI+Kht`00299VYZS0 diff --git a/reference/HALF_PI/index.html b/reference/HALF_PI/index.html deleted file mode 100644 index 561b8cc..0000000 --- a/reference/HALF_PI/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: withcc -title: HALF_PI (1.57079...) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    HALF_PI (1.57079...)

    Examples
    example pic
    float f = 0.0;
    -
    -beginShape(POLYGON);
    -
    -while(f < HALF_PI) {
    -
    -  vertex(width/2 + cos(f)*40, height/2 + sin(f)*40);
    -
    -  f += PI/12.0;
    -
    -}
    -
    -endShape();
    DescriptionHALF_PI is a mathematical constant with the value 1.57079632679489661923. It is half the ratio of the circumference of a circle to its diameter. It is useful in combination with the trigonometric functions sin() and cos().
    Syntax
    HALF_PI
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    RelatedPI
    - - TWO_PI
    - diff --git a/reference/HashMap/index.html b/reference/HashMap/index.html deleted file mode 100644 index 866c17f..0000000 --- a/reference/HashMap/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: withcc -title: HashMap | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    HashMap

    Examples
    HashMap hm = new HashMap();
    -
    -hm.put("Ava", 1);
    -hm.put("Cait", 35);
    -hm.put("Casey", 36);
    -
    -Iterator i = hm.entrySet().iterator();  // Get an iterator
    -
    -while (i.hasNext()) {
    -  Map.Entry me = (Map.Entry)i.next();
    -  print(me.getKey() + " is ");
    -  println(me.getValue());
    -}
    Description

    A HashMap stores a collection of objects, each referenced by a key. This is similar to an Array, only instead of accessing elements with a numeric index, - a String is used. (If you are familiar with associative arrays from other languages, this is the same idea.) - The above example covers basic use, but there's a more extensive example included with the Processing examples.

    -

    For a list of the numerous HashMap features, please read the Java reference description.

    Constructor
    HashMap()

    -
    HashMap(initialCapacity)

    -
    HashMap(initialCapacity,loadFactor)

    -
    HashMap(m)

    -
    Parameters - - - - - - - - - - - - - -
    initialCapacityint: defines the initial capacity of the map, it's 16 by default
    loadFactorfloat: the load factor for the map, the default is 0.75
    mMap: gives the new HashMap the same mappings as this Map -
    -
    UsageWeb & Application
    diff --git a/reference/Object/index.html b/reference/Object/index.html deleted file mode 100644 index 3b26e82..0000000 --- a/reference/Object/index.html +++ /dev/null @@ -1,164 +0,0 @@ ---- -layout: withcc -title: Object | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    Object

    Examples
    // Declare and contruct two objects (h1, h2) from the class HLine 
    -
    -HLine h1 = new HLine(20, 2.0); 
    -
    -HLine h2 = new HLine(50, 2.5); 
    -
    - 
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw() { 
    -
    -  background(204);
    -
    -  h1.update(); 
    -
    -  h2.update();  
    -
    -} 
    -
    - 
    -
    -class HLine { 
    -
    -  float ypos, speed; 
    -
    -  HLine (float y, float s) {  
    -
    -    ypos = y; 
    -
    -    speed = s; 
    -
    -  } 
    -
    -  void update() { 
    -
    -    ypos += speed; 
    -
    -    if (ypos > width) { 
    -
    -      ypos = 0; 
    -
    -    } 
    -
    -    line(0, ypos, width, ypos); 
    -
    -  } 
    -
    -}
    DescriptionObjects are instances of classes. A class is a grouping of related methods (functions) and fields (variables and constants).
    Syntax
    classinstance
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    classthe class to created the object from
    instanceany variable name
    UsageWeb & Application
    Relatedclass
    - - - diff --git a/reference/PFont.gif b/reference/PFont.gif deleted file mode 100644 index 801b30bf2688499e069843d757bd1b389efd8184..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmV;10(t#MNk%w1VPpVg0J8u9;NalY)YSF$_1M_h(b3W6<>l?|?cChl`uh6L&d%!U z>hbaM`1ttz{QUp_|IEzHA^8LV00000EC2ui0Av7U000F4@X1N5y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xVB(<2mIw-gW9%gb z6p978Tmr1wBew%ilGEew`^T;a@ndL#3IPv-XaEvtfru0b1`G%Wj1^l728jy-0~G-U z3kU)Q1$i%zV+IC<25Jrhl8LJh3zGz545GG#iDF|24+9Nj0u&0TqO5Z>2Vj&>Mwd z-2{0xYjuF^Cm!aFiGN=ip3lhut4Bqw01B5I%=fmz}hqkVTg^l?^V) zV>#i^41Na@Ok|XxK}9h!FBr&E?Bu?Z7i`K{=AapaE@Fl~a6>bgR0~5Luq=8Z*vpT} zYP|auQ4XO6@FoQ7CzL2s3&D)m1PMc-0jWJ5DCpRXUDyg@jB>TWD=FQOV@6HdRzU6p zd3`4&7~`J;y}hSz?hMgf>o9vkDg`6WT9dHOJm|_UZ&?Zr9eP5X4DKROU}xg zhPB93TV)vK^Wj*D1BNyjz`R1WUZ@%%$hcs^#)NEJR66 z9fJVyhcqz+H~`>%i1`P)vG2pbzyJRL1}NY&fCLt3;DHDxsNjMOHt67k5Jo8BgcMe2 g;e{AxsNsejcIe@UAciR7h$NP1;)y7xxIzQ~J4zBH(f|Me diff --git a/reference/PFont/index.html b/reference/PFont/index.html deleted file mode 100644 index d61b8bb..0000000 --- a/reference/PFont/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: withcc -title: PFont | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    PFont

    Processing.js BehaviorFont support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    -
    Examples
    example pic
    PFont font;
    -// The font must be located in the sketch's 
    -// "data" directory to load successfully
    -font = loadFont("FFScala.ttf"); 
    -textFont(font, 32); 
    -text("word", 15, 50);
    Description

    PFont is the font class for Processing. The loadFont() - function constructs a new font and textFont() makes a font active. The list() method creates a list of the fonts installed on the computer, - which is useful information to use with the createFont() function for dynamically converting fonts into a format to use with Processing.

    Methods - - - - - -
    PFont_list()Gets a list of the fonts installed on the system. -
    -
    Constructor
    PFont()

    -
    PFont(input)

    Parameters - - - - -
    inputInputStream
    UsageWeb & Application
    RelatedloadFont()
    - textFont()
    - createGraphics()
    diff --git a/reference/PFont_list_/index.html b/reference/PFont_list_/index.html deleted file mode 100644 index da9f992..0000000 --- a/reference/PFont_list_/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: withcc -title: list() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPFont
    Name

    list()

    Processing.js BehaviorFont support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    -
    Examples
    size(200, 200);
    -String[] fontList = PFont.list();
    -println(fontList);
    Description

    Gets a list of the fonts installed on the system. The data is returned as a String array. This list provides the names of each font for input into createFont(), - which allows Processing to dynamically format fonts. This function is meant as a tool for programming local applications and is not recommended for use in applets.

    Syntax
    font.list()

    Parameters - - - - - -
    font any variable of type PFont
    -
    ReturnsString[]
    UsageWeb & Application
    diff --git a/reference/PGraphics/index.html b/reference/PGraphics/index.html deleted file mode 100644 index a64cbd9..0000000 --- a/reference/PGraphics/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: withcc -title: PGraphics | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    PGraphics

    Examples
    example pic
    PGraphics pg;
    -
    -void setup() {
    -  size(100, 100);
    -  pg = createGraphics(80, 80, P3D);
    -}
    -
    -void draw() {
    -  pg.beginDraw();
    -  pg.background(102);
    -  pg.stroke(255);
    -  pg.line(40, 40, mouseX, mouseY);
    -  pg.endDraw();
    -  image(pg, 10, 10); 
    -}
    Description

    Main graphics and rendering context, as well as the base API implementation for processing "core". - Use this class if you need to draw into an off-screen graphics buffer. A PGraphics object can be constructed with the createGraphics() function. - The beginDraw() and endDraw() methods (see above example) are necessary to set up the buffer and to finalize it. - The fields and methods for this class are extensive; for a complete list visit the developer's reference: http://dev.processing.org/reference/core/

    Methods - - - - - - - - - - - -
    beginDraw()Sets up the rendering context
    endDraw()Finalizes the renderering context
    -
    Constructor
    PGraphics()

    -
    PGraphics(width,height)

    -
    PGraphics(width,height,applet)

    Parameters - - - - - - - - - - - - - -
    widthint: width in pixels
    heightint: height in pixels
    appletPApplet
    -
    UsageWeb & Application
    RelatedcreateGraphics()
    diff --git a/reference/PGraphics_beginDraw_/index.html b/reference/PGraphics_beginDraw_/index.html deleted file mode 100644 index b29bbea..0000000 --- a/reference/PGraphics_beginDraw_/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: withcc -title: beginDraw() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPGraphics
    Name

    beginDraw()

    Examples
    PGraphics pg;
    -
    -void setup() {
    -  size(100, 100);
    -  pg = createGraphics(80, 80, P2D);
    -  pg.beginDraw();
    -  pg.background(102);
    -  pg.stroke(255);
    -  pg.line(20, 20, 80, 80);
    -  pg.endDraw();
    -  noLoop();
    -}
    -
    -void draw() {
    -  image(pg, 10, 10); 
    -}
    Description

    Sets the default properties for a PGraphics object. It should be called before anything is drawn into the object.

    Syntax
    graphics.beginDraw()
    Parameters - - - - - -
    graphicsany object of the type PGraphics
    -
    UsageWeb & Application
    diff --git a/reference/PGraphics_endDraw_/index.html b/reference/PGraphics_endDraw_/index.html deleted file mode 100644 index 23de0e6..0000000 --- a/reference/PGraphics_endDraw_/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: withcc -title: endDraw() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPGraphics
    Name

    endDraw()

    Examples
    PGraphics pg;
    -
    -void setup() {
    -  size(100, 100);
    -  pg = createGraphics(80, 80, P2D);
    -  pg.beginDraw();
    -  pg.background(102);
    -  pg.stroke(255);
    -  pg.line(20, 20, 80, 80);
    -  pg.endDraw();
    -  noLoop();
    -}
    -
    -void draw() {
    -  image(pg, 10, 10); 
    -}
    Description

    Finalizes the rendering of a PGraphics object so that it can be shown on screen.

    Syntax
    graphics.endDraw()
    Parameters - - - - - -
    graphicsany object of the type PGraphics
    -
    UsageWeb & Application
    diff --git a/reference/PI.gif b/reference/PI.gif deleted file mode 100644 index 61595dc4a78153a3d2dea8c407d47d2c60177ca6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2451 zcmV;E32gR9Nk%w1VT1sL0K@FMe6^76B@v-sw&++y5$ovAp_3nw0g~MyWjA*{9TTw zykN{}yhfb;0Dyvjgn@;FhKY!ahmDGkjE|ClX?08|Bu7qa2%VmvprN9pq@|{(sHvc8 zPM9M&Wq+R#w6(UkxVgH!yuH4^z!0lvtpS-IvYoXA%+1cv(9zP<)YaD4*aWqo#Fwwg zp0v#s0PICJXU$x|mr zeFvTkqaH5C>_DNc*|TWVs$I*r zt=qS7;da1Uz=J$(fV%Fh7&d0v1Aqey9!$8f;lqd%D_*>~ELNa+0lC^6wg88}j5BNA z%(*jR#~1BJPC3G8MayIZYgoOShwIm{W6PdRySDAyxNB3GTQ_K4m0-nEP`z4!@!ZIh zD__n$0qEX%hh7Mtbohbd#*a7O&b>SC1G_mu7e)*d_0-ojWH+v(z5Dm@_GsjeKXRzz zhu0N(bewyi`UN$OffSs0Vs+*x!Iclq8zS?H2bg~Mmt+1k6W2KK?%4?RmT6*ZP z#QG}drnByftd_+Fd+f7EM$4)Hv(!FmZL`8=%j34XcI&N-;1W6Qxa2DPC9v0ui*AYK z+Ue@M>GII!ugr#fF1=BztE#N}dde@n{-O!6xdIP7V!Wi*s&K#d#<_032+#ZQmJu^* zaIO_QeDQ@0(;Df=AQ#MMyZe%iV9402Tp`Quy8LFwscvj+!ZOcjGNCBroU?r}r~EU0 zLHj(ko;$P4t?e*7Shb{KlWN$5K)dxq7wR;wX z==R%i$1V5VbZ2M5*)-#8wc7KwUH9LB2M+k%?G?e z-||`D+2)*QM!61#OU-uw=cJcD*yl)Ce)HjMTjl!eu)B`BqIoa7cf)J5-P7*8_rCk= zq37P71tS%2{P82rPJ06P+MYJ<^jV>b7_`7`27tc?uI@MkNI(i#sKORnU=A>hp$y+(0T$Y@ zg(PI4&BT|T0r>ETKm?)%wm`%p8W9RL45AW!Si&9ltcOcf;t-oaMJ8CWidej&7PH93 zEqbwwTufpVf4G4ECZ23*>si16)X2s)x{-|*Ac7p{r~(VL@s4X;fF8@J!!rgfJ9`YI zAopm28W{4Bh)kp+7s*IF4)T$F)R-Tywg3ZE@{*R!BqlBJg-&|%lb{TxC`U=kFW6C& zsKjI?&B!w}X2$@qjHN7R2}==r=a#v#04;YZOI9lFkH+DpFhzL7V&d?a#!MzMm#NGF z=u()pjDRnphPwzDz?#^+rZ%%_O)-w~o8SzmIEA>)a&j{Q=#*w3TM0}7r1PEdjAsPA zInH|86Py;1r#{okfN8c5QW0Q4KnE(&f)bRVj)bH_7s}9v4$=Y!jp#uO%7BXcQ-6@E zs75!+(T*nn)S(~^sY4;!(UNxbq7D?9NmshjQ>rqRFny^^V@lJPl9Z(#l>h@IfYK8R zKmtGws!)eYR0(Jenn+EmQfaBRqB^yxJ>{Wso=VlBK69y9&1x(yP}Q#Tbe+GvS_337 z*0PfItY%FsTD7*%wz~DL@U(zh=ZaReHsG!ei0TuKgV(wxG=*Qr_~uX@)TUhayFz3_!E*D#A$uEqDh;mv>p zGT>fFW#GR64zPd+OyB|!*lT|6nt>P0;0E_ML=BFxgbl3V30ru=4NXSkAJRx6I`(d-=;?4zrlIJmm*y0Ibv$nUvQ& zLO=UFyGem?=w4xV1<~}p}(U5-s z^ktG9R<%j)(wNS)rZ=59!5A8&f(x~%M@{PWXaF#uPAPUu&FWUW+BmC0HKo(M>Q~$P z)_;pNV=ZHy^gs&Nzy>yJ0z(1u=~Z?w$C*xcUO1rR`y%2*~Tu?x7s z2Tt&NXGKXW+ILI%f)w95{NWIf_)qM@Az>tZBBrqj@;1)#j(dFK6hBGA_pOYt^uu~6 zPr1rhUJ|W1B;nvF`8d!=^P1bd9rLjG$dPful7EGMKo7dmg}#k?kfAF#h(*s3eGb5; RJN@ZSAI8z|af1*506Ww18(sha diff --git a/reference/PI/index.html b/reference/PI/index.html deleted file mode 100644 index 084fd8d..0000000 --- a/reference/PI/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: withcc -title: PI (3.14159...) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    PI (3.14159...)

    Examples
    example pic
    float f = 0.0;
    -
    -beginShape(POLYGON);
    -
    -while(f < PI) {
    -
    -  vertex(width/2 + cos(f)*40, height/2 + sin(f)*40);
    -
    -  f += PI/12.0;
    -
    -}
    -
    -endShape();
    DescriptionPI is a mathematical constant with the value 3.14159265358979323846. It is the ratio of the circumference of a circle to its diameter. It is useful in combination with the trigonometric functions sin() and cos().
    Syntax
    PI
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    RelatedTWO_PI
    - - HALF_PI
    - - - diff --git a/reference/PImage.jpg b/reference/PImage.jpg deleted file mode 100644 index c30afcc525272bd225f052c850818c220c700867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10095 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 EMa-oSQ6n2U#(O5Q849PV# zycgbD#`AOkuU$x)q)XjN z&#!w1as*~mq)z(g4i$=a-Ttn42#=k(BIEe*MEc}{jNTt!9=35~l>g-WY--WFd8Qx! zhvO?@_pn~^Wf>%S>MMD+Ht}kG`WOL4Q1zZjIu?dp1eAfz`cvfQ+N%EX^=yb@&A#(G z^I;4W5|tUd-CB5&mOWG`zSpc$8b2QU&zp$TMPPxh*lOl%_l9&$Pfb&WVw|ikcr8r3 z{(V!ONDEHDh<=a0rb3S4@?a4x>$qkG%0LOn2>1(2%-(mhtn!u)1*hXwuTQL=K{ldH zHohO^5N5cMH%4^%rO$FZhY4Bw*Lf+fr5L~OLPYa4Idl1onQf?$*q1-^ zM`fYFrBSDQdFW@c(Cs5Lcm>DhXS&<`fcCg(Qadkn80R~}S6NS8`-(}M#alWp>WH(* z4|eVuBHyK*dbutgAV##7^VrUgMk^OG4~xT{dS}e}cVa{F?Dz0*OT%%iC0hm+e*I+< zI1t4DW#H&-pjqnOwtw{9Ho`=!TM+gi zYTI<6Hh^W@L5&+MOBvHMq?Eb~4HheP81(rEy}WYD9Hr@FX7(0i?fMAUo7{;o)!DbT zKeN}VW(<_HA3)R;8yyQ9j^EwaT)lCa|2AU8laqq`u zt?(qt#M@rUIVCBplv&MuN8Sh80G+QWXe1^IkA9}m;{DEM)2Spkcd2#X>elv0@4Bk( zbTq3jNoYw!qaA#|Y98a1|^;k*>c}N&c=+x=F5}$7sU! z2bY3k7uU>_RcS=A^;%noyUmbYMzFGmav6OV3R0HSx;-woZ<2c*FBxCarg?f!-R%+I zzn=A>`-~rVF`--Cm7+gP=rcSQU z6_&kZ9KpLg)1R@cy)Camz6r9)QH(Egt4a7lN4V^sP%mknzrPqo4o7(K&`N-$Q~0sp zoXGhx?2=(ssp;{=e@U@aVCafqxHZ9D6Q936t~f$L)={oKd`FnyP>N{|8I7vg`*b*R zMlga7Cqp8@@7jcGqOqEif+rfV=lI8=^V8^p!QL4N!hsAuGsRH9kl}T{aB8`n z*rm_U7_mi(@gs;Srp{$vp*01es5AQ_{Rw|mA&ozsjMtR^>*eRyP0*O~t9=xEH-};Q z)FnfNov&8NyHDIhTk=~P#`Wf58^adVurt+4d=Q$=hl&;HKwE36FEd4ttR96wHTY4SDUfyYIwg%~><5zVtg7(Y zfLXf^$gKvr{ZrOqS9He2+|KXp<6Z5)+SclBfB2XbOP3O+De3vei@(KJH#OK2`1DD% z*oFCR^<%qbzA?ybdbkG>y-Rc>h)!ne`nBzpcJ4 zd0Wb#9}of(w~fahP)geC~#mhCsDO$S_g1|Gw7x z+I}@tpNS92;iBs^Y1`qJ!kof#pca%0v!)h2F#yIAYw8Mni!V5=?*&8fA4Fq@CAadRiswcAWMz)jH|{qBfx+S+3* z`JJ3$hsf-ZYmH`3=DTUED}Y=6%>kZ|Bu62cKh`f)^+ey%{qjCQxMG&Gy{Kk;9ZAFw zbFcV@3)MWUJ32ZyKsI`ed1lrz$^}oK2A}5gV7kf~{H+}fFTI^@Q&jNgQ6C9O@rI&H zu+%{PXCaO6IDxye7OQouoRBl~-nid@rjx?HOk%9|AcfHmJ#*F>a^8fD5lX}n5ylAf zckbXQW^1T&91+HEfsV(61TKg&^sRG%uV;->wL`OUQN{~is?<9ZUuK25NFUEAsw1h4 zfwy-u9dWPHy9A8Y!SCvG6 zeh+b^mC$akO)s8Xw6oMTiw07RG>RY%cQgc~iTdTp{@VXYD} z%Z2%PC_B^+Y%!f$xZfeF$=77m?#Jrq*mM0BL<9S9&0^A3L`pt=A2xj+ZOs@I#;t0k zX6M2$ze%;z^Hh%F?T*P%Q%VnsC7R=-EZ1px5R>f41i9c~qGaR%s}3Z8{77yNUt$h0 zf5<+M_(ggC>cWA-^P!Bp+GG*-VYT`5o`GW0AlipNZg{l>Z5>Z3hS=UKArjX3Oi@`la2aS8q=n^0 zm(`g*qN-l5uvrccxS z@!UJ_@tI#36f0gdm~IM<<$^&$Xvac}SKqpXWENdh)p@IUeb6j@-o)fvcQK`T5LmVy zpx*PP8@Yy8q%ECKT{1G?CK1#9NFCmKk3iPwE5|4;sYI^(eYg~FZIpLAqO;!yD~-2&W`QQRh%HRFHpO>N2_OmBw58-Wlz0(*y2SnH zzTo{~c7^%kY$c^c9}(;hoBZOga!!aeNce##=+b6WM=)l@|AU#CYom)u_$ehP%yP7h z`II_qjd;;WY2m6_`NUWlY<#L%YiDlonMe5wqNx>wo%#MPe9l;dM0^r15FT|G02vKS zq(;HWT+S<$s{JkH3L=a6o*VZ#=NR8J!kZH)<)zu?Egss05ez*^r6;Bk=CMKBCra&XSf&t=5{#WLY-+DwoYHK5CqAW{KLREFTfc z@k%)dl&Psr|MF6cdBp8<@43ii2n>I9TlUa$eFgZg0%-=0d)<1CJ@XhUyHDMY&NLnj zQ@5{Oa*x>~7yW&VHV-)N&-@KdU$lAbrUm_;4+DRxacg0?oGy3nKQ6YojZmzYlUXY? zr#nRtN@K-a7*ksagjW%(4B@il3OIaDZMYkB!n57*#-?ya{3X!=9GY<+yU}|HaYK(n#tw z%HS!ECg*^*Q8AL!ywjZo0|^tssVa4&)!a1n!%M|sBE4|jTieaG7Ajh~Ua=+X&XcM1 zmwh++p#}VoUs1-ysS~M@wd*lQA8s3AsS&XFs+}rseS%%Pax~UXO>!MKCvEw#`6)$H z4Oc%D49*{-`W)iJLY~hXYobvVSFeEWU*Eg+dTUBo;+6EIsG7woI-zgDPqecUT9xmd z4OeT}2tKoTW(zh*{UVGA^;B-!(^26WzIqQIXfd1PY&Tg6DA@$MkXOu~Rv4LRf2IM0 zamJBc^iFU6Ss~3N^ZX8T9^JLY-sY;-Z0chxEud;&KgJ|JyA8z?zx9C2M=Aw=0-LLP zQn_9#W_Ttt*@A@;Z6P!CgLU0X9if;K$sw*_9CpURj6tclQ|_%@$4A$>J;8d`nT;++ zlk7HR%baoCQhXGp6vzEkumKeh`tedyLuH2>BDYkoLqVY&RGrV-UAR0fUknR%wg#!- zBte>~t>YH%i2C7iKD@Zz^+az#+@0DMESDRB+f|_u1flg5Ay48 z#My8`ihwD`*Qz|Lku-KypIRRcY5){Uua^2gQ&kH4DDn;6cFJn-8!eR6;2;@f&xiXL znqSRu66Q&jZ}fq(4eH*H*tPPR_YvmR=%v7eOQfhZnxsI`J&G$*CkK`I$f0?0GR_*M zs&j8GMH-Kls`-pu8V6};KR<4u3M5?R4+L6!CVDocCdy}-A;OnKDc4T5_tSw9zX1i% zL`f)ptHq>r9;`*}PfZWN0SMHlD98zf{bNprL=o=a$-37>i8(ZTQmNwe;~%^zPsod9 z_z}eX38~F@J+%;b_eu-~x$NQ|)6ZgLRaSu)=DNDSWUS&_Z{@5Ok`5U7ZHASIb3JJ* zulv(KDfu3rvuTY4(AK=~-c%)E4ZMoG%X#Vk!tBxhOf6@TB0RcKqeU5?^J|QpynB^; zrwzt6Bpb&%UMHQQ4^ZziD&X@|?cw0zLEas{*FgaUxWYL48@3g-UjgNeTLKOGbnJiy z31};pzSzc5*55EL?NmwO_2!vPOB>~|ewpAT{R)+`%N{6_k%IMcJW(q(PTU#~v?zO5 zfLb`)my|SCPrgQRCgN=nx~N_&H-u>;|KsT1oAj6pK||_2hB+P*Sdx(YS$s)BN>rxF z9rJ!Su0gJ3Cw@7@B|1Lt`nn1YRTk}EBZ;-u&CM0}W#yaGlgEGs|2Iy%4)$;|7P0}U zRjf+OFVJosCVaeIVnXjyi8lRV}u+B}iY)jzCcOn*ke zA4gxS-%(1fEwycuk?dPlQOa25fG59#>kf0z#7qRDNSz)#QXS`F$LSb!lVABr@}e|Aw*;2 zm&@7ji_;6w&CRRLxr^lo%fbw9y7Q&^!y=n4Dh-vlOk+>lajoAqp2^I~`6R=(TD_E@ z(&&8B@m4nm&(NZ@-%#*RonEwxf>lnnCqvq~L}4GkpB2g;C#4Pz#4J8g&qqAQZwy>h z*xB8~JYR=tTe(T$=10?F;mYr6Xq4efzq|sEcXXVufXV1(+%?2#Y+yk{{R*5ypQEULRE{RL^JY9p2qU?E8h%SjK;>=BCc-@5qdU(*Vsm z=d-jfKnmj1-A4sB>;;D0KR@RQQ&y`#CdLE|IJr&_5*<}7;%_de1{x-`3b`DAjY)+@ zm$R>OGo>nM1t-B}7?OQi@`SfEg67n(>lCVH(v5)O#abp*24bpZacGC!MjY)^l=vb( zMlprhAJT)~qR;~vfJ7<4BoQd#gEZzei$1_S45CH?@Gofla+<`9is;-IG!nyo)!{Nj z8;iV$^l>7PimWiL2tafGVb~X-W!V}Do++f6rs+0;;X+laTwdzGmM~XMMKLkYBtkSp znPetnm=c-1V-33O4`4ywddWSdpEj8hOg~BtmjV=#a!7SK)7mc#C?^xbf`>7_BLPTq z)n&DuL;yYDkx0igsLvhAE8iKWEiHL}huXa*JaqqALL7WSDVj$VuFw!a>VYDx%s6U% zg;?4_0z6R%ddNW^DU`FqQll{*RH9rB|Tk^g`DsZ&MPPV8{{`e`{c_I3IAcFfdh0=SMCYk|t$e**P-*e$ zlB`wZw$oE+sX(Bod+8O>ANPNe{@2YtJU6np$6x(xGZtU=4qw!M^g4(|A1Xhi&UAAR zU~Hy78V$vD8)p3NHhdAEcOtfXoY?G$=RWK8t847KV=RAL&fO2~JMi57`wCp<1Z3Xi zD}(mC-8 z@ccUAMGK_qZ0p4}e!lVAcI@tMzq*+lN?(8O?N<}WsK2@?TtAqrw75IHJFXvRIWzT@ zTQT+LgmmQEX8!KUKc0Ds+je~xZ+W&X^HL>*J&B%?Pjqu6UA1$~)x!?io>nZ*;xTI) zysh)q)MAA)I~IDL!$hlYr&xV)J+cof9-auO8HR`(FW%x`Q+O#@4P$ zD?^>Q+X*BiXDEA+_eCMc zE4{i`!uf=R^=<;BuK;)Y`V-GGUx%OHXIF8(}c_k@&*)@0WU9m9xhu gwX-=}asK{K8zkbD*=uJ~e|equdOiG!17BDEA8}qQ(f|Me diff --git a/reference/PImage/index.html b/reference/PImage/index.html deleted file mode 100644 index a070fc5..0000000 --- a/reference/PImage/index.html +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: withcc -title: PImage | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    PImage

    Examples
    example pic
    PImage b;
    -b = loadImage("laDefense.jpg");
    -image(b, 0, 0);
    Description

    Datatype for storing images. Processing can display .gif, .jpg, .tga, and .png. images. - Images may be displayed in 2D and 3D space. Before an image is used, it must be loaded with the loadImage() function. - The PImage object contains fields for the width and height of the image, as well as an array called pixels[] which contains the values for every pixel in the image. - A group of methods, described below, allow easy access to the image's pixels and alpha channel and simplify the process of compositing.

    -

    Before using the pixels[] array, be sure to use the loadPixels() method on the image to make sure that the pixel data is properly loaded.

    -

    To create a new image, use the createImage() function (do not use new PImage()).

    Fields - - - - - - - - - - - - - - - -
    widthShape document width
    heightShape document width
    pixels[]Shape document width
    -
    Methods - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    get()Reads the color of any pixel or grabs a rectangle of pixels
    set()Writes a color to any pixel or writes an image into another
    copy()Copies the entire image
    mask()Masks part of the image from displaying
    blend()Copies a pixel or rectangle of pixels using different blending modes
    filter()Converts the image to grayscale or black and white
    save()Saves the image to a TIFF, TARGA, PNG, or JPEG file
    resize() Changes the size of an image to a new width and height
    loadPixels() Loads the pixel data for the image into its pixels[] array
    updatePixels()Updates the image with the data in its pixels[] array
    Constructor
    PImage()

    -
    PImage(width,height)

    -
    PImage(width,height,format)

    -
    PImage(img)

    Parameters - - - - - - - - - - - - - - - - -
    widthint: image width
    heightint: image height
    formatEither RGB, ARGB, ALPHA (grayscale alpha channel)
    imgan image: assumes @pjs preload has been used to fully download the data and the img is valid
    UsageWeb & Application
    RelatedloadImage()
    - imageMode()
    - createImage()
    diff --git a/reference/PImage_blend_/index.html b/reference/PImage_blend_/index.html deleted file mode 100644 index 45754a2..0000000 --- a/reference/PImage_blend_/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: withcc -title: blend() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    blend()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="rockies.jpg,degaul.jpg"; */
    -PImage img = loadImage("rockies.jpg");
    -PImage img2 = loadImage("degaul.jpg"); 
    -img.blend(img2, 0, 0, 33, 100, 67, 0, 33, 100, ADD); 
    -image(img, 0, 0);
    -image(img2, 0, 0);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="rockies.jpg,degaul.jpg"; */
    -PImage img = loadImage("rockies.jpg");
    -PImage img2 = loadImage("degaul.jpg"); 
    -img.blend(img2, 0, 0, 33, 100, 67, 0, 33, 100, SUBTRACT); 
    -image(img, 0, 0);
    -image(img2, 0, 0);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="rockies.jpg,degaul.jpg"; */
    -PImage img = loadImage("rockies.jpg");
    -PImage img2 = loadImage("degaul.jpg"); 
    -img.blend(img2, 0, 0, 33, 100, 67, 0, 33, 100, DARKEST); 
    -image(img, 0, 0);
    -image(img2, 0, 0);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="rockies.jpg,degaul.jpg"; */
    -PImage img = loadImage("rockies.jpg");
    -PImage img2 = loadImage("degaul.jpg"); 
    -img.blend(img2, 0, 0, 33, 100, 67, 0, 33, 100, LIGHTEST); 
    -image(img, 0, 0);
    -image(img2, 0, 0);
    Description

    Blends a region of pixels into the image specified by the img parameter. - These copies utilize full alpha channel support and a choice of the following modes to blend the colors of source pixels (A) - with the ones of pixels in the destination image (B):

    -

    BLEND - linear interpolation of colours: C = A*factor + B

    -

    ADD - additive blending with white clip: C = min(A*factor + B, 255)

    -

    SUBTRACT - subtractive blending with black clip: C = max(B - A*factor, 0)

    -

    DARKEST - only the darkest colour succeeds: C = min(A*factor, B)

    -

    LIGHTEST - only the lightest colour succeeds: C = max(A*factor, B)

    -

    DIFFERENCE - subtract colors from underlying image.

    -

    EXCLUSION - similar to DIFFERENCE, but less extreme.

    -

    MULTIPLY - Multiply the colors, result will always be darker.

    -

    SCREEN - Opposite multiply, uses inverse values of the colors.

    -

    OVERLAY - A mix of MULTIPLY and SCREEN. Multiplies dark values, and screens light values.

    -

    HARD_LIGHT - SCREEN when greater than 50% gray, MULTIPLY when lower.

    -

    SOFT_LIGHT - Mix of DARKEST and LIGHTEST. Works like OVERLAY, but not as harsh.

    -

    DODGE - Lightens light tones and increases contrast, ignores darks. Called "Color Dodge" in Illustrator and Photoshop.

    -

    BURN - Darker areas are applied, increasing contrast, ignores lights. Called "Color Burn" in Illustrator and Photoshop.

    -

    All modes use the alpha information (highest byte) of source image pixels as the blending factor. - If the source and destination regions are different sizes, the image will be automatically resized to match the destination size. - If the srcImg parameter is not used, the display window is used as the source image.

    -

    This function ignores imageMode().

    Syntax
    img.blend(x,y,width,height,dx,dy,dwidth,dheight,MODE)

    -
    img.blend(srcImg,x,y,width,height,dx,dy,dwidth,dheight,MODE)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    imgPImage: any variable of type PImage
    xint: X coordinate of the source's upper left corner
    yint: Y coordinate of the source's upper left corner
    widthint: source image width
    heightint: source image height
    dxint: X coordinate of the destination's upper left corner
    dyint: Y coordinate of the destination's upper left corner
    dwidthint: destination image width
    dheightint: destination image height
    srcImgPImage:a image variable referring to the source image.
    MODEEither BLEND, ADD, SUBTRACT, LIGHTEST, DARKEST, DIFFERENCE, EXCLUSION, MULTIPLY, SCREEN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, DODGE, BURN
    -
    ReturnsNone
    UsageWeb & Application
    Relatedalpha()
    - copy()
    diff --git a/reference/PImage_blend_add.jpg b/reference/PImage_blend_add.jpg deleted file mode 100644 index e71ffad72de55581437cf43df7f97fc2c5ecb1f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7988 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 diff --git a/reference/PImage_blend_darkest.jpg b/reference/PImage_blend_darkest.jpg deleted file mode 100644 index 66114430ad7a1c5fd9fef2b46a8f66c676e84980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9234 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�y`cPyiCHox-8{% z9KAc>h#{6R^hNaH(u8~hyE)5@UpRBY-Nm=pO~r~m5sJ8Y$y1W^;8L7ZKmp(@`qEYD zE*R3bPmW_@A9y+WJXS9N#f#n?H$TFw@EDi?;Ynq=0@eJ4&*EjIi1R3 zxA8z*4jwjYF)!|1H{JPdb$)uPjluh@m2&ktTL_QSu(yqj&ZXn+hp}Ut;xDpCOeOa# zLrs{7^!lSxtNr@#3aU@UVD_OskANO`xmhuhs*s4`d=QtHaFe8@MMkZR zqV~`O*-9>3PDkU`EAs9tN_Cn!Sj<$wU5ssrzpn`|3A!wJ6-WM3Ej#E;#82#*W`~0$ z)nU$->cqf?R!Jk-ycKz#LUH!mI_%|~DqX4Le8m7ZY$SF@C8y7__s;ftF&zPgDCTGD zpF9jRIsYBIGs*7Z0UQTyDRIM9R2eCdBOgx}mOow}akF>@{IhB5n+95k&DEZbZ z|946bXA3={sqQtYZ^r|pmHQql61b73Bx@Q=luQ8kM#7T8!*UuuysrlUHacfVMa#^W z1u$Z3{anCkznMU8ONQ$IRw#Hq@I-0AEz4G}WDAXqpsvPSj)mJ@u?zU6jkyf0VQ3e* z$-1MDr3DM6?GP-C2G_P0JicSIJwQOXrw6kjIdj6~)}xfK5HC2$ccN$=Y}kyDg767ecK{&91DXc`5XSzY6<0yqj=fAm1yzM8fNP zbj@^iUb`phnEfbA!;U~Bkoc=sMztjy2XGwbr_@p4c227bT!62td;Chlu?ryQ23>$b z_hkwdmjJ31r4Sr4@S;T7=EV)*RY|M5EC|z&Ex6Z)^NJy~;-om&AeG!K!L+@*_X898 zAsmTD>!2x+fW=x10m3&c^eg=2tfH+LKb~6Hwd)niJ*0G79KFW*0^;ks?74 zR?r+_Xyji^qXliZ3`GhjdCr7NXf#N`2v6xPk_cY1g+w=Z2e=p9ttL~ZFO6XTCxE;G90s{k&e59ag1DK%T2?*-)odKk<%o+_xd!k&UrEe>Q94Olt|J_Za1 zz+_aMJ3}}v(6NWARvH0vo3jmLk8kprQnXsiSeT%eT<-g@*7@3xyFb7Mk~7qLiGA z&L^BUPvXm29QW>6guwIMPqBcNbWC(_;}0lWM+qOFzwe??OqMeZgCf%MhXGPaRElt> z)J=dGWHp?y*`0Eobz^9=JjuSx^}#*)@Jj3B5xaQB(|{+|yo=lZ zK?+X|eG5x2)Bl}RZtp1N;D12jsq~}a*cJ<6=`qWk`6zCqGV4cTCR>LVL#2Gp1n%KkKkPKm078jm^b(#6zzYe1S+73e*Y3{5{bteZ@6!9K8#?s0Plj~ zGQBKQGFz9L<>m&iR}P}$!r4ep{ApgL?xr*Y?T}eDK&20GNk@H@dGqEqYh=BF(L(*co4~LO7z(&WF&}EcetiViD z^YSx39ny-bE`TpQsSmjiLnnzih=|CC31dkqM!s2w6ET4~fksv+n(rff*uJIsBl7V{ zj5_vHzJ{HpOKB9Z(1q$n%>>gxIN^y)C85xcAwM3{4(mV(P`myaDJT(+n~-i-a8{~{b^v@T&qZ^aM+f}V$T z_Iignj&}G9?H7>?t=m@8cJ@(hoQv){vROcA2&IAo+^}Z^(1YtB^g7X%?&Z^05;xro939nQG$DRg63(YOob}*}eNBaFK~d@sEaua=ma%?Azc0l&OO>=9Djk zJ)Os%d8sG2zhTC`y&}t&Yf-R+LtbDmUhJ~MzlK!Kgz^p4dqieZE2PhyE(WUza07s5 z3d-Ko_$}OS6yOvJ3;dqBEagIYR)1V|CAujKU0ex71&C~JnckV2dp&tN|Iis$=sRA) V+p8~>yk0ODQde{ouoZGM_dkPVU?Ttk diff --git a/reference/PImage_blend_subtract.jpg b/reference/PImage_blend_subtract.jpg deleted file mode 100644 index 44202be3cd92055301418de33d861f6afbdc8585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8754 zcma)gWmp_dv-a#RZowf)fZ(pdg1bv_had^=P6!g*-66PJkj34DyKK+^VR0vfz{m5P z_j}LZQ*+H+b5&RM++B6|RChluKWzfo3NrFC00;~K7S9*(bOhi?xtrU110Vna_(usm zod9&=7LM;N0gIkz4G01dAV84NFaZF?5dd)e0N|w=0KDdSS_8fSp#Qso|5qUYmH)Vd zL7?Z>=lj16|JRqNJ^%;hpRqtdH~<(21i=A44FC_%xDmh*&@=x32r?oP3Mv=@fS`du z!1H&WpZ^sI0vHhhAt9q+KaciVz=#O{aRq@P2mlTu6)qk&ClWq^_-ig|WJ+!x6bTwa zBAjPqFaiV-f`S4;{iiPw4j6)q08nw_iN8ivH*@B~fA^jnJ5a(Uh}xAPA-`8rgN6s` zOp1`Qek<{txu(S%+~+(%5KzHL{~ss_z`>>hQ*w&qKD!6j_r8{J;ev3SCFH+*k4KG9 zgZGRa^e?#ofPc29;uOdJ$M`IvzLzq8X6yWE6~K7z4~zrBd4`nvXzk)_>nt}4T@ViQ zu~eKt_b3<58k0OeJm}lv;T-cnNSAdr_=WdV1ujPRl_=G`mKpV$B!zBZ3u!KVO%cX*fWE|C%3CC+~#gF{}m{33L!_WFt|Fr zM3%Wy$ZQ$h`qG4RGL~jOdMq&Q5f*n z+3m!ul||I$P#+nJ zl|y+6ntpeW%gV`&FAZa*f?&6J443h-a+Y6p!L7SztEYOPS$D zEW| zOk)rt_`E#i*EveyTF~3d$Sxiq#f9(jVliMNHF-ooJ`@d>DL9>oAIQcZacRd477KOcU>O~IA=c`l%{$b4f+)VJ0v zTsQPit#^#|cZ`zcprQ}_B8+Nj-;wrO#E93-ADTa;rTyDabv)zy?pNXFOogM?e6`DU z`{UO9--Obi4}J^xUywo5ep5j^vIMu()Yb97VLA|i4Q6QWN)rbrdV*8zD`bn(&nMTU5kv+A&mp)l}AjDUYEL8A!`g0GXcrCerG3+GJ(l0y+pMb<-v4t$2 zvbaSZ0w%@QBGK5GMP`)@;sI(3T%KAz_E(#Vtw*nmepBnptl6h?c*@3(`%DSVT6+6U z`o-yRsOL55AQ6YgC~&$`ZZHAA ziUbXuSk@d&o6PkGUTV?uL(#kRMVSK}B)<5axwB&E2(ORGV5Iu0?@=~Ki`7QY9&v1& zoUV+~stadPSY#9H(y+WFR|3}vCI|zz)@v5d9JDg8(Y1&O6lgVvk7?{6#^v7PH90-j z^3p?l$%lbBsGK8Wa#)NOpgDabketlLn1mkV2bXMs%|J}jo!QPt)#s=^n-vX)-Yv`O_|Lx><+*-7N0h)uuao-Q zm70!@@2vFqoJy#4Ny3lMT9x|qbKUR!&F$GLc9u$=5*pbL;l~w=tQE}gr~qF@BGO3cNKKB)r(PeRvEm`B(%&!{2RrKWBKOz z4huUodFJvb9<{{FpeI1q%2L_fzn~OYu5~QyQgE7YGx0gZN^iNZ>RL&)GkHf%kd7V5 z8viSI;gRnN$YXv>CzAM$e01)nLP!>oAMWnAijmQ@sU!@L`lnmY~C*?Q?~TqaFpxA>p1 zl%Nm(c=POL{U7?p9yc&F z1$@N>?{*4Rxs6Sq0Qr?+X7?IYpKe1Kg;C@DhIiqMm9&$*+h|`GyXbh$;YKIhRUN_~ zGRQ3=FOfEpw+D_&B7RgSa>(8N~N}YPq%;?RO9H({vhKh#9FMO*g>^Hr6ANi1RKLQnnWq zgm3TZ$UOlz{G*W@A~zqloo*o6Dy~9|JdfkJLX$hyhEAwLu17ttfZYef>D%P3*yPd7 zS3^&L?MmoP-J|VdI1^_BR5LY&7_PJ6NVV_i-w&%iYH!EFxH#KMrTbL_yMC2l9V+Ji z2@htK$>$j%`^y6llRR9=>HDw7xWr9o_j;yoedO{pwgGO)$i3`mpF1-z_Q;#}7inn9 z3w>S=ot)$DrzQ&lay!dJn4A3jC4%-u2zgf%C10M4>ec;_?)YM`7=ifZ(CI*QLag*k zybkW6{N|~5DfK#ME)j@_@e(HnimB6SGZMTy7hz}Yk1I$pVdk%_TD~iK-s8+bZCzF) z2U{YVeRBdB8%8S1iN4&YRmj>3)JQLka4{P~8E7nccjH}Z?k8XEg ztKMWARcvWM$bv5QF(Woov5D#ABHB%{x*PhGRBjRYiL;cZ>pd*UY?F z3&ahM9^V?0?%v$Rbs4foaf&onjz0}<8)}mwmIO)E7@?^2j%skOEKjLbeUO>>sgT)( zQ*rN5NrJp>8m9u9+C$EdjaoyEUQS1MyT6rDdKo;pe{f|q@weyl$t0o;jE6_*``Vyd zywHTec2v>+al%{{%A2ix^h~kujlbLn7O~yd>*r&lqrGA$=Y05oc+9c&WK3a{5ilT$ zwtV1Jb~tD|)k$AdJ+~i+-oD@%Up!!OU^saYNQH89CVt6?5%r{&k-N)&H4JTu{(wh( z;T?rYNiJ7J!hyXf(u+Kd6Y>NwlL$%(b{M#NCVY3En#Cn#?g94!lHqjd51Ow~*Hn z?p1hkKFs`TPk`I>2M|!k_)f%6d-SCu)d!Z4aVCqj)WnEfTF0{JjP5kfMg~`7On=kR zRH!lX-|*vLLt4M;&>)NJjtQ&ur8eJRAua5VhZV37#v` zzw0SAG3^9yymo3~s7m&E)$RhhcoXg3P6}*>Hghj*jhJEkk$H;LBQYdBLanAfH&rRo zt@Gdvu&U`MS1-1Vwa5i^1EP*l-SPyhNG6{^h67UTEl*c2lfDz{D!j1CO8$6!QMl(K zdKKGw=re1co+XQ$mf$wcZl=>*1K&0z;do?IrrVdPzV)}4z;dVvrmeyVVKz8jKtYo0~pX!sa2D2$qZDvWZUQReMw0d1*qI7=CgNe-sB7m zcm;=b$tTM4Q!7-33}@wy44e+lJ5~r*P}xxR&^Z)WF_fyN$p2&tTM>M>(@z>V$)7NB z`cdFTRlW*2U8roOZ~AmZnuC}9Wx)olt-0BcDUmoQr$0Tf!$J=VCAZmL*AYRzhiYW5 zYbP=V8LSkA=i;ZYb8K|4QHD6Z5&Eh<502IBS&iL;%hq!1?t3M=@+0{=BY0DnI%z}0 z7-$wsM%iu(0O%U?FjWrQ@>bNM@xP%siIw4dea<#iMXdYHOpncTB?S&8t3>& z%JZ2x<8dn6hbvTCk7ZUT6UG;Ionb=tRzC_heeBS57aKuv2iT69^AqrLbBG?pK{KAu zFy@jwQ*JtMT5d=MizIrrtd#*FGAY2&Kul50bzuSDo->#_?FdS$)nGfZm$W)(O<4RL z=X7cBL`q#*BS>NTl}uT0M0RA z&+o>;(w>cnE_S$WL7uwzO5WXZFRY}nCRiL!Pzf{6Piw)L7_pv@Pk@9y>FkE$uV{%1Vk|=o4)tIL z6NC_QF3PW@%7GS&l(uWqD*4GD(Cy;EXe1hu;80M@7_QEmwA`2_r1p^vM*0<~=Y_3k zCpR1Gt+;84L|pY?^lQ>Ok@~IjCdW@Wx6xk%f!;AnnT64+DLf`(_c9c0JeqCWQK!f{ zcBPM!%rWgV95(?PHF6kW8)62QwzEha@gj@^xPh440sfU| zyA1u;?y)Fq%Y57w4e`g9pGM>u=SK%H=>3*|90+L`Y~c6=HiP0anuReyHVa<^Iw&Ky zrA~$*Qbr(h$`LxrGjOm4g!RQXCKVesvqu1vwHa2jK1Hp)%2(!i&m#Nx@<@&Gyr>wi zZ4(j*ZFGpNs|=QV9LhtuL_h&S6rv6nK`WXY`&;}H_Lz7<4zdw*3EDu(W{JMb=_HVi z)h;q8J~c&wEFCtyT#9-#{G}Xt`lPDv8y{zlN;H*1P>TMQ;i10%Dl!pkic_ zoy@*VRS)qtd@qdYNZa%UR;Qk5uC+QwFpJdQE*MJ|BIOl?*so;)8sZ8>i5*CY{-dX?5Z5%gb4-(EzE`&|6k$=Hc8$Lzz|W~+ z_Tvls*8ox=M{>RRIb2317b&5P>n8~!T@R5|Gw!~$f^l7qVoH6r)V`pcMDcF>?k(f5 zA9;aGZ4xU8T$|iBePsJt&V4E9_fz+>vBxJ2YL?t5E;-|Wt};ie*EPI&Y})*s67l0u zraV2v&L+MvehFDMr|-()CePB56q%WpIi>P{0-Q-^Ud~nYD>Cfz4!68%+lf)|dP%Wh z*4F`q_;eM$)y&L;Y#q6$?r;`|b7`9YDR$)2>GF5_JN!j%SeJp~oFBC50$nKTN6~(S z@jL)(^+hf;6lLc>rfn6k5e7E+W^PZh8>~y%_s_m2p(H>eL~(XLqJ@)k*=({7FMRk2 z<#c-j+SDYvVW7tR%n`dJZp3sq>A2>Dgres5xd zLpXrU<0pVtJ5sv&&QXTsJLM80a)WDX2U-|1-`zMqg35>;tlM2O;LNz^ZimKK^VXc% zXY*fn{_j~iHf`Y5-9fKm{mBtnOt$;I6q<825T~qX1)2u9s)ORdeQ`=XEMMaRS`y+w zDYIloaU@JL%GZGY(F-)uy*CX1Av@?f#MmPNe4O9-i>pengyz90;(l^6S8~C8D?FXs z1_Dh<1wneSH@Mwle{zXc*-6G0(q7DNExUfAYhPT=u9+`Jpc9o^XoJdcURx$eOBsMvHd1vnb7X%E) zgQ>z7%rARZ#Z}2T=R0?EOQ}&eLExLK#KXUqAvn`=6bdm2bViIxU+XdK6KmsRW4JnYu8eV3;ePxhHc@$Au2}8?Y1Pt z6ws`J+5q-hOYMmrcFmjLR0HN3gpv$PqwZL^UlRG^vfOo9ZjQ}R(CwQ~_hSN?3>Aq)LW=ZeT(h9oq6JW8*QqZcY=>#mNrk$M@H8vNF^08mZw>eYk-5a0R(st5t%e~~5vvo2@L)Y>M4 zq%inVeWoSeY=MIC8TvKRYjzvJli-_}B>luhDRXI-PZ|^(SCu z>Lj-gvC>0107s0LL~=}w@|A8MWssOkL*`plMvJ!I^dNiU3a?UEoO@X%0y&xsq-=80 zB=mJV3AUXBw9mx|y`>ZYN)hS`3~aUJ`dZizES>Lzqx|ZUO6G_D$E%A8_jF3}G;^zw zzc>P+Xo-q2seY^XQ4qv(co%Cv?w|On*N0_&h?5{`N5rqkKJ7?mW0h&GF2=zJy z{3jrPC@g^T96L5evq7p#Ie=0E%(xXKh10?2nQjR}jvgl?=w>IjhJdN}tKE4DgE7<) z@%y&i+rIV|z?uyBr;!tsvoyJwDmhnSPh5Vh`aoX?1B%m@Xgzr>nO9IA1EWWv8>hHDq^vZT7ujEw$5bBX|KT?qZDMTh+ z8k%;D^DlOO>P$r9MYr*$kk)=0aq!DmWxz*t!g*xjF5}B)-TCy=80;y(?_0=Z#S!g7 z7_r4Xry_>gZDtCMiwbwnw!PuM{WL*^kas!RpOn8csH{-LM@DZ+BVTI(A{Z!(n;t!wkAyYHoVU@4?WuJ zYe92lwAY(EMIdlbYH*9_I;N+4zxFwlEmj&OMPk8J#kF0 zyf!^jB2;T{`&e0CK$WVp(xf-Vs*?M2I^8B;=bHlN9}S^ni@6AJqjQ7;T>-*2WbKry zgO9;D9EUiXTcQY(S7W}@==ILa@h1?t+%nOP*!mFWx*~#h z+n@q%a<9l5q}^HT%)xIlBo@|p@^{rUp_%9i&16kxDY@0NxXJcCA6Wp#W_W#6Ym|-% zCYl>Ewa=jTkIyfn*ZLG<{!TaC4#%iBNhG|cBpgI_YHvO+;#pLSUqZyFp@T&(?#TO{ z`z$W)gbp6-WOmK=M~LrGlrQ8)RoB!sZ_Y2_l3jfr4|96Feo#$ek*`HRl+PBb`K5+9;4<_4j4#UI zGx&me-HeCNYD;tszaL<>R`hI11|Q#mOq!+)EFH6A*0yafL9!I_TFTbav4N$mENI`SVLTFLCnku_e2Rd>&=Q!2!AW(~#pDRNLEwf3|du{k#r zBF#@~&36lWp7)UmO?E7v;wTL@8Wz|U>p{1s*ko&I6U3L1zU#jH$dcv>&azkHHE7`T zUNoI4uR-0HzL>+qA~~sXRLRS@KieZLTpJ@8Wmic@7OH_GjJWd<@jC1$gJY<)&@+2| zzF!G__A+3y>{#?lFCjX~B}faDiwC}jzcKB$&As6SHE>#NMJF77`#^hMR)tf0 ze0j{sqy};cZfY+!c9eRbyhJDaVngs0-HP;P^iO#K+$)bBtNb3%HTR}XnEU3ETegW4 d-t5@^rlyXq-95AUeAONKt{ZmCT=lf_{{TZL|0w_f diff --git a/reference/PImage_copy.jpg b/reference/PImage_copy.jpg deleted file mode 100644 index 8dfcde1bce675575aa9613f4e087d6845b5462c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11455 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 z 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 diff --git a/reference/PImage_copy_/index.html b/reference/PImage_copy_/index.html deleted file mode 100644 index 1b1f5ea..0000000 --- a/reference/PImage_copy_/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: withcc -title: copy() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    copy()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="tower.jpg"; */
    -PImage img = loadImage("tower.jpg");
    -img.copy(50, 0, 50, 100, 0, 0, 50, 100); 
    -image(img, 0, 0);
    -
    Description

    Copies a region of pixels from one image into another. If the source and destination regions aren't the same size, it will automatically resize - source pixels to fit the specified target region. No alpha information is used in the process, however if the source image has an alpha channel set, - it will be copied as well.

    -

    This function ignores imageMode().

    Syntax
    img.copy(sx,sy,swidth,sheight,dx,dy,dwidth,dheight)

    -
    img.copy(srcImg,sx,sy,swidth,sheight,dx,dy,dwidth,dheight)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    imgPImage: any variable of type PImage
    sxint: X coordinate of the source's upper left corner
    syint: Y coordinate of the source's upper left corner
    swidthint: source image width
    sheightint: source image height
    dxint: X coordinate of the destination's upper left corner
    dyint: Y coordinate of the destination's upper left corner
    dwidthint: destination image width
    dheightint: destination image height
    srcImgPImage:a image variable referring to the source image.
    -
    ReturnsNone
    UsageWeb & Application
    Relatedalpha()
    - blend()
    diff --git a/reference/PImage_filter_/index.html b/reference/PImage_filter_/index.html deleted file mode 100644 index 28321d9..0000000 --- a/reference/PImage_filter_/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: withcc -title: filter() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    filter()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="archcrop.jpg"; */
    -PImage a;
    -a = loadImage("archcrop.jpg");
    -image(a, 0, 0);
    -a.filter(GRAY);
    -image(a, 50, 0);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="archcrop.jpg"; */
    -PImage a, b;
    -a = loadImage("archcrop.jpg");
    -b = loadImage("archcrop.jpg");
    -a.filter(THRESHOLD, .6);
    -image(a, 0, 0);
    -b.filter(THRESHOLD, .4);
    -image(b, 50, 0);
    -
    Description

    Filters an image as defined by one of the following modes:

    -

    THRESHOLD - converts the image to black and white pixels depending if they are above or below the threshold defined by the level parameter. - The level must be between 0.0 (black) and 1.0(white). If no level is specified, 0.5 is used.

    -

    GRAY - converts any colors in the image to grayscale equivalents

    -

    INVERT - sets each pixel to its inverse value

    -

    POSTERIZE - limits each channel of the image to the number of colors specified as the level parameter

    -

    BLUR - executes a Guassian blur with the level parameter specifying the extent of the blurring. - If no level parameter is used, the blur is equivalent to Guassian blur of radius 1.

    -

    OPAQUE - sets the alpha channel to entirely opaque.

    -

    ERODE - reduces the light areas with the amount defined by the level parameter.

    -

    DILATE - increases the light areas with the amount defined by the level parameter

    Syntax
    img.filter(MODE)

    -
    img.filter(MODE,srcImg)
    Parameters - - - - - - - - - - - - - -
    imgPImage: any variable of type PImage
    MODEEither THRESHOLD, GRAY, INVERT, POSTERIZE, BLUR, OPAQUE, ERODE, or DILATE
    paramint or float in the range from 0 to 1
    -
    ReturnsNone
    UsageWeb & Application
    diff --git a/reference/PImage_get.jpg b/reference/PImage_get.jpg deleted file mode 100644 index 4cabe223ec1888c56c54b8e1f1b31d04183bb74d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7336 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 H_Y40Ilf143 diff --git a/reference/PImage_get2.jpg b/reference/PImage_get2.jpg deleted file mode 100644 index 8dfcde1bce675575aa9613f4e087d6845b5462c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11455 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 z 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 diff --git a/reference/PImage_get_/index.html b/reference/PImage_get_/index.html deleted file mode 100644 index dc9317c..0000000 --- a/reference/PImage_get_/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: withcc -title: get() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    get()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="tower.jpg"; */
    -PImage img = loadImage("tower.jpg");
    -background(img);
    -noStroke(); 
    -color c = img.get(60, 90); 
    -fill(c); 
    -rect(25, 25, 50, 50);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="tower.jpg"; */
    -PImage img = loadImage("tower.jpg");
    -background(img);
    -PImage b = img.get(50, 0, 50, 100); 
    -image(b, 0, 0);
    Description

    Reads the color of any pixel or grabs a group of pixels. If no parameters are specified, the entire image is returned. Get the value of one pixel by - specifying an x,y coordinate. Get a section of the display window by specifing an additional width and height parameter. - If the pixel requested is outside of the image window, black is returned. The numbers returned are scaled according to the current color ranges, - but only RGB values are returned by this function. Even though you may have drawn a shape with colorMode(HSB), the numbers returned will be in RGB.

    -

    Getting the color of a single pixel with get(x, y) is easy, but not as fast as grabbing the data directly from pixels[]. - The equivalent statement to "get(x, y)" using pixels[] is "pixels[y*width+x]". Processing requires calling loadPixels() to load the display window data into - the pixels[] array before getting the values.

    -

    This function ignores imageMode().

    Syntax
    img.get()

    -
    img.get(x,y)

    -
    img.get(x,y,width,height)

    Parameters - - - - - - - - - - - - - - - - - - - - - -
    imgPImage: any variable of type PImage
    xint: x-coordinate of the pixel
    yint: y-coordinate of the pixel
    widthint: width of pixel rectangle to get
    heightint: height of pixel rectangle to get
    -
    Returnscolor or PImage
    UsageWeb & Application
    Relatedset()
    - pixels[]
    - copy()
    diff --git a/reference/PImage_height.jpg b/reference/PImage_height.jpg deleted file mode 100644 index 96e09cf170e66358f53490bc0ba04703d95fff74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5084 zcma)9cUV(P(?3ao0MY_Tk=}a=AYD30mn!Abdy`(28Yu!w5drClASg%+Q9ydA(haEe zA_y3I2SMbEdhdOo@BQnYb9SEDncbb4-#oi}&gJCgB0!<7p``(UzyRQcdw|PL0Hzk? z=y?wS0eHYKC2+Y7a4S3cI5-1N9XJgL0$jy|5D=3B0DdF@5ZeF%87%-%O<&Fcu>k0Q zC-8p=@-O{89Sj2Dthn~C;eQn_I{_HsuUsG?7yyQWATZEnH|Xl`zyL4=gv;O$5fVZ1 z2tZ(b$UhPPV*mgGd?+CvgaQEYAb3zh+<-qO5Cjh&OaKK$VNw*Va7rpp2{v{P>Z@GW z36*GQRk&fl#)F{*6i}S>i$Guq9)M2(qhw`+Q&GPSRyKSNm71{kyN_lUGxC2@#}UAp zaWzvk4T*6uE>$Y-6fZ$Zm;}bY;Bt=Z;l53Yn-7MN5D-HDtcEKH7zPpbL$kq^4egN_ zO8-tOy!-49#bd@wyJAMsb&dfP93@?xPWV)~fI&FC@cu~`1Y-l>%A$ri*J-=Yk!U3h z>z6%>%V~fFhX-y^T)d$1KVCANS2*&&UjoTA0Zm7C`@M+D95CewBQ2WYWE|PBD#&6A2O^eWnERK-pgy z#pV*on|QU3>-(P=)evyNY45LVN6T2=R|e$%QCDx}jA!HJrEWa4?W2`V&T4WWu~|1Q z>K(VY8K*nvnLzgplsIqa24pp5Dz%=vWSnnNgiN4oL|3=Brzzeo0|vTWE%jS�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 UUR5#IILQN(g@W_;p3ABK1Mhw4&j0`b diff --git a/reference/PImage_height/index.html b/reference/PImage_height/index.html deleted file mode 100644 index c724d28..0000000 --- a/reference/PImage_height/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: withcc -title: height | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    height

    Examples
    example pic
    PImage img = loadImage("armani.jpg");
    -image(img, 20, 10);
    -rect(55, 10, img.width, img.height);
    DescriptionThe height of the image in units of pixels.
    Syntax
    img.height
    Parameters - - - - - -
    imgPImage: any variable of type PImage
    -
    UsageWeb & Application
    diff --git a/reference/PImage_loadPixels_/index.html b/reference/PImage_loadPixels_/index.html deleted file mode 100644 index a02266a..0000000 --- a/reference/PImage_loadPixels_/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: withcc -title: loadPixels() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    loadPixels()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="topanga.jpg"; */
    -int halfImage = width*height/2;
    -PImage myImage = loadImage("topanga.jpg");
    -myImage.loadPixels();
    -for (int i = 0; i < halfImage; i++) {
    -  myImage.pixels[i+halfImage] = pixels[i];
    -}
    -myImage.updatePixels();
    -image(myImage, 0, 0);
    -
    Description

    Loads the pixel data for the image into its pixels[] array. This function must always be called before reading from or writing to pixels[].

    -

    Certain renderers may or may not seem to require loadPixels() or updatePixels(). - However, the rule is that any time you want to manipulate the pixels[] array, you must first call loadPixels(), and after changes have been made, - call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change.

    Syntax
    img.loadPixels()
    Parameters - - - - - -
    imgPImage: any variable of type PImage
    -
    Returnsvoid
    UsageWeb & Application
    diff --git a/reference/PImage_mask_/index.html b/reference/PImage_mask_/index.html deleted file mode 100644 index 6b9c5bc..0000000 --- a/reference/PImage_mask_/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: withcc -title: mask() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    mask()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="tower.jpg"; */
    -PImage img = loadImage("test.jpg");
    -PImage maskImg = loadImage("mask.jpg");
    -img.mask(maskImg);
    -image(img, 0, 0);
    -image(img, 25, 0);
    -
    Description

    Masks part of an image from displaying by loading another image and using it as an alpha channel. - This mask image should only contain grayscale data, but only the blue color channel is used. - The mask image needs to be the same size as the image to which it is applied.

    -

    In addition to using a mask image, an integer array containing the alpha channel data can be specified directly. - This method is useful for creating dynamically generated alpha masks. - This array must be of the same length as the target image's pixels array and should contain only grayscale data of values between 0-255.

    Syntax
    img.mask(maskImg)

    -
    img.mask(maskArray)
    Parameters - - - - - - - - - - - - - -
    imgPImage: any variable of type PImage
    maskImgPImage: any PImage object used as the alpha channel for "img", needs to be same size as "img"
    maskArrayint[]: any array of Integer numbers used as the alpha channel, needs to be same length as the image's pixel array
    -
    ReturnsNone
    UsageWeb & Application
    diff --git a/reference/PImage_pixels.jpg b/reference/PImage_pixels.jpg deleted file mode 100644 index 0c649c730f48ba8376308edee7e9365685d5478a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9799 zcma($by$;azZ)&xAYIbkjdbT2-5?!;Ae|y1QqnNGTe`bjLb|)VCC+@`@0{=7bMJa~ z-OsP{j_q~+bsd1IAR{jW0KxzO7SIpi^%#I9=4%0Dpmi*HZwkxP_D12Y^K< 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 diff --git a/reference/PImage_pixels/index.html b/reference/PImage_pixels/index.html deleted file mode 100644 index fcf1038..0000000 --- a/reference/PImage_pixels/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: withcc -title: pixels[] | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    pixels[]

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="tower.jpg"; */
    -PImage img = loadImage("tower.jpg");
    -int dimension = (img.width*img.height);
    -img.loadPixels();
    -for (int i=0; i < dimension; i+=2) { 
    -  img.pixels[i] = color(0, 0, 0); 
    -} 
    -img.updatePixels();
    -image(img, 0, 0);
    DescriptionArray containing the values for all the pixels in the image. These values are of the color datatype. - This array is the size of the image, meaning if the image is 100x100 pixels, there will be 10000 values and if the window is 200x300 pixels, there will be 60000 values. - The index value defines the position of a value within the array. For example, the statement color b = img.pixels[230] will set the variable b equal to the value at that - location in the array. Before accessing this array, the data must loaded with the loadPixels() method. After the array data has been modified, - the updatePixels() method must be run to update the changes. Without loadPixels(), running the code may (or will in future releases) result in a NullPointerException.
    Syntax
    img.pixels[index]
    Parameters - - - - - - - - - -
    imgPImage: any variable of type PImage
    indexint: must not exceed the size of the array
    -
    UsageWeb & Application
    Relatedget()
    - set()
    - blend()
    - copy()
    diff --git a/reference/PImage_resize.jpg b/reference/PImage_resize.jpg deleted file mode 100644 index ed8b1f5008be1d44b4d39591c328f4504d8b6f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28170 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 diff --git a/reference/PImage_resize_/index.html b/reference/PImage_resize_/index.html deleted file mode 100644 index 9013667..0000000 --- a/reference/PImage_resize_/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: withcc -title: resize() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    resize()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="jelly.jpg"; */
    -PImage img = loadImage("jelly.jpg");
    -image(img, 0, 0);
    -img.resize(100, 50);
    -image(img, 0, 0)
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="jelly.jpg"; */
    -PImage img = loadImage("jelly.jpg");
    -image(img, 0, 0);
    -img.resize(0, 50);
    -image(img, 0, 0);
    -
    Description

    Resize the image to a new width and height. To make the image scale proportionally, use 0 as the value for the wide or high parameter.

    Syntax
    img.resize(wide,high)
    Parameters - - - - - - - - - - - - - -
    imgPImage: any variable of type PImage
    wideint: the resized image width
    highint: the resized image height
    -
    Returnsvoid
    UsageWeb & Application
    Relatedget()
    diff --git a/reference/PImage_resize_2.jpg b/reference/PImage_resize_2.jpg deleted file mode 100644 index f9c29e57aa9c0579853c75a9202a2abb2866ec0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28546 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 - - Class - PImage - - - Name -

    save()

    - - - - Examples - -
    // @pjs preload must be used to preload the image
    -/* @pjs preload="tower.jpg"; */
    -PImage img = loadImage("tower.jpg");
    -img.save("img.jpg");

    -
    // @pjs preload must be used to preload the image
    -/* @pjs preload="tower.jpg"; */
    -size(100, 100);
    -PImage img = loadImage("tower.jpg");
    -PImage newImg = createImage(100, 100, RGB);
    -newImg = img.get();
    -newImg.save("newImg.jpg");
    -
    - - - - - Description -

    Updates the image with the data in its pixels[] array. Use in conjunction with loadPixels(). - If you're only reading pixels from the array, there's no need to call updatePixels().

    -

    Certain renderers may or may not seem to require loadPixels() or updatePixels(). - However, the rule is that any time you want to manipulate the pixels[] array, you must first call loadPixels(), and after changes have been made, - call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change.

    -

    Currently, none of the renderers use the additional parameters to updatePixels(), however this may be implemented in the future.

    - - - Syntax -
    img.save(filename)

    - - - - Parameters - - - - - - - - - - -
    imgPImage: any variable of type PImage
    filenameString: a sequence of letters and numbers
    - - - - Returns - None - - - Usage - Web & Application - - diff --git a/reference/PImage_set.jpg b/reference/PImage_set.jpg deleted file mode 100644 index 52177a1c58729c37d0ef2a36aec83074b5af1b01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8815 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 psK(@4QPomv%^cMI-LgxjI_LH~pR#{~z*=q%i;h diff --git a/reference/PImage_set_/index.html b/reference/PImage_set_/index.html deleted file mode 100644 index ec1f5bf..0000000 --- a/reference/PImage_set_/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: withcc -title: set() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    set()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="tower.jpg"; */
    -PImage img = loadImage("tower.jpg");
    -background(img);
    -noStroke(); 
    -color c = img.get(60, 90); 
    -fill(c); 
    -rect(25, 25, 50, 50);
    Description

    Changes the color of any pixel or writes an image directly into the image. The x and y parameter specify the pixel or the upper-left corner of the image. - The color parameter specifies the color value.

    -

    Setting the color of a single pixel with set(x, y) is easy, but not as fast as putting the data directly into pixels[]. - The equivalent statement to "set(x, y, #000000)" using pixels[] is "pixels[y*width+x] = #000000". Processing requires calling loadPixels() to load the - display window data into the pixels[] array before getting the values and calling updatePixels() to update the window.

    -

    This function ignores imageMode().

    Syntax
    img.set(x,y,color)

    Parameters - - - - - - - - - - - - - - - - - -
    imgPImage: any variable of type PImage
    xint: x-coordinate of the pixel
    yint: y-coordinate of the pixel
    colorcolor: any value of the color datatype
    -
    ReturnsNone
    UsageWeb & Application
    Relatedget()
    - pixels[]
    - copy()
    diff --git a/reference/PImage_updatePixels_/index.html b/reference/PImage_updatePixels_/index.html deleted file mode 100644 index 1776866..0000000 --- a/reference/PImage_updatePixels_/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: withcc -title: updatePixels() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    updatePixels()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="topanga.jpg"; */
    -int halfImage = width*height/2;
    -PImage myImage = loadImage("topanga.jpg");
    -myImage.loadPixels();
    -for (int i = 0; i < halfImage; i++) {
    -  myImage.pixels[i+halfImage] = pixels[i];
    -}
    -myImage.updatePixels();
    -image(myImage, 0, 0);
    -
    Description

    Updates the image with the data in its pixels[] array. Use in conjunction with loadPixels(). - If you're only reading pixels from the array, there's no need to call updatePixels().

    -

    Certain renderers may or may not seem to require loadPixels() or updatePixels(). - However, the rule is that any time you want to manipulate the pixels[] array, you must first call loadPixels(), and after changes have been made, - call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change.

    -

    Currently, none of the renderers use the additional parameters to updatePixels(), however this may be implemented in the future.

    Syntax
    img.updatePixels()

    -
    img.updatePixels(x,y,w,h)
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    imgPImage: any variable of type PImage
    xint: X coordinate of the upper left corner
    yint: Y coordinate of the upper left corner
    wint: the width
    hint: the height
    -
    ReturnsNone
    UsageWeb & Application
    diff --git a/reference/PImage_width.jpg b/reference/PImage_width.jpg deleted file mode 100644 index 96e09cf170e66358f53490bc0ba04703d95fff74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5084 zcma)9cUV(P(?3ao0MY_Tk=}a=AYD30mn!Abdy`(28Yu!w5drClASg%+Q9ydA(haEe zA_y3I2SMbEdhdOo@BQnYb9SEDncbb4-#oi}&gJCgB0!<7p``(UzyRQcdw|PL0Hzk? z=y?wS0eHYKC2+Y7a4S3cI5-1N9XJgL0$jy|5D=3B0DdF@5ZeF%87%-%O<&Fcu>k0Q zC-8p=@-O{89Sj2Dthn~C;eQn_I{_HsuUsG?7yyQWATZEnH|Xl`zyL4=gv;O$5fVZ1 z2tZ(b$UhPPV*mgGd?+CvgaQEYAb3zh+<-qO5Cjh&OaKK$VNw*Va7rpp2{v{P>Z@GW z36*GQRk&fl#)F{*6i}S>i$Guq9)M2(qhw`+Q&GPSRyKSNm71{kyN_lUGxC2@#}UAp zaWzvk4T*6uE>$Y-6fZ$Zm;}bY;Bt=Z;l53Yn-7MN5D-HDtcEKH7zPpbL$kq^4egN_ zO8-tOy!-49#bd@wyJAMsb&dfP93@?xPWV)~fI&FC@cu~`1Y-l>%A$ri*J-=Yk!U3h z>z6%>%V~fFhX-y^T)d$1KVCANS2*&&UjoTA0Zm7C`@M+D95CewBQ2WYWE|PBD#&6A2O^eWnERK-pgy z#pV*on|QU3>-(P=)evyNY45LVN6T2=R|e$%QCDx}jA!HJrEWa4?W2`V&T4WWu~|1Q z>K(VY8K*nvnLzgplsIqa24pp5Dz%=vWSnnNgiN4oL|3=Brzzeo0|vTWE%jS�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 UUR5#IILQN(g@W_;p3ABK1Mhw4&j0`b diff --git a/reference/PImage_width/index.html b/reference/PImage_width/index.html deleted file mode 100644 index e6ccf92..0000000 --- a/reference/PImage_width/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: withcc -title: width | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPImage
    Name

    width

    Examples
    example pic
    PImage img = loadImage("armani.jpg");
    -image(img, 20, 10);
    -rect(55, 10, img.width, img.height);
    DescriptionThe width of the image in units of pixels.
    Syntax
    img.width
    Parameters - - - - - -
    imgPImage: any variable of type PImage
    -
    UsageWeb & Application
    diff --git a/reference/PShape/index.html b/reference/PShape/index.html deleted file mode 100644 index fb1f40a..0000000 --- a/reference/PShape/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -layout: withcc -title: PShape | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    PShape

    Examples
    example pic
    PShape s;
    -s = loadShape("bot.svg");
    -smooth();
    -shape(s, 10, 10, 80, 80);
    Description

    Datatype for storing shapes. Processing can currently load and display SVG (Scalable Vector Graphics) shapes. - Before a shape is used, it must be loaded with the loadShape() function. The shape() function is used to draw the shape to the display window. - The PShape object contain a group of methods, linked below, that can operate on the shape data.

    -

    The loadShape() method supports SVG files created with Inkscape and Adobe Illustrator. - It is not a full SVG implementation, but offers some straightforward support for handling vector data.

    Fields - - - - - - - - - - -
    widthShape document width
    heightShape document width
    -
    Methods - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    isVisible()Returns a boolean value "true" if the image is set to be visible, "false" if not
    setVisible()Sets the shape to be visible or invisible
    disableStyle()Disables the shape's style data and uses Processing styles
    enableStyle()Enables the shape's style data and ignores the Processing styles
    getChild()Returns a child element of a shape as a PShape object
    translate()Displaces the shape
    rotate()Rotates the shape
    rotateX()Rotates the shape around the x-axis
    rotateY()Rotates the shape around the y-axis
    rotateZ()Rotates the shape around the z-axis
    scale()Increases and decreases the size of a shape
    Constructor
    PShape()
    UsageWeb & Application
    Relatedshape()
    - loadShape()
    - shapeMode()
    diff --git a/reference/PShape_disableStyle.jpg b/reference/PShape_disableStyle.jpg deleted file mode 100644 index cdaf250cd195227d5512029dc7ff39f30f91abc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6894 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 B0EGYm diff --git a/reference/PShape_disableStyle_/index.html b/reference/PShape_disableStyle_/index.html deleted file mode 100644 index 7f13d4e..0000000 --- a/reference/PShape_disableStyle_/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: withcc -title: disableStyle() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    disableStyle()

    Examples
    example pic
    // The file "bot.svg" must be in the data folder
    -// of the current sketch to load successfully
    -PShape s;
    -s = loadShape("bot.svg");
    -smooth();
    -shape(s, -30, 10, 80, 80);
    -s.disableStyle();
    -shape(s, 50, 10, 80, 80);
    Description

    Disables the shape's style data and uses Processing's current styles. Styles include attributes such as colors, stroke weight, and stroke joints.

    Syntax
    sh.disableStyle()
    Parameters - - - - - -
    shPShape: any variable of type PShape
    -
    Returnsnone
    UsageWeb & Application
    diff --git a/reference/PShape_enableStyle.jpg b/reference/PShape_enableStyle.jpg deleted file mode 100644 index 4f6e01d9de2d438e94559ce00c73e8181402db43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7193 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 mS{Dp1$>PpbOC%)BN>=K(qIxf(;Q=!*1fu` - - Class - PShape - - - Name -

    enableStyle()

    - - - - Examples - -
    example pic
    // The file "bot.svg" must be in the data folder
    -// of the current sketch to load successfully
    -PShape s;
    -s = loadShape("bot.svg");
    -smooth();
    -s.disableStyle();
    -shape(s, -30, 10, 80, 80);
    -s.enableStyle();
    -shape(s, 50, 10, 80, 80);
    - - - - Description -

    Enables the shape's style data and ignores Processing's current styles. Styles include attributes such as colors, stroke weight, and stroke joints.

    - - - Syntax -
    sh.enableStyle()
    - - - - Parameters - - - - - - -
    shPShape: any variable of type PShape
    - - - - Returns - none - - - - Usage - Web & Application - - - - diff --git a/reference/PShape_getChild.jpg b/reference/PShape_getChild.jpg deleted file mode 100644 index 3988ad2f51c4a5144aeb5adb04b70b22662f8a49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3919 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 GvHt*Yqxdxd diff --git a/reference/PShape_getChild_/index.html b/reference/PShape_getChild_/index.html deleted file mode 100644 index e57b908..0000000 --- a/reference/PShape_getChild_/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: withcc -title: getChild() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    getChild()

    Examples
    example pic
    PShape states;
    -PShape ohio;
    -states = loadShape("tristate.svg");
    -ohio = states.getChild("OH");
    -smooth();
    -background(0);
    -shape(states, -48, 5);
    -ohio.disableStyle();
    -fill(102, 0, 0);
    -shape(ohio, -48, 5);
    -
    Description

    Extracts a child shape from a parent shape. Specify the name of the shape with the target parameter. - The shape is returned as a PShape object, or null is returned if there is an error.

    Syntax
    sh.getChild(target)
    Parameters - - - - - - - - - -
    shPShape: any variable of type PShape
    targetString: the name of the shape to get
    -
    ReturnsPShape or null
    UsageWeb & Application
    diff --git a/reference/PShape_height/index.html b/reference/PShape_height/index.html deleted file mode 100644 index 0a35fed..0000000 --- a/reference/PShape_height/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: withcc -title: height | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    height

    Examples
    // The file "bot.svg" must be in the data folder
    -// of the current sketch to load successfully
    -PShape s;
    -s = loadShape("bot.svg");
    -smooth();
    -shape(s);
    -println(s.height);  // Prints 285.0, the height of the shape
    DescriptionThe height of the PShape document.
    Syntax
    sh.height
    Parameters - - - - - -
    shPShape: any variable of type PShape
    -
    UsageWeb & Application
    diff --git a/reference/PShape_isVisible_/index.html b/reference/PShape_isVisible_/index.html deleted file mode 100644 index 1d507b8..0000000 --- a/reference/PShape_isVisible_/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: withcc -title: isVisible() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    isVisible()

    Examples
    example pic
    // The file "bot.svg" must be in the data folder
    -// of the current sketch to load successfully
    -PShape s;
    -s = loadShape("bot.svg");
    -smooth();
    -shape(s, 10, 10, 80, 80);      // Right shape
    -s.setVisible(false);
    -if (s.isVisible() == false) {  // of if (!s.isVisible) {
    -  noFill();
    -  rect(5, 5, 90, 90); 
    -}
    Description

    Returns a boolean value "true" if the image is set to be visible, "false" if not. This is modified with the setVisible() parameter.

    -

    The visibility of a shape is usually controlled by whatever program created the SVG file. - For instance, this parameter is controlled by showing or hiding the shape in the layers palette in Adobe Illustrator.

    Syntax
    sh.isVisible()
    Parameters - - - - - -
    shPShape: any variable of type PShape
    -
    Returnsnone
    UsageWeb & Application
    diff --git a/reference/PShape_rotateX_/index.html b/reference/PShape_rotateX_/index.html deleted file mode 100644 index c398ef1..0000000 --- a/reference/PShape_rotateX_/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: withcc -title: rotateX() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    rotateX()

    Examples
    PShape s;
    -
    -void setup() {
    -  size(100, 100, P3D);
    -  s = loadShape("ohio.svg");
    -}
    -
    -void draw() {
    -  background(204);
    -  shape(s);
    -}
    -
    -void mousePressed() {
    -  // Rotate the shape around the x-axis each time the mouse is pressed
    -  s.rotateX(0.1);  
    -}
    Description

    Rotates a shape around the x-axis the amount specified by the angle parameter. - Angles should be specified in radians (values from 0 to TWO_PI) or converted to radians with the radians() method.

    -

    Shapes are always rotated around the upper-left corner of their bounding box. Positive numbers rotate objects in a clockwise direction. - Subsequent calls to the method accumulates the effect. For example, calling rotateX(HALF_PI) and then rotateX(HALF_PI) is the same as rotateX(PI). - This transformation is applied directly to the shape, it's not refreshed each time draw() is run.

    -

    This method requires a 3D renderer. You need to pass P3D or OPENGL as a third parameter into the size() method as shown in the example above.

    Syntax
    sh.rotateX(angle)
    Parameters - - - - - - - - - -
    shPShape: any variable of type PShape
    anglefloat: angle of rotation specified in radians
    -
    Returnsnone
    UsageWeb & Application
    diff --git a/reference/PShape_rotateY_/index.html b/reference/PShape_rotateY_/index.html deleted file mode 100644 index ca9743f..0000000 --- a/reference/PShape_rotateY_/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: withcc -title: rotateY() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    rotateY()

    Examples
    PShape s;
    -
    -void setup() {
    -  size(100, 100, P3D);
    -  s = loadShape("ohio.svg");
    -}
    -
    -void draw() {
    -  background(204);
    -  shape(s);
    -}
    -
    -void mousePressed() {
    -  // Rotate the shape around the y-axis each time the mouse is pressed
    -  s.rotateY(0.1);  
    -}
    Description

    Rotates a shape around the y-axis the amount specified by the angle parameter. - Angles should be specified in radians (values from 0 to TWO_PI) or converted to radians with the radians() method.

    -

    Shapes are always rotated around the upper-left corner of their bounding box. Positive numbers rotate objects in a clockwise direction. - Subsequent calls to the method accumulates the effect. For example, calling rotateY(HALF_PI) and then rotateY(HALF_PI) is the same as rotateY(PI). - This transformation is applied directly to the shape, it's not refreshed each time draw() is run.

    -

    This method requires a 3D renderer. You need to pass P3D or OPENGL as a third parameter into the size() method as shown in the example above.

    Syntax
    sh.rotateY(angle)
    Parameters - - - - - - - - - -
    shPShape: any variable of type PShape
    anglefloat: angle of rotation specified in radians
    -
    Returnsnone
    UsageWeb & Application
    diff --git a/reference/PShape_rotateZ_/index.html b/reference/PShape_rotateZ_/index.html deleted file mode 100644 index 7dbee7f..0000000 --- a/reference/PShape_rotateZ_/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: withcc -title: rotateZ() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    rotateZ()

    Examples
    PShape s;
    -
    -void setup() {
    -  size(100, 100, P3D);
    -  s = loadShape("ohio.svg");
    -}
    -
    -void draw() {
    -  background(204);
    -  shape(s);
    -}
    -
    -void mousePressed() {
    -  // Rotate the shape around the z-axis each time the mouse is pressed
    -  s.rotateZ(0.1);  
    -}
    Description

    Rotates a shape around the y-axis the amount specified by the angle parameter. - Angles should be specified in radians (values from 0 to TWO_PI) or converted to radians with the radians() method.

    -

    Shapes are always rotated around the upper-left corner of their bounding box. Positive numbers rotate objects in a clockwise direction. - Subsequent calls to the method accumulates the effect. For example, calling rotateZ(HALF_PI) and then rotateZ(HALF_PI) is the same as rotateZ(PI). - This transformation is applied directly to the shape, it's not refreshed each time draw() is run.

    -

    This method requires a 3D renderer. You need to pass P3D or OPENGL as a third parameter into the size() method as shown in the example above.

    Syntax
    sh.rotateZ(angle)
    Parameters - - - - - - - - - -
    shPShape: any variable of type PShape
    anglefloat: angle of rotation specified in radians
    -
    Returnsnone
    UsageWeb & Application
    diff --git a/reference/PShape_rotate_/index.html b/reference/PShape_rotate_/index.html deleted file mode 100644 index ce45c86..0000000 --- a/reference/PShape_rotate_/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: withcc -title: rotate() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    rotate()

    Examples
    PShape s;
    -
    -void setup() {
    -  size(100, 100);
    -  s = loadShape("ohio.svg");
    -  smooth();
    -}
    -
    -void draw() {
    -  background(204);
    -  shape(s);
    -}
    -
    -void mousePressed() {
    -  // Rotate the shape each time the mouse is pressed
    -  s.rotate(0.1);  
    -}
    -
    Description

    Rotates a shape the amount specified by the angle parameter. - Angles should be specified in radians (values from 0 to TWO_PI) or converted to radians with the radians() method.

    -

    Shapes are always rotated around the upper-left corner of their bounding box. Positive numbers rotate objects in a clockwise direction. - Transformations apply to everything that happens after and subsequent calls to the method accumulates the effect. - For example, calling rotate(HALF_PI) and then rotate(HALF_PI) is the same as rotate(PI). - This transformation is applied directly to the shape, it's not refreshed each time draw() is run.

    Syntax
    sh.rotate(angle)
    Parameters - - - - - - - - - -
    shPShape: any variable of type PShape
    anglefloat: angle of rotation specified in radians
    -
    Returnsnone
    UsageWeb & Application
    diff --git a/reference/PShape_scale_/index.html b/reference/PShape_scale_/index.html deleted file mode 100644 index 2caa4f6..0000000 --- a/reference/PShape_scale_/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: withcc -title: scale() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    scale()

    Examples
    	
    -PShape s;
    -
    -void setup() {
    -  s = loadShape("bot.svg");
    -  smooth();
    -}
    -
    -void draw() {
    -  background(204);
    -  shape(s);
    -}
    -
    -void mousePressed() {
    -  // Shrink the shape 90% each time the mouse is pressed
    -  s.scale(0.9);  
    -}
    Description

    Increases or decreases the size of a shape by expanding and contracting vertices. - Shapes always scale from the relative origin of their bounding box. Scale values are specified as decimal percentages. - For example, the method call scale(2.0) increases the dimension of a shape by 200%. Subsequent calls to the method multiply the effect. - For example, calling scale(2.0) and then scale(1.5) is the same as scale(3.0). This transformation is applied directly to the shape, - it's not refreshed each time draw() is run. -

    -

    Using this fuction with the z parameter requires passing P3D or OPENGL into the size() parameter.

    Syntax
    sh.scale(size)

    -
    sh.scale(x,y)

    -
    sh.scale(x,y,z)
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    shPShape: any variable of type PShape
    sizefloat: percentage to scale the object
    xfloat: percentage to scale the object in the x-axis
    yfloat: percentage to scale the object in the y-axis
    zfloat: percentage to scale the object in the z-axis
    -
    Returnsnone
    UsageWeb & Application
    diff --git a/reference/PShape_setVisible_/index.html b/reference/PShape_setVisible_/index.html deleted file mode 100644 index 3bb8c8a..0000000 --- a/reference/PShape_setVisible_/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: withcc -title: setVisible() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    setVisible()

    Examples
    example pic
    // The file "bot.svg" must be in the data folder
    -// of the current sketch to load successfully
    -PShape s;
    -s = loadShape("bot.svg");
    -smooth();
    -shape(s, 10, 10, 80, 80);      // Right shape
    -s.setVisible(false);
    -if (s.isVisible() == false) {  // of if (!s.isVisible) {
    -  noFill();
    -  rect(5, 5, 90, 90); 
    -}
    Description

    Sets the shape to be visible or invisible. This is determined by the value of the visible parameter.

    -

    The visibility of a shape is usually controlled by whatever program created the SVG file. - For instance, this parameter is controlled by showing or hiding the shape in the layers palette in Adobe Illustrator.

    Syntax
    sh.setVisible(visible)
    Parameters - - - - - - - - - -
    shPShape: any variable of type PShape
    visibleBoolean: "false" makes the shape invisible and "true" makes it visible
    -
    Returnsnone
    UsageWeb & Application
    diff --git a/reference/PShape_translate_/index.html b/reference/PShape_translate_/index.html deleted file mode 100644 index 8e2a8bb..0000000 --- a/reference/PShape_translate_/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: withcc -title: translate() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    translate()

    Examples
    PShape s;
    -
    -void setup() {
    -  s = loadShape("bot.svg");
    -  smooth();
    -}
    -
    -void draw() {
    -  background(204);
    -  shape(s);
    -}
    -
    -void mousePressed() {
    -  // Move the shape 10 pixels right each time the mouse is pressed
    -  s.translate(10, 0);  
    -}
    Description

    Specifies an amount to displace the shape. The x parameter specifies left/right translation, the y parameter specifies up/down translation, - and the z parameter specifies translations toward/away from the screen. Subsequent calls to the method accumulates the effect. - For example, calling translate(50, 0) and then translate(20, 0) is the same as translate(70, 0). - This transformation is applied directly to the shape, it's not refreshed each time draw() is run.

    -

    Using this method with the z parameter requires using the P3D or OPENGL parameter in combination with size.

    Syntax
    sh.translate(x,y)

    -
    sh.translate(x,y,z)
    Parameters - - - - - - - - - - - - - - - - - -
    shPShape: any variable of type PShape
    xint or float: left/right translation
    yint or float: up/down translation
    zint or float: forward/back translation
    -
    Returnsnone
    UsageWeb & Application
    diff --git a/reference/PShape_visible.jpg b/reference/PShape_visible.jpg deleted file mode 100644 index 8c714f837c7eaea24d7fd338b5c50ea2eb071c39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7629 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 Q(o@I_ME~0|=n?UM0Am&xng9R* diff --git a/reference/PShape_width/index.html b/reference/PShape_width/index.html deleted file mode 100644 index dd32a9b..0000000 --- a/reference/PShape_width/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: withcc -title: width | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPShape
    Name

    width

    Examples
    // The file "bot.svg" must be in the data folder
    -// of the current sketch to load successfully
    -PShape s;
    -s = loadShape("bot.svg");
    -smooth();
    -shape(s);
    -println(s.width);  // Prints 281.0, the width of the shape
    DescriptionThe width of the PShape document.
    Syntax
    sh.width
    Parameters - - - - - -
    shPShape: any variable of type PShape
    -
    UsageWeb & Application
    diff --git a/reference/PVector/index.html b/reference/PVector/index.html deleted file mode 100644 index 83e364c..0000000 --- a/reference/PVector/index.html +++ /dev/null @@ -1,165 +0,0 @@ ---- -layout: withcc -title: PVector | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    PVector

    Examples
    PVector v1, v2;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(40, 20);
    -  v2 = new PVector(25, 50); 
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  ellipse(v2.x, v2.y, 12, 12);
    -  v2.add(v1);
    -  ellipse(v2.x, v2.y, 24, 24);
    -}
    Description

    A class to describe a two or three dimensional vector. This datatype stores two or three variables that are commonly used as a position, - velocity, and/or acceleration. Technically, position is a point and velocity and acceleration are vectors, but this is often simplified to consider - all three as vectors. For example, if you consider a rectangle moving across the screen, at any given instant it has a position (the object's location, - expressed as a point.), a velocity (the rate at which the object's position changes per time unit, expressed as a vector), and acceleration (the rate at - which the object's velocity changes per time unit, expressed as a vector). Since vectors represent groupings of values, we cannot simply use traditional - addition/multiplication/etc. Instead, we'll need to do some "vector" math, which is made easy by the methods inside the PVector class.

    -

    There are additional methods and other ways to use some of these methods in the developers reference.

    Fields - - - - - - - - - - - - - - - -
    xx component of the vector
    yy component of the vector
    zz component of the vector
    -
    Methods - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    get()Gets the x, y, z component of the vector
    set()Sets the x, y, z component of the vector
    mag()Calculates the magnitude (length) of the vector and returns the result as a float
    add()Adds one vector to another
    sub() Subtracts one vector from another
    mult()Multiplies the vector by a scalar
    div()Divides the vector by a scalar
    dist()Calculate the Euclidean distance between two points
    dot()Calculates the dot product
    cross()Calculates the cross product
    normalize()Normalizes the vector
    limit()Limits the magnitude of the vector
    angleBetween()Calculates the angle between two vectors
    array()Return a representation of the vector as an array
    Constructor
    PVector()

    -
    PVector(x,y)

    -
    PVector(x,y,z)
    Parameters - - - - - - - - - - - - -
    xfloat: x component
    yfloat: y component
    zfloat: z component
    UsageWeb & Application
    diff --git a/reference/PVector_add_/index.html b/reference/PVector_add_/index.html deleted file mode 100644 index c45a7d8..0000000 --- a/reference/PVector_add_/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: withcc -title: add() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    add()

    Examples
    PVector v1, v2;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(40, 20, 0);
    -  v2 = new PVector(25, 50, 0); 
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  ellipse(v2.x, v2.y, 12, 12);
    -  v2.add(v1);
    -  ellipse(v2.x, v2.y, 24, 24);
    -}
    -
    -
    PVector v;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v = new PVector(40, 20, 0);
    -}
    -
    -void draw() {
    -  ellipse(v.x, v.y, 12, 12);
    -  ellipse(25, 50, 12, 12);
    -  v.add(25, 50, 0);
    -  ellipse(v.x, v.y, 24, 24);
    -}
    -
    -
    -
    PVector v1, v2;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(40, 20, 0);
    -  v2 = new PVector(25, 50, 0); 
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  ellipse(v2.x, v2.y, 12, 12);
    -  PVector v3 = PVector.add(v1, v2);
    -  ellipse(v3.x, v3.y, 24, 24);
    -}
    Description

    Adds x, y, and z components to a vector, adds one vector to another, or adds two independent vectors together. - The version of the method that adds two vectors together is a static method and returns a PVector, the others have no return value -- - they act directly on the vector. See the examples for more context.

    Syntax
    vec.add(x,y,z)

    -
    vec.add(v)

    -
    PVector.add(v1,v2)

    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    vecany variable of type PVector
    xfloat: the x component of the vector
    yfloat: the y component of the vector
    zfloat: the z component of the vector
    vPVector: the x, y, and z components from a PVector object
    v1PVector: the x, y, and z components from a PVector object
    v2PVector: the x, y, and z components from a PVector object
    -
    ReturnsNone or PVector
    UsageWeb & Application
    diff --git a/reference/PVector_angleBetween_/index.html b/reference/PVector_angleBetween_/index.html deleted file mode 100644 index 4a7e513..0000000 --- a/reference/PVector_angleBetween_/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: withcc -title: angleBetween() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    angleBetween()

    Examples
    PVector v1 = new PVector(10, 20);
    -PVector v2 = new PVector(60, 80); 
    -float a = PVector.angleBetween(v1, v2);
    -println(degrees(a));  // Prints "10.304827"
    Description

    Calculates and returns the angle (in radians) between two vectors.

    Syntax
    PVector.angleBetween(v1,v2)

    Parameters - - - - - - - - - - - - - -
    vecany variable of type PVector
    v1PVector: the x, y, and z components from a PVector object
    v2PVector: the x, y, and z components from a PVector object
    -
    Returnsfloat
    UsageWeb & Application
    diff --git a/reference/PVector_array_/index.html b/reference/PVector_array_/index.html deleted file mode 100644 index cfe70a1..0000000 --- a/reference/PVector_array_/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: withcc -title: array() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    array()

    Examples
    PVector v = new PVector(10.0, 20.0, 30.0);
    -float[] f = v.array();
    -println(f[0]);  // Prints "10.0"
    -println(f[1]);  // Prints "20.0"
    -println(f[2]);  // Prints "30.0"
    Description

    Return a representation of this vector as a float array. - This is only for temporary use. If used in any other fashion, the contents should be copied by using the PVector.get() method to copy into your own array.

    Syntax
    PVector.array()

    Parameters - - - - - -
    vecany variable of type PVector
    -
    Returnsfloat[]
    UsageWeb & Application
    diff --git a/reference/PVector_cross_/index.html b/reference/PVector_cross_/index.html deleted file mode 100644 index 3f3b645..0000000 --- a/reference/PVector_cross_/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: withcc -title: cross() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    cross()

    Examples
    PVector v1 = new PVector(10, 20, 2);
    -PVector v2 = new PVector(60, 80, 6); 
    -PVector v3 = v1.cross(v2);
    -println(v3);  // Prints "[ -40.0, 60.0, -400.0 ]"
    Description

    Calculates and returns a vector composed of the cross product between two vectors.

    Syntax
    vec.cross(x,y,z)
    Parameters - - - - - - - - - -
    vecany variable of type PVector
    v PVector: the vector to calculate the cross product with
    -
    ReturnsPVector
    UsageWeb & Application
    diff --git a/reference/PVector_dist_/index.html b/reference/PVector_dist_/index.html deleted file mode 100644 index 617357f..0000000 --- a/reference/PVector_dist_/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: withcc -title: dist() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    dist()

    Examples
    PVector  v1 = new PVector(10, 20, 0);
    -PVector  v2 = new PVector(60, 80, 0); 
    -float d = v1.dist(v2);
    -println(d);  // Prints "78.10249"
    -
    -
    PVector  v1 = new PVector(10, 20, 0);
    -PVector  v2 = new PVector(60, 80, 0); 
    -float d = PVector.dist(v1, v2);
    -println(d);  // Prints "78.10249"
    Description

    Calculates the Euclidean distance between two points (considering a point as a vector object).

    Syntax
    vec.dist(v)

    -
    PVector.dist(v1,v2)

    Parameters - - - - - - - - - - - - - - - - - -
    vecany variable of type PVector
    vPVector: the x, y, and z coordinates of a PVector object
    v1PVector: the x, y, and z components from a PVector object
    v2PVector: the x, y, and z components from a PVector object
    -
    Returnsfloat
    UsageWeb & Application
    diff --git a/reference/PVector_div_/index.html b/reference/PVector_div_/index.html deleted file mode 100644 index 2dc40ae..0000000 --- a/reference/PVector_div_/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: withcc -title: div() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    div()

    Examples
    PVector v;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v = new PVector(30, 60, 0);
    -}
    -
    -void draw() {
    -  ellipse(v.x, v.y, 12, 12);
    -  v.div(6);
    -  ellipse(v.x, v.y, 24, 24);
    -}
    -
    -
    -
    PVector v1, v2;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(90, 80, 0);
    -  v2 = new PVector(2, 10, 0); 
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  ellipse(v2.x, v2.y, 12, 12);
    -  v1.div(v2);
    -  ellipse(v1.x, v1.y, 24, 24);
    -}
    -
    -
    PVector v1;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(30, 60, 0);
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  PVector v2 = PVector.div(v1, 6);
    -  ellipse(v2.x, v2.y, 24, 24);
    -}
    -
    -
    PVector v1, v2;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(5, 10, 0);
    -  v2 = new PVector(15, 8, 0); 
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  ellipse(v2.x, v2.y, 12, 12);
    -  PVector v3 = PVector.div(v1, v2);
    -  ellipse(v3.x, v3.y, 24, 24);
    -}
    Description

    Divides a vector by a scalar or divides one vector by another.

    Syntax
    vec.div(scalar)

    -
    vec.div(v)

    -
    PVector.div(v,scalar)

    -
    PVector.div(v1,v2)

    Parameters - - - - - - - - - - - - - - - - - - - - - -
    vecany variable of type PVector
    scalarfloat: the number to divide with the vector
    vPVector: the vector to divide by the scalar
    v1PVector: the x, y, and z components from a PVector object
    v2PVector: the x, y, and z components from a PVector object
    -
    ReturnsNone or PVector
    UsageWeb & Application
    diff --git a/reference/PVector_dot_/index.html b/reference/PVector_dot_/index.html deleted file mode 100644 index a0a000b..0000000 --- a/reference/PVector_dot_/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: withcc -title: dot() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    dot()

    Examples
    PVector  v = new PVector(10, 20, 0);
    -float d = v.dot(60, 80, 0);
    -println(d);  // Prints "2200.0"
    -
    -
    PVector v1, v2;
    -
    -void setup() {
    -  size(100, 100);
    -  v1 = new PVector(20.0, 30.0, 40.0);
    -  v2 = new PVector(0.0, 0.0, 0.0);
    -  v2.set(v1);
    -  println(v2.x);  // Prints "20.0"
    -  println(v2.y);  // Prints "30.0"
    -  println(v2.z);  // Prints "40.0"
    -}
    -
    -
    PVector  v1 = new PVector(10, 20, 0);
    -PVector  v2 = new PVector(60, 80, 0); 
    -float d = v1.dot(v2);
    -println(d);  // Prints "2200.0"
    Description

    Calculates the dot product of two vectors.

    Syntax
    vec.dot(x,y,z)

    -
    vec.dot(v)

    Parameters - - - - - - - - - - - - - - - - - - - - - -
    vecany variable of type PVector
    xfloat: the x component of the vector
    yfloat: the y component of the vector
    zfloat: the z component of the vector
    vPVector: the x, y, and z components from a PVector object
    -
    Returnsfloat
    UsageWeb & Application
    diff --git a/reference/PVector_get_/index.html b/reference/PVector_get_/index.html deleted file mode 100644 index 0804db6..0000000 --- a/reference/PVector_get_/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: withcc -title: get() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    get()

    Examples
    	
    -PVector v1, v2;
    -
    -void setup() {
    -  size(100, 100);
    -  v1 = new PVector(20.0, 30.0, 40.0);
    -  v2 = new PVector();
    -  v2 = v1.get();
    -  println(v2.x);  // Prints "20.0"
    -  println(v2.y);  // Prints "30.0"
    -  println(v2.z);  // Prints "40.0"
    -}
    Description

    Gets a copy of the vector, returns a PVector object.

    Syntax
    vec.get()
    Parameters - - - - - -
    vecany variable of type PVector
    -
    ReturnsPVector
    UsageWeb & Application
    diff --git a/reference/PVector_limit_/index.html b/reference/PVector_limit_/index.html deleted file mode 100644 index 7072f2e..0000000 --- a/reference/PVector_limit_/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: withcc -title: limit() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    limit()

    Examples
    PVector v = new PVector(10, 20, 2);
    -v.limit(5);
    -println(v);  // Prints "[ 2.2271771, 4.4543543, 0.4454354 ]"
    Description

    Limit the magnitude of this vector to the value used for the max parameter.

    Syntax
    vec.limit(max)
    Parameters - - - - - - - - - -
    vecany variable of type PVector
    maxfloat: the maximum magnitude for the vector
    -
    ReturnsNone
    UsageWeb & Application
    diff --git a/reference/PVector_mag_/index.html b/reference/PVector_mag_/index.html deleted file mode 100644 index b736d3e..0000000 --- a/reference/PVector_mag_/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: withcc -title: mag() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    mag()

    Examples
    PVector v;
    -
    -void setup() {
    -  size(100, 100);
    -  v = new PVector(20.0, 30.0, 40.0);
    -  float m = v.mag();
    -  println(m);  // Prints "53.851646"
    -}
    -
    Description

    Calculates the magnitude (length) of the vector and returns the result as a float (this is simply the equation sqrt(x*x + y*y + z*z).)

    Syntax
    vec.mag()
    Parameters - - - - - -
    vecany variable of type PVector
    -
    Returnsfloat
    UsageWeb & Application
    diff --git a/reference/PVector_mult_/index.html b/reference/PVector_mult_/index.html deleted file mode 100644 index 1414979..0000000 --- a/reference/PVector_mult_/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: withcc -title: mult() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    mult()

    Examples
    PVector v;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v = new PVector(5, 10, 0);
    -}
    -
    -void draw() {
    -  ellipse(v.x, v.y, 12, 12);
    -  v.mult(6);
    -  ellipse(v.x, v.y, 24, 24);
    -}
    -
    -
    PVector v1, v2;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(5, 10, 0);
    -  v2 = new PVector(15, 8, 0); 
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  ellipse(v2.x, v2.y, 12, 12);
    -  v1.mult(v2);
    -  ellipse(v1.x, v1.y, 24, 24);
    -}
    -
    -
    PVector v1;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(5, 10, 0);
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  PVector v2 = PVector.mult(v1, 6);
    -  ellipse(v2.x, v2.y, 24, 24);
    -}
    -
    -
    -
    PVector v1, v2;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(5, 10, 0);
    -  v2 = new PVector(15, 8, 0); 
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  ellipse(v2.x, v2.y, 12, 12);
    -  PVector v3 = PVector.mult(v1, v2);
    -  ellipse(v3.x, v3.y, 24, 24);
    -}
    Description

    Multiplies a vector by a scalar or multiplies one vector by another.

    Syntax
    vec.mult(scalar)

    -
    vec.mult(v)

    -
    PVector.mult(v,scalar)

    -
    PVector.mult(v1,v2)

    Parameters - - - - - - - - - - - - - - - - - - - - - -
    vecany variable of type PVector
    scalarfloat: the number to multiply with the vector
    vPVector: the vector to multiply by the scalar
    v1PVector: the x, y, and z components from a PVector object
    v2PVector: the x, y, and z components from a PVector object
    -
    ReturnsNone or PVector
    UsageWeb & Application
    diff --git a/reference/PVector_normalize_/index.html b/reference/PVector_normalize_/index.html deleted file mode 100644 index 6f0219b..0000000 --- a/reference/PVector_normalize_/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: withcc -title: normalize() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    normalize()

    Examples
    PVector v = new PVector(10, 20, 2);
    -v.normalize();
    -println(v);  // Prints "[ 0.4454354, 0.8908708, 0.089087084 ]"
    Description

    Normalize the vector to length 1 (make it a unit vector).

    Syntax
    vec.normalize()
    Parameters - - - - - -
    vecany variable of type PVector
    -
    ReturnsNone
    UsageWeb & Application
    diff --git a/reference/PVector_set_/index.html b/reference/PVector_set_/index.html deleted file mode 100644 index 4db35c1..0000000 --- a/reference/PVector_set_/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: withcc -title: set() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    set()

    Examples
    PVector v;
    -
    -void setup() {
    -  size(100, 100);
    -  v = new PVector(0.0, 0.0, 0.0);
    -  v.set(20.0, 30.0, 40.0);
    -  println(v.x);  // Prints "20.0"
    -  println(v.y);  // Prints "30.0"
    -  println(v.z);  // Prints "40.0"
    -}
    -
    -
    PVector v1, v2;
    -
    -void setup() {
    -  size(100, 100);
    -  v1 = new PVector(20.0, 30.0, 40.0);
    -  v2 = new PVector(0.0, 0.0, 0.0);
    -  v2.set(v1);
    -  println(v2.x);  // Prints "20.0"
    -  println(v2.y);  // Prints "30.0"
    -  println(v2.z);  // Prints "40.0"
    -}
    -
    -
    PVector v;
    -float[] vvv = { 20.0, 30.0, 40.0 };
    -
    -void setup() {
    -  size(100, 100);
    -  v = new PVector(0.0, 0.0, 0.0);
    -  v.set(vvv);
    -  println(v.x);  // Prints "20.0"
    -  println(v.y);  // Prints "30.0"
    -  println(v.z);  // Prints "40.0"
    -}
    Description

    Sets the x, y, and z component of the vector using three separate variables, the data from a PVector, or the values from a float array.

    Syntax
    vec.set(x,y,z)

    -
    vec.set(v)

    -
    vec.set(array)

    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - -
    vecany variable of type PVector
    xfloat: the x component of the vector
    yfloat: the y component of the vector
    zfloat: the z component of the vector
    vPVector: the x, y, and z components from a PVector object
    arrayfloat[]: the x, y (and maybe z) components from a float array
    -
    UsageWeb & Application
    diff --git a/reference/PVector_sub_/index.html b/reference/PVector_sub_/index.html deleted file mode 100644 index 87b2654..0000000 --- a/reference/PVector_sub_/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: withcc -title: sub() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    sub()

    Examples
    PVector v1, v2;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(40, 20, 0);
    -  v2 = new PVector(65, 70, 0); 
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  ellipse(v2.x, v2.y, 12, 12);
    -  v2.sub(v1);
    -  ellipse(v2.x, v2.y, 24, 24);
    -}
    -
    -
    PVector v;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v = new PVector(65, 70, 0);
    -}
    -
    -void draw() {
    -  ellipse(v.x, v.y, 12, 12);
    -  ellipse(40, 20, 12, 12);
    -  v.sub(40, 20, 0);
    -  ellipse(v.x, v.y, 24, 24);
    -}
    -
    -
    PVector v1, v2;
    -
    -void setup() {
    -  smooth();
    -  noLoop();
    -  v1 = new PVector(65, 70, 0);
    -  v2 = new PVector(40, 20, 0); 
    -}
    -
    -void draw() {
    -  ellipse(v1.x, v1.y, 12, 12);
    -  ellipse(v2.x, v2.y, 12, 12);
    -  PVector v3 = PVector.sub(v1, v2);
    -  ellipse(v3.x, v3.y, 24, 24);
    -}
    Description

    Subtracts x, y, and z components from a vector, subtracts one vector from another, or subtracts two independent vectors. - The version of the method that substracts two vectors is a static method and returns a PVector, the others have no return value -- - they act directly on the vector. See the examples for more context.

    Syntax
    vec.sub(x,y,z)

    -
    vec.sub(v)

    -
    PVector.sub(v1,v2)

    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    vecany variable of type PVector
    xfloat: the x component of the vector
    yfloat: the y component of the vector
    zfloat: the z component of the vector
    vPVector: the x, y, and z components from a PVector object
    v1PVector: the x, y, and z components from a PVector object
    v2PVector: the x, y, and z components from a PVector object
    -
    ReturnsNone or PVector
    UsageWeb & Application
    diff --git a/reference/PVector_x/index.html b/reference/PVector_x/index.html deleted file mode 100644 index 2648367..0000000 --- a/reference/PVector_x/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: withcc -title: x | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    x

    Examples
    PVector v;
    -
    -void setup() {
    -  size(100, 100);
    -  v = new PVector(20.0, 30.0, 40.0);
    -  println(v.x);  // Prints "20.0"
    -  println(v.y);  // Prints "30.0"
    -  println(v.z);  // Prints "40.0"
    -  v.x = 50.0; 
    -  println(v.x);  // Prints "50.0"
    -}
    Description

    The x component of the vector. This field (variable) can be used to both get and set the value (see above example.).

    Syntax
    vec.x

    Parameters - - - - - -
    vecany variable of type PVector
    -
    UsageWeb & Application
    diff --git a/reference/PVector_y/index.html b/reference/PVector_y/index.html deleted file mode 100644 index e6d93b7..0000000 --- a/reference/PVector_y/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: withcc -title: y | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    y

    Examples
    	
    -PVector v;
    -
    -void setup() {
    -  size(100, 100);
    -  v = new PVector(20.0, 30.0, 40.0);
    -  println(v.x);  // Prints "20.0"
    -  println(v.y);  // Prints "30.0"
    -  println(v.z);  // Prints "40.0"
    -  v.y = 50.0; 
    -  println(v.y);  // Prints "50.0"
    -}
    Description

    The y component of the vector. This field (variable) can be used to both get and set the value (see above example.)

    Syntax
    vec.y

    Parameters - - - - - -
    vecany variable of type PVector
    -
    UsageWeb & Application
    diff --git a/reference/PVector_z/index.html b/reference/PVector_z/index.html deleted file mode 100644 index f7c6b91..0000000 --- a/reference/PVector_z/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: withcc -title: z | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassPVector
    Name

    z

    Examples
    PVector v;
    -
    -void setup() {
    -  size(100, 100);
    -  v = new PVector(20.0, 30.0, 40.0);
    -  println(v.x);  // Prints "20.0"
    -  println(v.y);  // Prints "30.0"
    -  println(v.z);  // Prints "40.0"
    -  v.z = 50.0; 
    -  println(v.z);  // Prints "50.0"
    -}
    Description

    The z component of the vector. This field (variable) can be used to both get and set the value (see above example.)

    Syntax
    vec.z

    Parameters - - - - - -
    vecany variable of type PVector
    -
    UsageWeb & Application
    diff --git a/reference/QUARTER_PI/index.html b/reference/QUARTER_PI/index.html deleted file mode 100644 index 58484d4..0000000 --- a/reference/QUARTER_PI/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: withcc -title: QUARTER_PI (0.78539...) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    QUARTER_PI (0.78539...)

    Examples
    float angle = 0.0; 
    -
    -beginShape(POLYGON); 
    -
    -vertex(width/2, height/2);
    -
    -while(angle  QUARTER_PI) { 
    -
    -  vertex(width/2 + cos(angle)*40, height/2 + sin(angle)*40); 
    -
    -  angle += PI/12.0; 
    -
    -} 
    -
    -endShape(CLOSE);
    DescriptionQUARTER_PI is a mathematical constant with the value 0.7853982. It is one quarter the ratio of the circumference of a circle to its diameter. It is useful in combination with the trigonometric functions sin() and cos().
    UsageWeb & Application
    RelatedPI
    - - TWO_PI
    - - HALF_PI
    - - - diff --git a/reference/String/index.html b/reference/String/index.html deleted file mode 100644 index 9295381..0000000 --- a/reference/String/index.html +++ /dev/null @@ -1,246 +0,0 @@ ---- -layout: withcc -title: String | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    String

    Examples
    String str1 = "CCCP";
    -
    -char data[] = {'C', 'C', 'C', 'P'};
    -
    -String str2 = new String(data);
    -
    -println(str1);  // Prints "CCCP" to the console
    -
    -println(str2);  // Prints "CCCP" to the console

    // Comparing String objects, see reference below.
    -
    -String p = "potato";
    -
    -if (p == "potato") {
    -
    -  println("p == potato, yep.");  // this will not print
    -
    -} 
    -
    -// The correct way to compare two Strings
    -
    -if (p.equals("potato")) {
    -
    -  println("Yes, the contents of p and potato are the same.");
    -
    -}

    // Use a backslash to include quotes in a String
    -
    -String quoted = "This one has \"quotes\"";
    -
    -println(quoted);  // This one has "quotes"
    DescriptionA string is a sequence of characters. The class String includes methods for examining individual characters, comparing strings, searching strings, extracting parts of strings, and for converting an entire string uppercase and lowercase. Strings are always defined inside double quotes ("Abc") and characters are always defined inside single quotes('A'). - - - -

    - -To compare the contents of two Strings, use the equals() method, as in "if (a.equals(b))", instead of "if (a == b)". A String is an Object, so comparing them with the == operator only compares whether both Strings are stored in the same memory location. Using the equals() method will ensure that the actual contents are compared. (The troubleshooting reference has a longer explanation.) - -

    - -Because a String is defined within quotes, including quotes in a String requires the \ (backslash) character to be used (see the second example above). This is known as an escape sequence. Other escape sequences include \t for the tab character, and \n for new line. A single backslash is indicated by \. - -

    - -There are more string methods than those linked from this page. Additional String documentation is located at http://java.sun.com/j2se/1.4.2/docs/api/.
    Methods - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    charAt()Returns the character at the specified index
    equals()Compares a string to a specified object
    indexOf()Returns the index value of the first occurance of a character within the input string
    length()Returns the number of characters in the input string
    substring()Returns a new string that is part of the input string
    toLowerCase()Converts all the characters to lower case
    toUpperCase()Converts all the characters to upper case
    Constructor
    String(data)
    -
    -String(data, offset, length)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    databyte[] or char[]: array of bytes to be decoded into characters or array of characters to be combined into a string
    offsetint: index of the first character
    lengthint: number of characters
    UsageWeb & Application
    Relatedchar - -
    text()
    - diff --git a/reference/String_charAt_/index.html b/reference/String_charAt_/index.html deleted file mode 100644 index 02bf6a6..0000000 --- a/reference/String_charAt_/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: withcc -title: charAt() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassString
    Name

    charAt()

    Examples
    String str = "CCCP";
    -char c1 = str.charAt(0);
    -char c2 = str.charAt(1);
    -char c3 = str.charAt(str.length()-1);
    -println(c1 + ":" + c2 + ":" + c3);  // Prints 'C:C:P'
    DescriptionReturns the character at the specified index. An index ranges from 0 to the length of the string minus 1. - The first character of the sequence is at index 0, the next at index 1, etc. -
    Syntax
    str.charAt(index)
    Parameters - - - - - - - - - - -
    strString: any variable of type String
    indexint: the index of the character
    -
    Returnschar
    UsageWeb & Application
    diff --git a/reference/String_equals_/index.html b/reference/String_equals_/index.html deleted file mode 100644 index 349d763..0000000 --- a/reference/String_equals_/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: withcc -title: equals() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassString
    Name

    equals()

    Examples
    String str1 = "CCCP";
    -String str2 = "CCCP";
    -// Tests to see if str1 is equal to str2
    -if(str1.equals(str2) == true) {
    -  println("Equal");  // They are equal so this line will print
    -} else {
    -  println("Not equal");
    -}
    DescriptionCompares two strings to see if they are the same. This method is necessary because it's not possible to compare strings using the equality operator (==). - Returns true if the strings are the same and false if they are not. -
    Syntax
    str.equals(str)
    Parameters - - - - - - - - - - -
    strString: any variable of type String
    strString: any valid String
    -
    ReturnsBoolean
    UsageWeb & Application
    diff --git a/reference/String_indexOf_/index.html b/reference/String_indexOf_/index.html deleted file mode 100644 index 05b749d..0000000 --- a/reference/String_indexOf_/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: withcc -title: indexOf() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassString
    Name

    indexOf()

    Examples
    String str = "CCCP";
    -int p1 = str.indexOf("C");
    -int p2 = str.indexOf("P");
    -int p3 = str.indexOf("CP");
    -println(p1 + ":" + p2 + ":" + p3);  // Prints '0:3:2'
    DescriptionTests to see if a substring is embedded in a string and returns the index position of the first occurance of the substring defined in the str parameter. - If the str parameter is not found in the string, -1 is returned. -
    Syntax
    str.indexOf(index)

    -
    str.indexOf(index,fromIndex)
    -
    Parameters - - - - - - - - - - - - - - -
    strString: any variable of type String
    strString: the substring to search
    fromIndexint: the index from which to start the search
    -
    Returnsint
    UsageWeb & Application
    diff --git a/reference/String_length_/index.html b/reference/String_length_/index.html deleted file mode 100644 index d865bfa..0000000 --- a/reference/String_length_/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: withcc -title: length() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassString
    Name

    length()

    Examples
    String str1 = "CCCP";
    -String str2 = "Rabbit";
    -int l1 = str1.length();
    -int l2 = str2.length();
    -println(l1 + ":" + l2);  // Prints '4:6'
    Description

    Returns the total number of characters included in the String as an integer number.

    -

    People are often confused by the use of length() to get the size of a String and length to get the size of an array. Notice the absence of the parentheses when working with arrays.

    -
    Syntax
    str.charAt()
    -
    Parameters - - - - - -
    strString: any variable of type String
    -
    Returnsint
    UsageWeb & Application
    diff --git a/reference/String_substring_/index.html b/reference/String_substring_/index.html deleted file mode 100644 index de197a5..0000000 --- a/reference/String_substring_/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: withcc -title: substring() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassString
    Name

    substring()

    Examples
    String str1 = "CCCP"; 
    -String str2 = "Rabbit"; 
    -String ss1 = str1.substring(2);     // Returns "CP"
    -String ss2 = str2.substring(3);     // Returns "bit"
    -String ss3 = str1.substring(0, 2);  // Returns "CC"
    -println(ss1 + ":" + ss2 + ":" + ss3);  // Prints 'CP:bit:CC'
    DescriptionReturns a new string that is a part of the original string. When using the endIndex parameter, the string between beginIndex and endIndex-1 is returned. -
    Syntax
    str.indexOf(beginIndex)

    -
    str.indexOf(beginIndex,endIndex)
    -
    Parameters - - - - - - - - - - - - - - -
    strString: any variable of type String
    beginIndexint: position from which to begin (inclusive)
    endIndexint: position from which to end (exclusive)
    -
    ReturnsString
    UsageWeb & Application
    diff --git a/reference/String_toLowerCase_/index.html b/reference/String_toLowerCase_/index.html deleted file mode 100644 index 9c59daa..0000000 --- a/reference/String_toLowerCase_/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: withcc -title: toLowerCase() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassString
    Name

    toLowerCase()

    Examples
    String str1 = "CCCP"; 
    -String str2 = "Rabbit"; 
    -str1 = str1.toLowerCase();
    -str2 = str2.toLowerCase();
    -println(str1 + ":" + str2);  // Prints cccp:rabbit
    DescriptionConverts all of the characters in the string to lowercase. For example, "ABC" will convert to "abc". -
    Syntax
    str.toLowerCase()
    -
    Parameters - - - - - -
    strString: any variable of type String
    -
    ReturnsString
    UsageWeb & Application
    diff --git a/reference/String_toUpperCase_/index.html b/reference/String_toUpperCase_/index.html deleted file mode 100644 index 7d9c58b..0000000 --- a/reference/String_toUpperCase_/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: withcc -title: toUpperCase() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassString
    Name

    toUpperCase()

    Examples
    String str1 = "Cccp"; 
    -String str2 = "Rabbit"; 
    -str1 = str1.toUpperCase();
    -str2 = str2.toUpperCase();
    -println(str1 + ":" + str2);  // Prints CCCP:RABBIT
    DescriptionConverts all of the characters in the string to uppercase. For example, "abc" will convert to "ABC". -
    Syntax
    str.toUpperCase()
    -
    Parameters - - - - - -
    strString: any variable of type String
    -
    ReturnsString
    UsageWeb & Application
    diff --git a/reference/TWO_PI.gif b/reference/TWO_PI.gif deleted file mode 100644 index fa2916ce57d5ec343fea2ff428403214a84ee7ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2631 zcmV-N3b^%0Nk%w1VT1sL0K@FMe6^76B@v-XXfVStE;P=oSfO&+4%VQ?Ck6S007d`(tUk>{r&yS%*^!k^!E1l z@9*!<&d&e;|Nj2|A^8LV00000EC2ui0E7U9000I5U}udaDV%7ku59bRa4gGZ-Q8K9 zB}qB|z@Ts#wBd3+OG+Y;IG@m{bV{vSuh^^>sw&+&y5%z0PICJXU$x|mr zeCM7EqZ}^A+%Tc6*|TWVs$I*r zt=qS7;cmcMfP*}3fV%Fh7&d0v1Aqey9!$8f;lqd%D_*>~ELNa+0lC^6wt$Aej5BNA z%(*jR#~1BJPC3G8MayIZV_3bKhwIm{W6PdRySDAyxNA?CTQ_K4m0-nAP`&zt@!ZIh zD__n$0qEX%hgt}pbohbd#*a7O&b>SC1G_aq7e)*d_0-ofeDJ{DgO2y`5f(h;y-gv(mbDnhtw&xy$7-py;eh&60&wt)b zNT6{RZfN3(CUz*Ee-Tb6AbJ%Zh~kVi=BFZr$)kZva+!ga68E-onxbp`t@tFPfl66tr)h%fDy5_HP%4g?HaaDWt-h*js2g4yVyceXnPING7OSSH z3;HUjrh@v2p{K@1Yhk4dDjO#Mv#N5+AhFVR%O45S+s$jkLdW$c8`r5kcf&d5H?ZEoAYwEkp@*6C|3Rmm_!(BQ| zE4+Wxd(-LS0V;%qXKOw(6&*TrI-HQ8HR ziFU{YBORyGY|ks-*>CU4@YKm5J2(=N8{$m6bq@XI60`{WN-Zt&^TS1<7Ovxl9u<5H%Z%iQNc{rl6#PkG_L*MDYq01Ti22S~sI8t{M!1R%ItH#O9;=7A85 zpadsK!3tXNf~+YX_BIB+#!1h9o(Z7{Go!)q?XPtGYv1%n$ify5riAL7pXpR+KdadA zhB&k#4CTi^to_@KXU*IP#H@429Z^*Fn$Wrjdd0!$UTy$xdeSlbi&lCqqffQJNBz z6}Zg+(m2P48Wc6e5X9& zSpg#0^PVcGKs@*P&IR~WopKar^!`cEg8s7tHAtvJ7s}9vI`pCXG^j)YdPHh^ZUF|s zs75o&(T!IB;0quPsYpjk(vq6=q+ifyM_0O0jIL9W!7_kMXG+tW$~2YU$!TsXVAGz` z^rhtUpihUI%3m6FmPkFSQj^Nmr4E3nL$xUcfXY7hK)?W3%_>&6s@1EW6P;iUt60a1 zOs<->s}M-*R0C?!V5#-3aE&VjzDm}*+BK{dkgHzR$^fd;k3AoN00RU|*ufgMu!W82 zL>J50#yZxZ6*#P95o=fmSk|vIWRGPx%h}F)Ry(mW~k!u5gD-+~P*yN>NR&a+hn#{I1;p-Wxj zLY2Ay*v;-tD^T6;`j)NioKgcKFy8W#_q^s!FM6-E*Y>*iy>P97dgqH?^futW4Ulg1 z@XO!+`uD&0%`1EdOyIf77r+Pxuzo$5;0FKqO1h1(ggbj+2R9f14FCWJzzfqU0pPOz1(=InWo7@{|zG=tevG(U1=R zG@AOWrAS-)(vVj4n=#GlPB*&Jo(}b;6`*MgDd5zoPPM96&FWUWI@K3Ab*x`a>ss5o z$X;w^^lZ)RUi-465g*&2DPDyWQ}9x4h#`?|Iw1-uS+^zVV%HYkPp)01vpp z2Tt&6b6DMu`ar=K&hUnl+ush4xWprVnKmOlNgu$V#y8IKj(hxpf;o6q@n<#TU;r>8 z2bOwBj<$@ST*?JXpv-4Z^P1ayfU7~d#e-uR>!c^UGd=!GAZ8B1K| zPWQUo{qAU)OVYnyISU|wB9*aBQgTT6!W;hZde6#}TIBbZ@C7MEjJ)J0Px+tN - - - - Name - -

    TWO_PI (6.28318...)

    - - - - - - - - - - Examples - -
    example pic
    float f = 0.0;
    -
    -beginShape(POLYGON);
    -
    -while(f < TWO_PI) {
    -
    -  vertex(width/2 + cos(f)*40, height/2 + sin(f)*40);
    -
    -  f += PI/12.0;
    -
    -}
    -
    -endShape();
    - - - - - - - - - - Description - - TWO_PI is a mathematical constant with the value 6.28318530717958647693. It is twice the ratio of the circumference of a circle to its diameter. It is useful in combination with the trigonometric functions sin() and cos(). - - - - - - - - Syntax - - - -
    TWO_PI
    - - - - - - - - Parameters - - - - - - - - - - - - - -
    - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - PI
    - - HALF_PI
    - - - - - diff --git a/reference/XMLElement/index.html b/reference/XMLElement/index.html deleted file mode 100644 index d3e26ca..0000000 --- a/reference/XMLElement/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: withcc -title: XMLElement | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    XMLElement

    Examples
    // The following short XML file called "sites.xml" is parsed 
    -// in the code below. It must be in the project's "data" directory
    -// <?xml version="1.0"?>
    -// <websites>
    -//   <site id="0" url="processing.org">Processing</site>
    -//   <site id="1" url="mobile.processing.org">Processing Mobile</site>
    -// </websites>
    -
    -XMLElement xml;
    -
    -void setup() {
    -  size(200, 200);
    -  xml = new XMLElement(this, "sites.xml");
    -  int numSites = xml.getChildCount();
    -  for (int i = 0; i < numSites; i++) {
    -    XMLElement kid = xml.getChild(i);
    -    int id = kid.getInt("id"); 
    -    String url = kid.getString("url"); 
    -    String site = kid.getContent();
    -    println(id + " : " + url + " : " + site);    
    -  }
    -}
    Description

    XMLElement is a representation of an XML object. The object is able to parse XML code. - The methods described here are the most basic. - More are documented in the Developer's Reference.

    The encoding parameter inside XML files is ignored, only UTF-8 (or plain ASCII) are parsed properly.

    -
    Methods - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    getChildCount()Returns the number of children for the element.
    getChild()Returns a single child.
    getChildren()Returns all of the children as an XMLElement array.
    getContent()Returns the content of an element.
    getIntAttribute()Returns an integer attribute of the element.
    getFloatAttribute()Returns a float attribute of the element.
    getStringAttribute()Returns a String attribute of the element.
    getName()Returns the name of the element.
    Constructor
    XMLElement(parent,file)
    Parameters - - - - - - - - - - -
    parentPApplet: typically use "this"
    fileString: name of the XML file to load -
    UsageWeb & Application
    diff --git a/reference/XMLElement_getChildCount_/index.html b/reference/XMLElement_getChildCount_/index.html deleted file mode 100644 index 8259cc3..0000000 --- a/reference/XMLElement_getChildCount_/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: withcc -title: getChildCount() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassXMLElement
    Name

    getChildCount()

    Examples
    // The following short XML file called "sites.xml" is parsed 
    -// in the code below. It must be in the project's "data" directory
    -// <?xml version="1.0"?>
    -// <websites>
    -//   <site id="0" url="processing.org">Processing</site>
    -//   <site id="1" url="mobile.processing.org">Processing Mobile</site>
    -// </websites>
    -
    -XMLElement xml;
    -
    -void setup() {
    -  size(200, 200);
    -  xml = new XMLElement(this, "sites.xml");
    -  int numSites = xml.getChildCount();
    -  println(numSites); // Prints "2"
    -}
    DescriptionReturns the number of children for the element. -
    Syntax
    xml.getChildCount()
    Parameters - - - - - -
    xmlany variable of type XMLElement
    -
    Returnsint
    UsageWeb & Application
    diff --git a/reference/XMLElement_getChild_/index.html b/reference/XMLElement_getChild_/index.html deleted file mode 100644 index e985324..0000000 --- a/reference/XMLElement_getChild_/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: withcc -title: getChild() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassXMLElement
    Name

    getChild()

    Examples
    // The following short XML file called "sites.xml" is parsed 
    -// in the code below. It must be in the project's "data" directory
    -// <?xml version="1.0"?>
    -// <websites>
    -//   <site id="0" url="processing.org">Processing</site>
    -//   <site id="1" url="mobile.processing.org">Processing Mobile</site>
    -// </websites>
    -
    -XMLElement xml;
    -
    -void setup() {
    -  size(200, 200);
    -  xml = new XMLElement(this, "sites.xml");
    -  XMLElement kid = xml.getChild(0);
    -  String site = kid.getContent();
    -  println(site);    
    -}

    void setup() {
    -  // Download RSS feed of news stories from yahoo.com
    -  String url = "http://rss.news.yahoo.com/rss/topstories";
    -  XMLElement rss = new XMLElement(this, url);
    -  // Get the  element from inside 
    -  XMLElement desc = rss.getChild("channel/description");
    -  println(desc.getContent());
    -}
    DescriptionReturns the child XMLElement as specified by the index parameter. The value of the index parameter must be less than the total number of children to avoid going out of - the array storing the child elements. When the

    path

    parameter is specified, then it will return all children that match that path. - The path is a series of elements and sub-elements, separated by slashes. -
    Syntax
    xml.getChild(index)

    -
    xml.getChild(path)
    -
    Parameters - - - - - - - - - - - - - -
    xmlany variable of type XMLElement
    indexint: the element
    pathString: path to a particular element
    -
    ReturnsXMLElement
    UsageWeb & Application
    RelatedXMLElement_getChildCount()
    - XMLElement_getChildren()
    diff --git a/reference/XMLElement_getChildren_/index.html b/reference/XMLElement_getChildren_/index.html deleted file mode 100644 index 88aea49..0000000 --- a/reference/XMLElement_getChildren_/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: withcc -title: getChildren() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassXMLElement
    Name

    getChildren()

    Examples
    // The following short XML file called "sites.xml" is parsed 
    -// in the code below. It must be in the project's "data" directory
    -// <?xml version="1.0"?>
    -// <websites>
    -//   <site id="0" url="processing.org">Processing</site>
    -//   <site id="1" url="mobile.processing.org">Processing Mobile</site>
    -// </websites>
    -
    -XMLElement xml;
    -
    -void setup() {
    -  size(200, 200);
    -  xml = new XMLElement(this, "sites.xml");
    -  XMLElement[] kids = xml.getChildren();
    -  for (int i=0; i < kids.length; i++) {
    -    String site = kids[i].getContent();
    -    println(site); 
    -  }
    -}

    void setup() {
    -  // Download RSS feed of news stories from yahoo.com
    -  String url = "http://rss.news.yahoo.com/rss/topstories";
    -  XMLElement rss = new XMLElement(this, url);
    -  // Get all  elements
    -  XMLElement[] links = rss.getChildren("channel/item/link");
    -  for (int i = 0; i < links.length; i++) {
    -    println(links[i].getContent());
    -  }
    -}
    DescriptionReturns all of the children as an XMLElement array. When the path parameter is specified, - then it will return all children that match that path. - The path is a series of elements and sub-elements, separated by slashes. -
    Syntax
    xml.getChildren()

    -
    xml.getChildren(path)
    -
    Parameters - - - - - -
    xmlany variable of type XMLElement
    -
    ReturnsXMLElement[]
    UsageWeb & Application
    RelatedXMLElement_getChildCount()
    - XMLElement_getChild()
    diff --git a/reference/XMLElement_getContent_/index.html b/reference/XMLElement_getContent_/index.html deleted file mode 100644 index 88b0b86..0000000 --- a/reference/XMLElement_getContent_/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: withcc -title: getContent() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassXMLElement
    Name

    getContent()

    Examples
    // The following short XML file called "sites.xml" is parsed 
    -// in the code below. It must be in the project's "data" directory
    -// <?xml version="1.0"?>
    -// <websites>
    -//   <site id="0" url="processing.org">Processing</site>
    -//   <site id="1" url="mobile.processing.org">Processing Mobile</site>
    -// </websites>
    -
    -XMLElement xml;
    -
    -void setup() {
    -  size(200, 200);
    -  xml = new XMLElement(this, "sites.xml");
    -  int numSites = xml.getChildCount();
    -  for (int i = 0; i < numSites; i++) {
    -    XMLElement kid = xml.getChild(i);
    -    String site = kid.getContent();
    -    println(site);    
    -  }
    -}
    DescriptionReturns the content of an element. If there is no such content, null is returned. -
    Syntax
    xml.getContent()
    Parameters - - - - - -
    xmlany variable of type XMLElement
    -
    ReturnsString
    UsageWeb & Application
    diff --git a/reference/XMLElement_getFloatAttribute_/index.html b/reference/XMLElement_getFloatAttribute_/index.html deleted file mode 100644 index 9926327..0000000 --- a/reference/XMLElement_getFloatAttribute_/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: withcc -title: getFloatAttribute() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassXMLElement
    Name

    getFloatAttribute()

    Examples
    // The following short XML file called "sites.xml" is parsed 
    -// in the code below. It must be in the project's "data" directory
    -// <?xml version="1.0"?>
    -// <websites>
    -//   <site id="0" url="processing.org">Processing</site>
    -//   <site id="1" url="mobile.processing.org">Processing Mobile</site>
    -// </websites>
    -
    -XMLElement xml;
    -
    -void setup() {
    -  size(200, 200);
    -  xml = new XMLElement(this, "sites.xml");
    -  int numSites = xml.getChildCount();
    -  for (int i = 0; i < numSites; i++) {
    -    XMLElement kid = xml.getChild(i);
    -    int id = kid.getIntAttribute("id"); 
    -    float url = kid.getFloatAttribute("rank"); 
    -    String site = kid.getContent();
    -    println(id + " : " + url + " : " + site);    
    -  }
    -}
    DescriptionReturns a float attribute of the element. If the default parameter is used and the attribute doesn't exist, - the default value is returned. When using the version of the method without the default parameter, - if the attribute doesn't exist, the value 0 is returned. -
    Syntax
    xml.getFloatAttribute(name)

    -
    xml.getFloatAttribute(name,default)
    -
    Parameters - - - - - - - - - - - - - -
    xmlany variable of type XMLElement
    nameString: the name of the attribute
    defaultint: value returned if the attribute is not found
    -
    Returnsfloat
    UsageWeb & Application
    diff --git a/reference/XMLElement_getIntAttribute_/index.html b/reference/XMLElement_getIntAttribute_/index.html deleted file mode 100644 index 981a5f4..0000000 --- a/reference/XMLElement_getIntAttribute_/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: withcc -title: getIntAttribute() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassXMLElement
    Name

    getIntAttribute()

    Examples
    // The following short XML file called "sites.xml" is parsed 
    -// in the code below. It must be in the project's "data" directory
    -// <?xml version="1.0"?>
    -// <websites>
    -//   <site id="0" url="processing.org">Processing</site>
    -//   <site id="1" url="mobile.processing.org">Processing Mobile</site>
    -// </websites>
    -
    -XMLElement xml;
    -
    -void setup() {
    -  size(200, 200);
    -  xml = new XMLElement(this, "sites.xml");
    -  int numSites = xml.getChildCount();
    -  for (int i = 0; i < numSites; i++) {
    -    XMLElement kid = xml.getChild(i);
    -    int id = kid.getIntAttribute("id"); 
    -    String url = kid.getStringAttribute("url"); 
    -    String site = kid.getContent();
    -    println(id + " : " + url + " : " + site);    
    -  }
    -}
    DescriptionReturns an integer attribute of the element. If the default parameter is used and the attribute doesn't exist, the default value is returned. - When using the version of the method without the default parameter, if the attribute doesn't exist, the value 0 is returned. -
    Syntax
    xml.getIntAttribute(name)

    -
    xml.getIntAttribute(name,default)
    -
    Parameters - - - - - - - - - - - - - -
    xmlany variable of type XMLElement
    nameString: the name of the attribute
    defaultint: value returned if the attribute is not found
    -
    Returnsint
    UsageWeb & Application
    diff --git a/reference/XMLElement_getName_/index.html b/reference/XMLElement_getName_/index.html deleted file mode 100644 index b52688a..0000000 --- a/reference/XMLElement_getName_/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: withcc -title: getName() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassXMLElement
    Name

    getName()

    Examples
    // The following short XML file called "sites.xml" is parsed 
    -// in the code below. It must be in the project's "data" directory
    -// <?xml version="1.0"?>
    -// <websites>
    -//   <site id="0" url="processing.org">Processing</site>
    -//   <site id="1" url="mobile.processing.org">Processing Mobile</site>
    -// </websites>
    -
    -XMLElement xml;
    -
    -void setup() {
    -  size(200, 200);
    -  xml = new XMLElement(this, "sites.xml");
    -  XMLElement site = xml.getChild(0);
    -  XMLElement[] siteData = site.getChildren();
    -  String s1 = siteData[0].getName();
    -  String s2 = siteData[1].getName();
    -  println(s1 + " : " + s2);  // Prints "name : url"
    -}
    DescriptionReturns the name of the element. -
    Syntax
    xml.getName()
    Parameters - - - - - -
    xmlany variable of type XMLElement
    -
    ReturnsString
    UsageWeb & Application
    diff --git a/reference/XMLElement_getStringAttribute_/index.html b/reference/XMLElement_getStringAttribute_/index.html deleted file mode 100644 index 0063d24..0000000 --- a/reference/XMLElement_getStringAttribute_/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: withcc -title: getStringAttribute() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassXMLElement
    Name

    getStringAttribute()

    Examples
    // The following short XML file called "sites.xml" is parsed 
    -// in the code below. It must be in the project's "data" directory
    -// <?xml version="1.0"?>
    -// <websites>
    -//   <site id="0" url="processing.org">Processing</site>
    -//   <site id="1" url="mobile.processing.org">Processing Mobile</site>
    -// </websites>
    -
    -XMLElement xml;
    -
    -void setup() {
    -  size(200, 200);
    -  xml = new XMLElement(this, "sites.xml");
    -  int numSites = xml.getChildCount();
    -  for (int i = 0; i < numSites; i++) {
    -    XMLElement kid = xml.getChild(i);
    -    int id = kid.getIntAttribute("id"); 
    -    String url = kid.getStringAttribute("url"); 
    -    String site = kid.getContent();
    -    println(id + " : " + url + " : " + site);    
    -  }
    -}
    DescriptionReturns a String attribute of the element. If the default parameter is used and the attribute doesn't exist, - the default value is returned. When using the version of the method without the default parameter, - if the attribute doesn't exist, the value 0 is returned. -
    Syntax
    xml.getStringAttribute(name)

    -
    xml.getStringAttribute(name,default)
    -
    Parameters - - - - - - - - - - - - - -
    xmlany variable of type XMLElement
    nameString: the name of the attribute
    defaultint: value returned if the attribute is not found
    -
    ReturnsString
    UsageWeb & Application
    diff --git a/reference/abs_/index.html b/reference/abs_/index.html deleted file mode 100644 index 903ec1a..0000000 --- a/reference/abs_/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: withcc -title: abs() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    abs()

    Examples
    int a = abs(153);      // Sets a to 153
    -
    -int b = abs(-15);      // Sets b to 15
    -
    -float c = abs(12.234); // Sets c to 12.234
    -
    -float d = abs(-9.23);  // Sets d to 9.23
    DescriptionCalculates the absolute value (magnitude) of a number. The absolute value of a number is always positive.
    Syntax
    abs(value)
    Parameters - - - - - - - - - - - -
    valuefloat or int
    UsageWeb & Application
    - - - diff --git a/reference/acos_/index.html b/reference/acos_/index.html deleted file mode 100644 index 85b9dfe..0000000 --- a/reference/acos_/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: withcc -title: acos() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    acos()

    Examples
    float a = PI;
    -float c = cos(a);
    -float ac = acos(c);
    -// Prints "3.1415927 : -1.0 : 3.1415927"
    -println(a + " : " + c + " : " +  ac);

    -
    float a = PI + PI/4.0;
    -float c = cos(a);
    -float ac = acos(c);
    -// Prints "3.926991 : -0.70710665 : 2.3561943"
    -println(a + " : " + c + " : " +  ac);
    Description

    The inverse of cos(), returns the arc cosine of a value. - This function expects the values in the range of -1 to 1 and values are returned in the range 0 to PI (3.1415927). -

    Syntax -
    acos(value)
    Parameters - - - - -
    valuefloat: the value whose arc cosine is to be returned
    -
    Returnsfloat
    UsageWeb & Application
    Relatedcos()
    - asin()
    - atan()
    diff --git a/reference/add assign/index.html b/reference/add assign/index.html deleted file mode 100644 index d70d51c..0000000 --- a/reference/add assign/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: withcc -title: += (add assign) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    += (add assign)

    Examples
    int a = 50;
    -
    -int b = 23;
    -
    -a += b; // sets "a" to 73
    DescriptionCombines addition with assignment. The expression a += b is equivalent to a = a + b.
    Syntax
    value1 += value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2any numberical value the same datatype as value1
    UsageWeb & Application
    Related - - = (assign)
    - - + (add)
    - - -= (subtract assign)
    - - - diff --git a/reference/addition/index.html b/reference/addition/index.html deleted file mode 100644 index 4a10905..0000000 --- a/reference/addition/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -layout: withcc -title: + (addition) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    + (addition)

    Examples
    int a = 50 + 5;  // Sets a to 55
    -
    -int b = a + 5;   // Sets b to 60

    String s1 = "Chernenko"; 
    -
    -String s2 = "Brezhnev"; 
    -
    -String sc1 = s1 + s2; 
    -
    -String sc2 = s1 + ", Andropov, " + s2; 
    -
    -println(sc1);  // Prints ChernenkoBrezhnev 
    -
    -println(sc2);  // Prints Chernenko, Andropov, Brezhnev

    String s1 = "Gorbachev"; 
    -
    -int i = 1987; 
    -
    -String sc1 = s1 + i; 
    -
    -println(sc1);  // Prints Gorbachev1987
    DescriptionAdds two values or concatenates string values. As a mathematical operator, it calculates the sum of two values. As a string operator, it combines two strings into one and converts from primitive datatypes into the String datatype if necessary.
    Syntax
    value1 + value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1String, int, float, char, byte, boolean
    value2String, int, float, char, byte, boolean
    UsageWeb & Application
    Related++ (increment)
    - - += (add assign)
    - - - (minus)
    - diff --git a/reference/alpha_.gif b/reference/alpha_.gif deleted file mode 100644 index af3a43f2c1653e23f8bfec0a4ddc906b3c369f79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2433 zcmV-{34ZoRNk%w1VT1sL0K@CcumX>B_ zW_qmF`uh5Gbactd$$G5EY;0`l>FMU?=JN9L+1c5_!NG2Xn&RT(e0+R*qPXnr?D+Wj z@9*zoVq*OK{Cce5A^8LV00000EC2ui0E7U9000I5AV2_QX`X1Ru59bRa4d>MZL<`a z1ADLkJfJT~92$klV)CeL4pAeT?PkhRuGp-0%k6r<;IMeCC7wppl6F9058m*&d`_?1 z@A$m_-rhpfS#%d~g9C+!go%cVh>MPmkc^U#laZ8{g>ijXe*{-@7onn~q@|{(sHv)} ztgWPSoFr48aHA5pxVgH!yuH4^z`?@9xTA2fvLb|`xe?CK(9zP<)YaD4*xA|+r&l=|E=;`X~?CtLF@bU5*&&7q{1kAV2=N$h300RmfNU)&6g9sBQJm<{bHxv2x zMKJeog2js%Giuz(v7^V2AVY@yXRe`ydpkz|jFT`?gTIRcV#=IJv!>0PICJXU$y4V= zeC>oFt6t5zb?Oa+)n2|=!YbAcok8oK#k;rf-@t1gdB2Mp?>T! z=-_t{c4%UOA1WwSe+|C(;D#s0cprlKsYsiDE|LhNj67bK;(jZNn4^Z_^=RaQ2?BXz zix~#Ef0C6Uoh7w4da#+m1#h~~K`mmr$SM0zbOO6QWZp4Y|YMZ6TTBoKpD%l;RX@dIdtFrb=YnQ1G8EK%c?&@l< zvi{m=pO1PfshY-$ifpXP+IXw~v&2psZK%_hTCJ@tsyZyI+HPxUx0rs*X|pdrtE;(% zqMPoij9MG6u(<*U@450Ks;;Br=KI^e@%HO4y_*7z@2C0_JgC732Z!pl?Pd$D!*W8b zD8jX_8!*EIW1O+ZcmB)l$L=;PvYRBEDsjEw3W+AjzODRb%O!IREX7w^{I1Pw;%ukM z!Oom=$Up}zG@V5Ayy|=xC%rV&Ixkx^t~B?SG@Db;+4Q|e`>e9mU4Jbz)<@U8^#@%m zVD^_4lN&YAZNJ@V+))2aciC0jdp5Rm>uq!0ea8%U&w-D<_tbW?i+J9O56<_?37@=h z+FGwoIOQEH9CqSJlg)Vl;T~TucIb;Q-8jmptG)H+Qo>yN=a8c=`RJVQ3^v-WXa4%+ zu~&XI;I+Fhy6U8R&O7MFr!MsBrZeyR@y{o3Iqd@$`#bKzcYgiy#ZT`%&d_5osOG@` zHu3JnXJ0P$D!X<_9w9B-LHE2^V{K`RzJb540h_1 zo$}guzU|?!d%F7@{id^k4|MQ@9tOcW3*?^xD&PSBGMcfBXf)#ktjIp;=)5L453o*fdXq7a{3HXt zNzZz+lbzl~r#|ptY8N_Si17{unEX3 z3lV!*!aDY`gf%Q<@2Xe^CLjQp%`9d&OV$8D_OqW=z(q$Z+R~Etw5ClhYBkGR&SDmx zKNYKhHcQ*f*4DG2&Fx@2z}w#X_P4+dZg2x|+u{bGvSK7|ac!&I<~sMe(2cHir%PSx z+V;Bt#AR*(JP=k$%BQ;E4X=2|OJ49IcedqCuX@+3UJRV~yBG*SeCI3Q`qKBl_RTMT z_p9Ij^7p^~4e)(2Kw$TFSDs=lu!0xN;08PR!4QtHgeNTF_lAeU7|yVUH_YJ%SU5Tj z2(gGqOyUxo_{1nqv5HsBVia>Xp2!qqi)T#Z8r%5B9zJl41%%@s`}oHzhCq&CyiL$R z;K)c$vXYm~rA^^ zJIS$}u%46ZTKoFf2JlQ>I<~IF+$PqONw%_=4VlWQh*^p84zig|?P^oor-V_`VHi{u z<}`;fW(l{r$4%~Xa|JC5S`fG2;_Yuc<=ya(_fnv88D>R<-7mq4y!Xv-e*Z)^+&IaS z0I(8%z(p}4Nw~rn&hUo+8{h$Ni!AifZHg%5;uz1k#y1WSh6G&TQ&9%R%Q26VoBZS` zPkB9rBJmk4V - - - - Name - -

    alpha()

    - - - - - - - - - - Examples - -
    example pic
    noStroke();
    -
    -color c = color(0, 126, 255, 102);
    -
    -fill(c);
    -
    -rect(15, 15, 35, 70);
    -
    -float value = alpha(c);  //Sets "value" to "102"
    -
    -fill(value);
    -
    -rect(50, 15, 35, 70);
    - - - - - - - - Description - - - - Extracts the alpha value from a color. - - - - - - - - Syntax - -
    alpha(color)
    - - - - - - - - Parameters - - - - - - - - - - - - - -
    colorany value of the color datatype
    - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - - - red()
    - - green()
    - - blue()
    - - hue()
    - - saturation()
    - - brightness()
    - - - - - - - diff --git a/reference/ambientLight_.gif b/reference/ambientLight_.gif deleted file mode 100644 index 10d902117351b5d6eefeb487cdc7637cd4ca5947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmV-D0mA-ANk%w1VPpVg0Du4h0000pW_}_01ONa4001li0001F0Av6F0{?`MsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{?7^sheRQ-hzwAY%p$D`RWhQ~ zp{rU&V7F2f7Yq1uP2#dSDmtsz&JX+j=D_D{4gIdh;P++=|1Y)#IJhN2cnJ1@xQM36 z_?YAXIf*nyd1(+Um**`}jI*dyAW^yUW|_`wJW_ zJWO01Cu^LCoZPp}9O(R9cp%+eTRldNot?U!1?o*@8QwHbUfFPtE~#$i*lwsU81Cn- zhixY - - Name -

    ambientLight()

    - - - - - - Examples -
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -// The spheres are white by default so
    -// the ambient light changes their color
    -ambientLight(51, 102, 126);
    -translate(20, 50, 0);
    -sphere(30);
    -translate(60, 0, 0);
    -sphere(30);
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -directionalLight(126, 126, 126, 0, 0, -1);
    -ambientLight(102, 102, 102);
    -translate(32, 50, 0);
    -rotateY(PI/5);
    -box(40);
    -translate(60, 0, 0);
    -sphere(30);
    - - - - Description - -

    Adds an ambient light. Ambient light doesn't come from a specific direction, the rays have light have bounced around so much that objects are - evenly lit from all sides. Ambient lights are almost always used in combination with other types of lights. Lights need to be included in the draw() - to remain persistent in a looping program. Placing them in the setup() of a looping program will cause them to only have an effect the first time through the loop. - The effect of the parameters is determined by the current color mode.

    - - - - Syntax -
    ambientLight(v1,v2,v3)

    -
    ambientLightv1,v2,v3,x,y,z)
    - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - -
    v1int or float: red or hue value
    v2int or float: green or hue value
    v3 int or float: green or hue value
    xint or float: x-coordinate of the light
    yint or float: y-coordinate of the light
    zint or float: z-coordinate of the light
    - - - - - Usage - Web & Application - - - - - Related - lights()
    - directionalLight()
    - spotLight()
    - - diff --git a/reference/ambient_.jpg b/reference/ambient_.jpg deleted file mode 100644 index 3ae6a375b65fc410590c9517717caac4879cc75a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3158 zcmb_ec|6ox8$a`##m9C4aj-M9v^E6@1OO1x(8S0T!U7N!9Kmof zH^MtPAHj1C0t`UHRxmuh!$WPTW{xZ#91=`t{eB17$I3Vy1IDN-%hz{n{|n{y4rN5Z zikt9PgGLYc1^_{Xx&MiXP*{$*0&`KXKsLX{;tWRzV_4n=b3tDYA7gPZ4xeRl2Al+} zv&_=>Wpjv|#l1LOip3-7Cs}cUaY*PXhQF_01b#P(M8X@=LcHjB>Z$MudQdptGT1wW z5gNkqjG)6c1)Tk{tbmYl$gvQHjc0_nA093nTlRk)Sm(fTxbpmKeRa2FTcNxo8OOiQ z5QqT){@Z-ZM_eEPW^lbR+FLRQSpaUF0zh(NOD1Ch08S2oT0HY3kY^VN(Awdc2qX|g zAu+rHun$WBxYhySSpk6GkvR$C;p_D;AecZ9Ji-G9NC*i79#AYG(QI(B!2Jy@YgikN zM54LSDD-zL-&FoHVRix>H>(?v2poWL2qX@{>;l7ZF%js0Z#TPgTqrb#n+HPj!W{u2 z*?0MCMF9$pfG|k7J>YF1QOJMAaGxPjcr*sLQ-nz7!cs)VgbCs}Sc*bH7&KfDHee-y z+l|^OEP}?{FB*Dk7>R~u$arO9iDXJ`N1Uu?JwXg33?NwTJ5Y8Kaai(E5qO($g}9Nd zHe~@$V&`tWp}l7qY`++rQ9Dd2>i9IndG|v@((dUpRw5R?jRZK%!D!mg3<~??cxF(jixGXNqFViVX z(i>*PAeJQuKZ`WBKIe7l@~$|(-riFmVFw;Zt+Sh$aFJ{VjnU9~$P zf%A34)>e#9^0osI9h!cZ_GKn!ngego}U}r zYVA^P2D#R1U!6=>^?aNx7_?{Vp5f`1(~*}eMOw(sS{tT>2FIA?*j<+Xj4N3=E0lYG zS1I(4)}E{T`*P891I*Y1ntfVX39;%xFTJeOI8zbd+P`ZA_-R13odz?5Usz%58yd zi)7nE_}unfi)jnTqx4eRk$7#(QVUrruIk;xckJcvFox%@U03t>Pzt1m_z4#qP>Hh_ zGIR?=6eU*MIPoEj0W_~>roi#Ynn6pqk4;&`GXYzKK)|B)Sn-uAwb!c#Hd%yfGozEJ zPWLGf$pCqS)I8k}<*B_SbNbP_()XQyv>s7o+j4l6{uWlmG7<}Nbph8W`bW7`i`OxG{Wn` z1>!Du#E%C)SIgg)I1zs}htA*9+-oEi)ZU;1B_N50DcxtSI%`W#soI@zxnH5b@MGq$ zgVFVC+lAFM&O97xUwRvPd}G!X@zPZMip9#M3Y=}zf_aqa{NoWPb9;Nphnk)+85Hg_ zMdfSRtMY2*^+
    sl!nMUc}=O$Vy{lrRP$%3 z;!O5IiE)ZH#MVcVB*{%toN1};fHFlfu_|74D@u{oLR(&zKU`y55a33dtiGM;XT6cuEB!~$tZP}Xx5|)F zj$-V-L%7vKfqTn_gq$H)dTeb}06{u*RD4Y1#m0r#?{NxWfVqGcAx~cBfw@stk8p!? z?XhEHve&sDc9ouAd&#-(?CL??n6VLRPf=JElw%`Ssd;d1!N<4TWaG)^#@qdx&KJf4 z!<*&Q1B3#QJ9IdG!7;vKPT;1SkqjRKdyhHb%gumjYlhPpI&M{`Tf?f#Xco> z7~92{)84tV<83{v;s2B^sQpO>0?s;%fcH{RA>fhECj+Y8hZrzh?+*|QDp>&V+D*eR zHv6|se*AX!*iGc3aC2NtZ{aOf;X8xc(hoWj79LmjVAF~Q&OfSsNY#yB6aJ+i+j&G+ zU6IEzKDDA-^-5E_W@zyfm9qM)zUf(&wi*&-#kWg+nL98t?ReG1L~t!zI&m-6MJOOY zMOM2c$#UBC`XOs0$kOG{>Eb~%YXz$E-K-3ZKfyPhK-N>F8CXHn71!?X;PYuaq_t${ zM(HTf$f@tl&Dn#^cQEw3E$V&Cs;1+^_=5)9;wXYakY)*`$XsYZz}S7{zI))HBkA;7 zwak8=CT^RdqzY)mvHKHMr`WZ0YScxUU|VuAl6Q7BE2&aA)+RM98%wj!_7|$wDe8%1 zf|mD{Q9i_7rok7?{~njok$?8Y%utDUEOp1W2+B|Bl7Qdkelw!Emy~|AYsmt9!#ra$ zWVBjgHopLABu0E^w&Rc7>8n7}-;E4$Yv?Fy{FPLCZh=U$N6ojsQLl-!lvFY|qzJ~+ zQoI=VI0p~EAQ)gb5y?)9+L~_$c>`&B`fsbM)(;EKGl5^8LtutBuhrTNwb-@tX6T#G zgBw8>i-Xrz?2Pp zMM(PkLeA29qM66V)n5~*k=?v|ar1vfPwLxE7#Ivhr!fKb{>?8}qboN=Y0dM36sdQO f3etb=AGCdqu^wJjci9{o+7wC&cDTD4!hHG - - Name -

    ambient()

    - - - - - - Examples -
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -directionalLight(153, 153, 153, .5, 0, -1);
    -ambientLight(153, 102, 0);
    -ambient(51, 26, 0);
    -translate(70, 50, 0);
    -sphere(30);
    - - - - Description - -

    Sets the ambient reflectance for shapes drawn to the screen. This is combined with the ambient light component of environment. - The color components set through the parameters define the reflectance. For example in the default color mode, setting v1=255, v2=126, v3=0, - would cause all the red light to reflect and half of the green light to reflect. Used in combination with emissive(), specular(), and - shininess() in setting the materal properties of shapes.

    - - - - Syntax -
    ambient(gray)

    -
    ambient(color)

    -
    ambient(v1,v2,v3)
    - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - -
    grayint or float: number specifying value between white and black
    colorcolor: any value of the color datatype
    v1int or float: red or hue value
    v2int or float: green or saturation value
    v3 int or float: green or brightness value
    - - - - Returns - None - - - Usage - Web & Application - - - - - Related - emissive()
    - specular()
    - shininess() - - diff --git a/reference/append_/index.html b/reference/append_/index.html deleted file mode 100644 index 280010f..0000000 --- a/reference/append_/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: withcc -title: append() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    append()

    Examples
    String[] sa1 = { "OH ", "NY ", "CA "}; 
    -String[] sa2 = append(sa1, "MA "); 
    -println(sa2);  // Prints OH, NY, CA, MA
    Description -

    Expands an array by one element and adds data to the new position. The datatype of the element parameter must be the same as the datatype of the array.

    -

    When using an array of objects, the data returned from the function must be cast to the object array's data type. - For example: SomeClass[] items = (SomeClass[]) append(originalArray, element).

    Syntax
    append(array,element)
    Parameters - - - - - - -
    arrayboolean[], byte[], char[], int[], float[], or String[], or an array of objects
    elementnew data for the array
    ReturnsArray (the same datatype as the input)
    UsageWeb & Application
    Relatedshorten()
    - expand()
    diff --git a/reference/applyMatrix_.gif b/reference/applyMatrix_.gif deleted file mode 100644 index 7ee762c0565ef5811fc412d01a55e5c5397381c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713 zcmV;)0yh0eNk%w1VPpVg0FeLynVFgY|NqR)%m4rYA^8LV00000EC2ui0Av7U00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82|i6a?#AwL^k zP}wm)o;oVj!kjv?SC&-^?n0z7ueiabe4A%sx;%N?4}s!t4k~ad{}W?dK}oBU`&fi>5L%E6niSl7A0}pS(PUk+S*+hq1)hWbyt4P zkQ|?WZOpB6zIv}1ie4so90Jm_|2S5j-NxVpD-o%Li>o780 zrty(Mj_ocSl$UQoMR-6`Ds+i~B1xDIP9_}r@?%R2HaF(1>Cqq0klucF+!>UkPIN}Y zA$>Zbr%0eiOAe)3r>V-Mz@!$%307!Qtq6UFJ-SqEMyznoI!#*^BwIB~w?b7Ll_*oU zcHwr_OO33>yK&b#xk>e`Rk?@FCVpHPE?Ja~`SRmx60j!0Ed6Gl8>jAN!hb;{6Fu1T z)yiKXzr_n%H080WAul#e`-04>raR}(YPojYS1Vr=CWX45z?KCq&puvTAjI4HAPScp zGhK7x)RkNFy4PTFVzGWVWCcF(w~E-FXj^7IHgfpl9(sZ1Jw9~Zy0Q71R(60ibU9WF z58xChggU&avLA3bsDhp=4#iO(YvH-!NOkA!6ImlhJjW1zJn4sB3>n_H0*EJ4sKRV3 z+5sYf*`*kxg^l!4qkO19@gg54p21*fEVfaFdOH${M2{Ulh-4}bYS!c?1ICl%9Ep6P vWR!Gt7bT2(W!a^a7*!dj6q1B#f(${TsRx;Cz6ocXa?VL-op#=7X8`~^#(7Fv diff --git a/reference/applyMatrix_/index.html b/reference/applyMatrix_/index.html deleted file mode 100644 index 7f812f6..0000000 --- a/reference/applyMatrix_/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: withcc -title: applyMatrix() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    applyMatrix()

    Examples
    example pic
    size(100, 100, P3D);
    -noFill();
    -translate(50, 50, 0);
    -rotateY(PI/6); 
    -stroke(153);
    -box(35);
    -// Set rotation angles
    -float ct = cos(PI/9.0);
    -float st = sin(PI/9.0);          
    -// Matrix for rotation around the Y axis
    -applyMatrix(  ct, 0.0,  st,  0.0,
    -             0.0, 1.0, 0.0,  0.0,
    -             -st, 0.0,  ct,  0.0,
    -             0.0, 0.0, 0.0,  1.0);  
    -stroke(255);
    -box(50);
    Description

    Multiplies the current matrix by the one specified through the parameters. - This is very slow because it will try to calculate the inverse of the transform, so avoid it whenever possible. - The equivalent function in OpenGL is glMultMatrix().

    Syntax
    applyMatrix(n00, n01, n02, n03,
    -            n04, n05, n06, n07,
    -            n08, n09, n10, n11,
    -            n12, n13, n14, n15)
    Parameters - - - - -
    n00-n15float: numbers which define the 4x4 matrix to be multiplied
    ReturnsNone
    UsageWeb & Application
    RelatedpushMatrix()
    - popMatrix()
    - resetMatrix()
    - printMatrix()
    diff --git a/reference/arc_.gif b/reference/arc_.gif deleted file mode 100644 index 8bc53b1891189d7234caa4ec27e6214f25801224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2410 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 diff --git a/reference/arc_/index.html b/reference/arc_/index.html deleted file mode 100644 index 4558ff2..0000000 --- a/reference/arc_/index.html +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: withcc -title: arc() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    arc()

    Examples
    example pic
    arc(50, 55, 50, 50, 0, PI/2);
    -
    -noFill();
    -
    -arc(50, 55, 60, 60, PI/2, PI);
    -
    -arc(50, 55, 70, 70, PI, TWO_PI-PI/2);
    -
    -arc(50, 55, 80, 80, TWO_PI-PI/2, TWO_PI);
    DescriptionDraws an arc in the display window. Arcs are drawn along the outer edge of an ellipse defined by the x, y, width and height parameters. The origin or the arc's ellipse may be changed with the ellipseMode() function. The start and stop parameters specify the angles at which to draw the arc.
    Syntax
    arc(x, y, width, height, start, stop)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint or float: x-coordinate of the arc's ellipse
    yint or float: y-coordinate of the arc's ellipse
    widthint or float: width of the arc's ellipse
    heightint or float: height of the arc's ellipse
    startint or float: angle to start the arc, specified in radians or degrees depending on the current angle mode
    stopint or float: angle to stop the arc, specified in radians or degrees depending on the current angle mode
    ReturnsNone
    UsageWeb & Application
    RelatedellipseMode() - -
    ellipse()
    - diff --git a/reference/array access/index.html b/reference/array access/index.html deleted file mode 100644 index a47a52c..0000000 --- a/reference/array access/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -layout: withcc -title: "[] (array access) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    [] (array access)

    Examples
     
    -
    -int[] numbers = new int[3]; 
    -
    -numbers[0] = 90; 
    -
    -numbers[1] = 150; 
    -
    -numbers[2] = 30; 
    -
    -int a = numbers[0] + numbers[1]; // Sets variable a to 240 
    -
    -int b = numbers[1] + numbers[2]; // Sets variable b to 180
    DescriptionThe array access operator is used to specify a location within an array. The data at this location can be defined with the syntax array[element] = value or read with the syntax value = array[element].
    Syntax
    datatype[]
    -
    -array[element]
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    datatypeany primitive or compound datatype, including user defined classes
    arrayany valid variable name
    elementint: must not exceed the length of the array - 1
    UsageWeb & Application
    RelatedArray
    - diff --git a/reference/arrayCopy_/index.html b/reference/arrayCopy_/index.html deleted file mode 100644 index 0a13498..0000000 --- a/reference/arrayCopy_/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: withcc -title: arrayCopy() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    arrayCopy()

    Examples
    String[] north = { "OH", "IN", "MI"};
    -String[] south = { "GA", "FL", "NC"}; 
    -arrayCopy(north, south);
    -print(south);  // Prints OH, IN, MI

    -
    String[] north = { "OH", "IN", "MI"};
    -String[] south = { "GA", "FL", "NC"}; 
    -arrayCopy(north, 1, south, 0, 2);
    -println(south);  // Prints IN, MI, NC
    Description -

    Copies an array (or part of an array) to another array. The src array is copied to the dst array, beginning at the position specified by srcPos and into - the position specified by dstPos. The number of elements to copy is determined by length. The simplified version with two arguments copies an entire array to - another of the same size. It is equivalent to "arrayCopy(src, 0, dst, 0, src.length)". - This function is far more efficient for copying array data than iterating through a for and copying each element.

    Syntax
    arrayCopy(src,dest)

    -
    arrayCopy(src,dest,length)
    - arrayCopy(src,srcPos,dest,destPos,length)
    Parameters - - - - - - - - - - - - - - - - - - - - -
    srcan array of any data type: the source array
    destan array of any data type (as long as it's the same as src): the destination array
    srcPosint: starting position in the source array
    destPosint: starting position in the destination array
    lengthint: number of array elements to be copied
    ReturnsNone
    UsageWeb & Application
    diff --git a/reference/asin_/index.html b/reference/asin_/index.html deleted file mode 100644 index 4ad5fe1..0000000 --- a/reference/asin_/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: withcc -title: asin() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    asin()

    Examples
    float a = PI/3;
    -float s = sin(a);
    -float as = asin(s);
    -// Prints "1.0471976 : 0.86602545 : 1.0471976"
    -println(a + " : " + s + " : " +  as);
    -
    -
    float a = PI + PI/3.0;
    -float s = sin(a);
    -float as = asin(s);
    -// Prints "4.1887903 : -0.86602545 : -1.0471976"
    -println(a + " : " + s + " : " +  as);
    -
    Description

    The inverse of sin(), returns the arc sine of a value. This function expects the values in the range of -1 to 1 and - values are returned in the range -PI/2 to PI/2.

    Syntax -
    asin(value)
    Parameters - - - - -
    valuefloat: the value whose arc sine is to be returned
    -
    Returnsfloat
    UsageWeb & Application
    Relatedsin()
    - acos()
    - atan()
    diff --git a/reference/assign/index.html b/reference/assign/index.html deleted file mode 100644 index a9e3fba..0000000 --- a/reference/assign/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: withcc -title: = (assign) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    = (assign)

    Examples
    int a;
    -
    -a = 30;  // Assigns for value 30 to the variable "a"
    -
    -a = a + 40;  // Assigns the value 70 to the variable "a"
    DescriptionAssigns a value to a variable. The "=" sign does not mean "equals", but is used to place data within a variable. The "=" operator is formally called the assignment operator. There are many different types of variables (int, floats, strings, etc.) and the assignment operator can only assign values which are the same type as the variable it is assigning. For example, if the variable is of type int, the value must also be an int.
    Syntax
    var = value
    Parameters - - - - - - - - - - - - - - - - - - - -
    varany valid variable name
    valueany value of the same type as the variable. For example, if the variable is of type "int", the value must also be an int
    UsageWeb & Application
    Related+= (add assign) - -
    -= (subtract assign)
    - diff --git a/reference/atan2_/index.html b/reference/atan2_/index.html deleted file mode 100644 index 09e34f4..0000000 --- a/reference/atan2_/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: withcc -title: atan2() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    atan2()

    Examples
    void draw() {
    -
    -  background(204);
    -
    -  translate(width/2, height/2);
    -
    -  float a = atan2(mouseY-height/2, mouseX-width/2);
    -
    -  rotate(a);
    -
    -  rect(-12, -5, 24, 10);
    -
    -}
    DescriptionCalculates the angle (in radians) from a specified point to the coordinate origin as measured from the positive x-axis. Values are returned as a float in the range from PI to -PI. The atan2() function is most often used for orienting geometry to the position of the cursor. Note: The y-coordinate of the point is the first parameter and the x-coordinate is the second due the the structure of calculating the tangent.
    Syntax
    atan2(y, x);
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    yint or float: y-coordinate of the point
    xint or float: x-coordinate of the point
    UsageWeb & Application
    Relatedtan()
    - diff --git a/reference/atan_/index.html b/reference/atan_/index.html deleted file mode 100644 index cb383dc..0000000 --- a/reference/atan_/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: withcc -title: atan() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    atan()

    Examples
    float a = PI/3;
    -float t = tan(a);
    -float at = atan(t);
    -// Prints "1.0471976 : 1.7320509 : 1.0471976"
    -println(a + " : " + t + " : " +  at);
    -
    -
    float a = PI + PI/3.0;
    -float t = tan(a);
    -float at = atan(t);
    -// Prints "4.1887903 : 1.7320513 : 1.0471977"
    -println(a + " : " + t + " : " +  at);
    -
    Description

    The inverse of tan(), returns the arc tangent of a value. This function expects the values in the range of - -Infinity to Infinity (exclusive) and values are returned in the range -PI/2 to PI/2 .

    Syntax -
    atan(value)
    Parameters - - - - -
    valuefloat: -Infinity to Infinity (exclusive)
    -
    Returnsfloat
    UsageWeb & Application
    Relatedtan()
    - asin()
    - acos()
    diff --git a/reference/background_.gif b/reference/background_.gif deleted file mode 100644 index b8e7b7a465f0954f7465f7623debd0296d3d2fdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1771 zcmV6Nk%w1VT1sL0K@FN0R`1JJj_V)JX=H~M9^6&5OBO@c(+1b?8 z)ZgFV{r&yi+}zUA($?12;^N}X&CM<@E-5J~gw?D@ZjL!+S=OB&(AY6Gynhp z{{H^@`uh9(`!X^zA^8LV00000EC2ui0E7U9000I5V3s+gqnv1}u59bRa4gSk>4;gR z?@_rvz@TtQEEcp6Yz>@xZm)&d`_?1 z@A$m_jUhWvBxn(9ZEy>Rh>41ejE#r^oy8ySDAyxO3~?&AYen-@QBVRqVEcG6)|5 zX$4?euYlPMqDR+2y}I@5*t2Wj&b_<$@76zv7cU^O0Sj*nIF=h(>)p%GJxJ$3AH4nh z`19i*zn3_G#*fYAo>0!o#{hi@>ZjoUf(+hAUU>r;;1+=FIWS;e@kPhM1{`kC;D;cF zD4uZUO{iXg?NLTxhV*slVTdrsxF3lTnz$ZF7wQFFiyg}7E?9$zYmM z8ad^AVjg(qi*okq;E*=5iKLZq`f2EQbOw5)n}jZT=%d;ty5^#IzUe5Wm{upLlwelc zXqlOYx~ZL=uJ|dRp<+7fmnnKW=ANmF3h1PFn)+&?u|m44pp4#nX|9IuN~x`S;tFiA zvvS%hv1FopY@fo`TBWa`J_~LCvZO9MZLz;vduFtyZriN4euArQp5u}$r@3vq%5Amk zYRT@P)H)k)lk@iauD$mHnXkL)_M7Fu%)%=0z}T|dZo$SL{3F5Q8tkyY3G)iD#1n5> z@vsp$oH2|Lql@v!Aa5+K$R3mYVaS%ktMbYwhl_HzFV7kCxh?Zsvw|$2y0eHkFWfQB zKj+tTy+y+erJ^V2oOFXn@B6gPOVcW|(^K;tG`&)1tzXmud;MqC$_hQR%VK*6_Q+|g zy|un!x9v9B*_w^D+=#w?amsjSw>IB>U-viBfrqCz!-N-3-QZ{|uIb@JH}1FwjO#pk z<&#GW`Pr5`j(O(TeGa<+;dCp^b=;$iKKkOD-@Q8Jt^52s>!n+axa6M4j`ZxX*UmBL zy!YN^*{8D&y6USVpStc{&#wIO%%cvy?@i0@eDua={=D|s1D-qeS6l!3_Lp~`xZ>o0 zKYZQAdyl^PxW5lR&f+Hzf9LYAZ#vxBmp{MV^;_Qm+IPOfr7wSKA|C(TXTbZ7=YbH6 zpadsK!3tXNf*8Eu{UpG_4tnr|APk`hM@YgFn(%}pgdYb`$if!7@P#mx!2Kpb!y4M~ zhB(Zj4tL1I9{TWyJ5(VMhe*UC8u5q|xE}(R$iyZ(@rh83q7R@{sJY!^8fx$%u~jH4XqNXI(bv5xd%KxVYKw>$drkAMuM zAoJ(}<{e0oh)kp+1IdBt6q1iC5`cjaM9E58@{*X$q$W4X$xeFGk!nmJ`=}I~3~9)d zs7$3QSE)+rJW>GuQ6O_72_5O!@|L*Fr7m~L%U=5Om%n_adC+6E$hd}-vH^}Vm&wd# zI5rO>vy9{z(><0c(2jR- z^dCSCs!)eY)PUfWAUioo2Be{jUX0_ZP>rfor;5|#oMR`D(ZnrsA(CWx^{ZeFt60r( NRX02%GEoQt06QK!x<>#2 diff --git a/reference/background_/index.html b/reference/background_/index.html deleted file mode 100644 index 1e243ce..0000000 --- a/reference/background_/index.html +++ /dev/null @@ -1,202 +0,0 @@ ---- -layout: withcc -title: background() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    background()

    Examples
    example pic
    background(51);
    example pic
    background(255, 204, 0);
    example pic
    -
    -// @pjs preload must be used to preload the image
    -
    -/* @pjs preload="laDefense.jpg"; */
    -
    -PImage b;
    -
    -b = loadImage("laDefense.jpg");
    -
    -background(b);
    DescriptionThe background() function sets the color used for the background of the Processing window. The default background is light gray. In the draw() function, the background color is used to clear the display window at the beginning of each frame. - -

    - -An image can also be used as the background for a sketch, however its width and height must be the same size as the sketch window. - -

    - -Unlike Processing, it is possible to use transparency (alpha) in background colors with the main drawing surface.
    Syntax
    background(gray)
    -
    -background(gray, alpha)
    -
    -background(value1, value2, value3)
    -
    -background(value1, value2, value3, alpha)
    -
    -background(color)
    -
    -background(color, alpha)
    -
    -background(hex)
    -
    -background(hex, alpha)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    grayint or float: specifies a value between white and black
    alphaint or float: opacity of the background
    value1int or float: red or hue value (depending on the current color mode)
    value2int or float: green or saturation value (depending on the current color mode)
    value3int or float: blue or brightness value (depending on the current color mode)
    colorcolor: any value of the color datatype
    hexint: color value in hexadecimal notation (i.e. #FFCC00 or 0xFFFFCC00)
    UsageWeb & Application
    Relatedstroke()
    - - fill()
    - - tint()
    - - colorMode()
    - - - diff --git a/reference/background_2.gif b/reference/background_2.gif deleted file mode 100644 index 2532ed2807725105c2dab45ee68f8c97fed99dac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2249 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 X`olF1k{A}V60WY`nsPdi)47q{xvZ MOPV~15@7)VJ9{6JPyhe` diff --git a/reference/beginCamera_/index.html b/reference/beginCamera_/index.html deleted file mode 100644 index 1a22ecc..0000000 --- a/reference/beginCamera_/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: withcc -title: beginCamera() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    beginCamera()

    Examples
    example pic
    // The image for this example has not been updated.
    -size(100, 100, P3D);
    -noFill();
    -
    -beginCamera();
    -camera();
    -rotateX(-PI/6);
    -endCamera();
    -
    -translate(50, 50, 0);
    -rotateY(PI/3);
    -box(45);
    Description

    The beginCamera() and endCamera() functions enable advanced customization of the camera space. - The functions are useful if you want to more control over camera movement, however for most users, the camera() function will be sufficient.

    -

    The camera functions will replace any transformations (such as rotate() or translate()) that occur before them in draw(), - but they will not automatically replace the camera transform itself. For this reason, camera functions should be placed at the beginning of draw() - (so that transformations happen afterwards), and the camera() function can be used after beginCamera() if you want to reset the camera before applying transformations.

    -

    This function sets the matrix mode to the camera matrix so calls such as translate(), rotate(), applyMatrix() and resetMatrix() - affect the camera. beginCamera() should always be used with a following endCamera() and pairs of beginCamera() and endCamera() cannot be nested.

    Syntax
    beginCamera()
    ReturnsNone
    UsageWeb & Application
    Relatedcamera()
    - endCamera()
    - applyMatrix()
    - resetMatrix()
    - translate()
    - rotate()
    - scale()
    diff --git a/reference/beginShape_.gif b/reference/beginShape_.gif deleted file mode 100644 index a5c127480b90ef3874d7bb1c19d5d661591e9a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2160 zcmV-$2#@ziNk%w1VT1sL0K@l=)q{hB`uh6H%F1+f zbhERwtgNhTY;5W2>E`C<^78UzWMrG0n~I8x+1c65%*^8A;(L30($doG?CkjX`1JJj z_V)Jg@9+Hl{LjzNA^8LV00000EC2ui0E7U9000I5;P+uhz@TtQ6y9(L& zAA-xZ&Kc(C=;`X~?CtLF@bU5)&cl_jBA&L*=N0PICJX6dC_0V zTAm(e`aq7Q%MBcoDqYI7sne%Wqe`7hRqD&0KTmoa`hZ^ti!V877)!RS*|TWVs$I*r zty{Mou0rTQZ(ATtB)U@k`f@CSzkmY^9!$8f;lqd%D^@)As!zLtUg`Y`VT0erm@{kM z%z1EQi*&bX1@Ov&QKT9Gd+;!zb&uDuW6PdRySDAyxO3aq5O?m+yD3dmwye6faoxz1 zD__n$!Drugg&q@LS?pid#$7kx&b@nX1iUvuAB~qf>g(BC?^w^iz5Dm@9-&T{XOWRh%B~v;A{AmnBj>j{L;7Rha>z{1ICxI|t%YPRUQs4lX? zwkvKAF}ixJv+>H?;=A~stFOD`mN{*{|AxqKu>KY-;=$%Ns_?!6ySXm74@=1KrVdwZ zaKv^_Ot8iVUQ8;;8`JA&xA!8PG078(%r46Vx=b<5^vV1&%{6oEt;Y%D{G!Q-3jFQO zKC=oms6z9+a?uv*oN~jJGTrpi_UhX2(o)N3bI)1h>a^7=N8Pp23Dj#W*ie@`w$@*l zi?P^iySFvgaq~&_*=~ z0Ssv2-$;eS9{TWyKn$V~he*UC8u5rk)S>JEgv2H?AOZ()q7~kAMth z9VJiz3Gh*At&xBt7s<#*I`WZ_jHDzdNy$n^@{k_1q$W4X$xeFGkjVSr`367$36%1b zrc5O&SEp;=uGDU#!0FJOu(J+e5X9) zNzZxOv!3|8r#|z^&wct6p9csiJ3SQ8f*SOo2u-L$7s}9vI`p9o9VmbxO3{j1^r9BM zzyU5G(ezyZ;G-Z7sYpjk(vq6=q$o|PN=@3)?5y;qFpa59XUfq~LU5D{xIj*Ks?(nG z^rt=zDo}?i)S?pgs76idQ5Dcq<0#;%P>rfor%KhTTJ@?}&8k+d+SJx;^{ZeFt60U_ z0H)fsgQIMKTGz_fwz~DLaE+^6=StVQ# z#3ywD3X)VZjt2KbAyAI8l&4H(fG|WfCpi%;#IcWw%;U>o4zrlWTo0gVSp>>phBnsB m<~FDrS%^a)!pO6p_sr)$n_0(YSTGJk0029yJcGjk diff --git a/reference/beginShape_/index.html b/reference/beginShape_/index.html deleted file mode 100644 index b899d91..0000000 --- a/reference/beginShape_/index.html +++ /dev/null @@ -1,252 +0,0 @@ ---- -layout: withcc -title: beginShape() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    beginShape()

    Examples
    example pic
    beginShape();
    -
    -vertex(30, 20);
    -
    -vertex(85, 20);
    -
    -vertex(85, 75);
    -
    -vertex(30, 75);
    -
    -endShape();
    example pic
    beginShape(POINTS);
    -
    -vertex(30, 20);
    -
    -vertex(85, 20);
    -
    -vertex(85, 75);
    -
    -vertex(30, 75);
    -
    -endShape();
    example pic
    beginShape(LINES);
    -
    -vertex(30, 20);
    -
    -vertex(85, 20);
    -
    -vertex(85, 75);
    -
    -vertex(30, 75);
    -
    -endShape();
    example pic
    noFill();
    -
    -beginShape();
    -
    -vertex(30, 20);
    -
    -vertex(85, 20);
    -
    -vertex(85, 75);
    -
    -vertex(30, 75);
    -
    -endShape();
    example pic
    noFill();
    -
    -beginShape();
    -
    -vertex(30, 20);
    -
    -vertex(85, 20);
    -
    -vertex(85, 75);
    -
    -vertex(30, 75);
    -
    -endShape(CLOSE);
    example pic
    beginShape(TRIANGLES);
    -
    -vertex(30, 75);
    -
    -vertex(40, 20);
    -
    -vertex(50, 75);
    -
    -vertex(60, 20);
    -
    -vertex(70, 75);
    -
    -vertex(80, 20);
    -
    -endShape();
    example pic
    beginShape(TRIANGLE_STRIP);
    -
    -vertex(30, 75);
    -
    -vertex(40, 20);
    -
    -vertex(50, 75);
    -
    -vertex(60, 20);
    -
    -vertex(70, 75);
    -
    -vertex(80, 20);
    -
    -vertex(90, 75);
    -
    -endShape();
    example pic
    beginShape(TRIANGLE_FAN);
    -
    -vertex(57.5, 50);
    -
    -vertex(57.5, 15); 
    -
    -vertex(92, 50); 
    -
    -vertex(57.5, 85); 
    -
    -vertex(22, 50); 
    -
    -vertex(57.5, 15); 
    -
    -endShape();
    example pic
    beginShape(QUADS);
    -
    -vertex(30, 20);
    -
    -vertex(30, 75);
    -
    -vertex(50, 75);
    -
    -vertex(50, 20);
    -
    -vertex(65, 20);
    -
    -vertex(65, 75);
    -
    -vertex(85, 75);
    -
    -vertex(85, 20);
    -
    -endShape();
    example pic
    beginShape(QUAD_STRIP); 
    -
    -vertex(30, 20); 
    -
    -vertex(30, 75); 
    -
    -vertex(50, 20);
    -
    -vertex(50, 75);
    -
    -vertex(65, 20); 
    -
    -vertex(65, 75); 
    -
    -vertex(85, 20);
    -
    -vertex(85, 75); 
    -
    -endShape();
    example pic
    beginShape();
    -
    -vertex(20, 20);
    -
    -vertex(40, 20);
    -
    -vertex(40, 40);
    -
    -vertex(60, 40);
    -
    -vertex(60, 60);
    -
    -vertex(20, 60);
    -
    -endShape(CLOSE);
    DescriptionUsing the beginShape() and endShape() functions allow creating more complex forms. beginShape() begins recording vertices for a shape and endShape() stops recording. The value of the MODE parameter tells it which types of shapes to create from the provided vertices. With no mode specified, the shape can be any irregular polygon. The parameters available for beginShape() are POINTS, LINES, TRIANGLES, TRIANGLE_FAN, TRIANGLE_STRIP, QUADS, and QUAD_STRIP. After calling the beginShape() function, a series of vertex() commands must follow. To stop drawing the shape, call endShape(). The vertex() function with two parameters specifies a position in 2D and the vertex() function with three parameters specifies a position in 3D. Each shape will be outlined with the current stroke color and filled with the fill color. Transformations such as translate(), rotate(), and scale() do not work within beginShape(). It is also not possible to use other shapes, such as ellipse() or rect() within beginShape().
    Syntax
    beginShape(MODE)
    Parameters - - - - - - - - - -
    MODEEither POINTS, LINES, TRIANGLES, TRIANGLE_FAN, TRIANGLE_STRIP, QUADS, QUAD_STRIP
    UsageWeb & Application
    Related - - endShape()
    - - vertex()
    - - curveVertex()
    - - bezierVertex()
    - diff --git a/reference/beginShape_0.gif b/reference/beginShape_0.gif deleted file mode 100644 index 90b4da30cd7e67feb1876f323c02888e87643b6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 zcmV;e2~ze)Nk%w1VT1sL0K@FLD8#Pag;`uh5VgM-S- z%HrbUb8~ZNXJ_W-=GocV0001+o12P?itOy{`1ttJ($aisw&+&y5%$QAP3Iqw0g~MyWjA*{9TTw zyx_}eyk4CB0f2&kgn@;FhKY!ahmDGkjE|ClX?08|Bu7qa3!R>yprN9pq@|{(sHvc8 zPM9M&Wq+Rzw6(UkxVgH!yuH4^zz(Zttpb@HvYoXB%+1cv(9zP<)YaD4*afwp#Fwwg zp0v#q0PICJXU$x|mr ze8-*(qZ}^A+(4nM*|TWVs$I*r zt=qS7;cmcsfP*}3fV%Fh7&c~E1b_nz9!$8f;lqd%D_*>~ELNa+0lC^6_JD@Jj5BNA z%(*jR#~1BJPC3G8MayIZV_3bKhwIm{W6PdRySDAyxM>@pFt={dyeh$prJ#EChvT`E zD__pMxdPC>@eZvZJSlMm#*ZU+&b_;L+z5DUh%Ss6rs}D&WBA~qy$2oehUA-GJ#?h+v8|)~Mf#5t=t4j1`tRqm4iY2_KFv>iA+`G5Xk^ zkW2i5JWtxgcssp2Z&Pk=Dl2R(7qjai? zX`q^#>F1$8ehO-yA8NVjnU5k$BLuLy& zVyo?Z&-MvyyWz&GueI~aSFfdz=DY8}$o9J^w|lO8FSs?nOYp<(89XGyaeB)tz70dH zu?G@QO0lodE*x;i8$aAJ5+9cta*`ucTQb2X?~rn#7c=bg%lpRs@3$=vi}S!b&)jIu zJ)`LG&*cVYQFBc$)mAr+^`Baw zc(mF4dYyLI07Jbs+~cARw#s6&P4?Y*U#oYjeAnGJhi?a-?BKl?&a>TaD=xU)d(+IW z&1FljEaU2~P3qr~YrZW1=U1=nx2J%MUNGf^TP`x>h^xLi>y5iUHtM0vek|!~oBlcO zvFpA&?VbBBE$|yAEJFhCsVD91X|@s4)PBLwEa$3D6N0(r!v z0S3v&`2B8>h)kp+7s*IOLSPG!jHDC**+@ke(tl9=KqWWH$wxNflS~LDC`T#EQj+qN zrZgob8wr3x0^pJdyd3~$Ny}Q=@|L)4B?O4TOBp~Qmj-AhEiq6zOv+N2$P8vOXQ|9) zGLx1NsDU)6NzH0nvzotLCN5$5z~ANao8W}z7sg4>a+>p;=uGDgvKh`-7BiN9`#?MA zY0ETb@t!{4Vma_DvE{$ofW=hkV(h8^8t60Yx z)(8+F0$%lDdm_Nrwz~DLaE+^6=StVQ+V!q;O{*I}fY-kI^{;>pELz{$&EpLq0*6g3 zVi&8}#xnM?j*Tp2Co9>?QueZu9e`%_3PlfS_OqZ3t!PI}+R~c#w5Uz3X*qj4)w=ez zu#N3&B`^Tmvi5Wm$gOU7%iG@i_P4+du5gD-T;SgJcg0Pva+k~8<|g2{$4h_&q)XlD zTDQ9Y*uAcHv&-G>dbhja{jPYqn}G5{w^QX!uX@+Z-uAlpz3`2%eCG?_^D5~B39vwZ z_p9Ij^7p^~4KRQQEZ_nY_`n8EFoNxyCJQ+D!4QtHgeOel3S0QX7|w8o8SI`9X!ye* z4zY+wYyl3thXEEqv5Hg7;uX8N#V~%cjAKmW8QZwVIJPkZOxzv@`1r>_4ziGkOynXP z`N&94a*=uL0VO;6$xx26lo?Q#i^B7B7?`q_x6I`uH-G^RU~&V-Oy)A1`OIievzph; z<~FlBxeHfRLYcl?M%?C(x4atzZ5Fl24|?H8WyTVhe*63101r4? z<`QkugslP#ph#sblN1U%{NWIfxKrrj8z{L5;Vt0{QaH%*j(hy$H2H~LKqQQdPsB79 zA)(4w&hnObq$GDKxsg_)jIZ>Ag*eZ-&Ua1_hG?VY7Y9ep$Fakr8~x}yoCnYMtwB#>tGMN*ljV4tl#4XApih7!@djS diff --git a/reference/beginShape_2.gif b/reference/beginShape_2.gif deleted file mode 100644 index 35ebcd8db263bf69387bc8ffe978bc8b29d93203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2138 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 Q*0>IJoyTBg9E1P>J0cvj`Tzg` diff --git a/reference/beginShape_4.gif b/reference/beginShape_4.gif deleted file mode 100644 index 90c3d9ca5fc5ae55caebe6107ef952003bbdb191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2276 zcmVl=)q{hB`uh6G$;oqb zbF;IvXJ=>W>FMU?=JN9L0001+o12P?imk1!+1c65%*^8A;(UC3($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u0PIBizsH*yxI zhL=8wQ^|4zhoeZ7DqYI7sne%Wqe_L^a%azy+=4pL*MVY74jRIW9ZR;X*|TWVs$I*L zEr+TPI>^iR#}bLH61%nxi=eOHzkmY^9!$8f;lqd#hpoz!?w?k8yFS>!H?if*m@{h* zyqKcgY*+!bYCzPe2EQIsr%u4Swd>cgW6PdRySDAyvo*Yp+q3RT(vm5oPA#DLk>kjd zD__pMx%21DUn9`4!Lz*34uMYw+n0E8*>2chqkNTbaxNm!Iz&;zy9;{ zx~r@AU93HK1n|WtfPDlOXdr9o>31Ffe;D|88h`>0XyAktnwLO=ywR0ae-dr?V1V&e zDB_69A(&r=>s{htcM+24qKhV`x8Q~icIY020=}qYg)u6q;TS5~_#cSh?Pz3yJ)+3q zia3UNYw?ABH*Rn#q-!qL&`Bm?N8X z9^vMaXv*niops(xWu8qI$!DJzo;YQfHGY}qoP)CIC!$rV+31*$o~fvwf=)_lp)#5o zhR8}=uDjLddat2eCcE#R@A})EyuX@Dpt@Pcdu+h^g30f>_8$DOr`t+Q zaKDo}j4#9)FS;?s2JiYY#^h?8X~7-;+o`PWj=XTiCIgIe%qw$Dtjn?DnefCjm%JRp z(*kWD!&rK3GtBcUd^F8NU(EE+GCwV}u_sSmbk+4C4W-gA`@D6|B)4pF)?yD#cF<6D)-8Ix$+g-TGYX`pf z;F2>=b>)v=-KNxcQx16l=YmK6w&rmkK6m0g_lo-8s_V^q-KPs|IJ1y{PWbD$dz(A7 zpihqJ==6F0q~fmIE_&>i&(3%95igIs=fLl-{P4_^e!1z3UtjC=rR$!#_w=&7z4*09 zk3IP3S3kb`-}_E|w!!nhJZ|_W073rz_utz7x3M1lfaSm10I+}vG+=E4kbnRPFl5*Z zfCMK*oLk8Vs| z9|w6yLK^arbo`?oC$NACOdyc3bEG6ENy$oDQj!q3q$W4X$xco(lb(d6;XFx7Ot$Kj zs7&RlHd%lP6rcd2T;3~ZNy}Q=@|L*Fr7m~L%Un9Mahmg-=uD?Nr|EKlz#L(Esd#6XG+tW9^j?LIe-Lo%F~_t zw5LG*sZfJT)S()+s7O7kQi*zirs7lpO^vElr%KhTTJ@?}&8k+niq)qc-~wL_D_F-W z*0PfItY%FsTGy)9wzBoDZhh(n=1SMP+V!q@&8uGb%GbX7Rj+dWt6&F9*uon2sS3D2 zVi&8}#xnM?j*Tp2Co9>?QueZz&Fp0rfLH~1_OqZ3t!PI}+R~c#w5UxjX*;Xh*1Gn! zu!U_{()UFxc_6m9&8==*%K!y1;HeAzfi|IH!ID5UVPvl`}oH|4)TgW#wCYD z#w(TCjFOkkNIYgu>ss5| y*7NX*t3`keWnkmizz(*shpi1qcf%DQfCV`40gPrl``OTrwyqsLhA-nF1OPklGQ`IK diff --git a/reference/beginShape_5.gif b/reference/beginShape_5.gif deleted file mode 100644 index ac0427495ed20d76b6bebc23bc7329add7a3c8ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2511 zcmV;=2{86YNk%w1VT1sL0K@L& zAA-xZ&Kc(C=;`X~?CtLF@bU5)&cl_jBA&L*=N|t500RmfNU)&6g9sBQJlD(~niR;! z@yqa!fyIj$Giuz(v7^V2AVY@yXRhIcd&gk^Ni^s0;)a(nW6GRKv!>0PICJX6dC_0V zTAm(e`aq7Q%MBfpDqYI7sne%Wqe`7hRqD&0KTmoa`hcGYi!VE97)!RS*|TWVs$I*r zty{Mpt}^gIZ(ATtB)U@k`f@CSzkmY^9!$8f;lqd%D^@)As!zLtUg`bHV1wVqm@{kM z%z1EQi*&bX4e)A#QKT9Gb6CB)hwIm{W6PdRySDAyxM>T}5O?m+yD3dmwyb(JfaAH7 zD__pMd4kWr?Fv06yt3H8#*ZU+&b_;L+z5DYh&~!`b=257Xg|KAz5Dm@j`9Yxlq7T|ycCTQV>7}~ese)RPBAYT9q zxL$@NmPq1;^5Y2uR7mEj+eA?_&UmKaj$;gBG@s3n(V9_VG0Sc(Z{nQUt4ntmxVDWsD| zj@ag%^PM?onort^=b!HBX(f(DzQ`V+i0UAyd3@FhW1@&IdS#e>J__ldk`kKbnwQ?0 zDVRArdMK9?Bq+hDsHUpwsx-dIV331?TIiTtmWrSR6y{2yt#0-Jr;V}FX=sI{nyTxu z$MIU$iva-b9g>+h^2Bf0Uz;jY}C$T0i)tjRQgY-Y>-UYxU~ zJLjve!9Tl;?U&8Q+@r@fyO(mVQ6~X3yf1I6v&`%s?Q_!mzH70jYHqD@*Y>VkwW3## zEvwcJa^B!(v36U-TK(@-(DXZF@l4a9rx2z1CF-7dAr@T z**s27cf?=gEjH8gIz6NR=8_}s`O;`Aobl+9C*Jz$6@#w2=rWS-`rWX*ytm_hLmqhP z4ky@nrM+i?SHI`%&&QZN^3iv%bnMm- zUA&Bkziy!2i<=)d>fc|#zWANL?|$wCS)Lq8DoxxIpAFa5dAT zo&o#!Hr@fSc8Eb9VInxZ1j;OfrrO|zI=HaRQ3ZKSiJ%1Mhrar$?}8?hfKHGn6BUwh zbtRHONRXEi8+tEZ;KN=F6N0>e_;7-HLtqI<7Z2p6rfnpE^~d79auzD1cIVnbod(^{ZeFt60ZM z*0P%QtY5`ySGW2?w7T`JaE+^6wfZ?kT5zs-&8uF^I)MUAfUSg^fM5qp*uon2u!v2p zVi(KU#wHf97Ids+CrjDNTK2DXEu{qqFagebwzHu9tY||^+R>V}w5UC;YE#Qv(+=RZ zkp16lXG`1K+V-}%&8=>C%iG@SHn!aIt#F4++~N+m0s}xUaEDca<~sMe(2cHir%T=H zTKBsD*ro1rDU{vrdiT5F4etTAJD>wpz`W=^uX@wV-u1e-z3_dneB(>s`Pvu02gomZ z*OTA=`uD#84zPd+OyB|=_`n3-uXYY#0R}s`!4Q71gd&$OLO|upbmAWJuT`|o7&WtAu~0(^}trU`qi+GwXA1N>sALw z(5oI6zIM&)Ui;eD9QX^a(HS6J|N7X-PWHN1BWzU@J3GpbwzQ{x9A7bv8m1N zZc~UgfYHEsq-dH(X}i|wPPe+(P3v%T2wo7G3|KDHnR?s%-kX6AfBKUb;qb*W*~YiP z2R`t|q)0`7zzYVtQk}}6<}DD9xWp$;@v_8a+@W#X!u0|nupp%>AP>37M^5sj$i+7u z`qBqhvX`Um7~T(s zIQ{8RkGj+W!VuA%WJRzL$37-9kFItF|aJ%ECB5h#Nh+DN9fW-%7 ZAr5^AFLD8#Pag;gM)+m`ufVs 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 diff --git a/reference/beginShape_7.gif b/reference/beginShape_7.gif deleted file mode 100644 index 18a3dd309d4d9154fa177f1ed59e03159eb21903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2541 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 DDTG%4 diff --git a/reference/beginShape_8.gif b/reference/beginShape_8.gif deleted file mode 100644 index 888bbc64bbea268622b297f0b24dfa6bd54adf63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2636 zcmV-S3bXY`Nk%w1VT1sL0K@FLD8#Pag;`uh5VgM-S- z%5!sb;^N|GXJ_W-=GocV0001+o12P?itOy{`1ttJ($aisw&+&y5%$QAP3Iqw0g~MyWjA*{9TTw zyx_}eyk?yJ0f2&kgn@;FhKY!ahmDGkjE|ClX?08|Bu7qa44s~zprN9pq@|{(sHvc8 zPM9M&Wq+Rzw6(UkxVgH!yuH4^zz(Zttpb@HvYoXB%+1cv(9zP<)YaD4*afwp#Fwwg zp0v#q-oIi{jV#=IJv!>0PICJXU$x|mr ze8-*(qZ}^A+(4nM*|TWVs$I*r zt=qS7;cmcsfP*}3fV%Fh7&c~E1b_nz9!$8f;lqd%D_*>~ELNa+0lC^6_JD@Jj5BNA z%(*jR#~1BJPC3G8MayIZXIQ@pFt={dyeh$prJ#EChvT`E zD__pMxdPC>@eZvZJSlMm#*ZU+&b_;L+z5DUh%Ss6rs}D&XZYZuy$2oehUA-GJ#?h+v8|)~Mf#5t=t4j1`tRqm4iY2_KFv>iA+`G5Xk^ zkW2i5JWtxgcssp2Z&Pk=Dl2R(7qjai? zX`q^#>F1$8ehO-yA8NVjnU5k$BLuLA)1bC$Yp8LksV}ziRC2upN7BaLVagoNAfU23+pLEKiIs$li(!?!~^wY_hN@;;iz` zHM=`sw0+9FG0iN0T(rx*!kqNa)uP<=%1uKZZ^?fGeWK9mVx6+l@*!>M($-#0bk;ie z%d^yHpB!}2Vs}jTq9bF>HK|q4t#-Rlx2*L1Hvw$>#3Y`CX>k6ky#cMq92 z;ci_gA>?jzpKoHxJ6)r))71>1}jLw{;ltU0A!5_M@Yg9K%j&rJRu5KXu=ML?}LZiTxTG_7#eb> za+8vu2kBR@8P;%yF3gw#&1IFQK)@+D!BKmL)AhMWK(X~(}O4)I~xa0UdhG08|WW04FjU>D653|l||7@zDUEimc39X|3^ zs`vy1QnAWZc7l}P@k+Km$t9b`o@;1N|pL56aMbt`h*^1OPtk*eL*5^r9He zs75ym(SHj6!J{z%DG(sQQ3F8qq8TV9Iqhgslb-aYE{$nRXZlhAK%fRV&1nU0s?!?q zw5K{HDNH#!(Lq*}qexAvMIrEoraJYh9bhU{pDNX3 z8?r73s~g3DMKMs+!nFC%iG@i_O`JNZf;qdJ@@?fxX4Yea+k~8*%H@*9{50Wr%T=H zPB#Mo1c<(a!4QtHgeOel3S0QX7|yVUFYMsfZTQ0= z4zY+qEP(-(xWjgofQnbl;ugF3#W0SsjAu;a8pjyLowBixcg*7+`#1qOrcweVFytZ= z`N&32GLo09LP3S@!`p}3@w4x2&=jbl_(U6Y+ zw4^6(fkt~^0T#ftrZdgyO?$f2p#HR|Lrv;Yo4VAfHuVB5y?|D``qi+GwXA1N>ss6T z*0`oMt8>lkUi5+Styvwzo~~ zW;dX)jpS;Ym`(0xo4efTKDWBl&F*!(yWQ}9x4hvU?PqiQ-uTY9zW3ee5A6Hj01vpn z?Je+v8~osx8Ma%g^#K+-{NWIfxWp$;Lc!RV*lDVn#y8G!f*mIVfVud>jnnaxoBZVM zX*kGnY@iLg{N*r@xy)y-!PSIZ;li=Zb=1>xn*03cKo2@=0z-lE2=Yaa;yK01m(KL2 zJ6(iC|IorBLYd+0+%s6uy4E)X9nowBI3u7;UoLa?t(*PqW_JvWTI2`4@S`$giHqFl zPWQUo9W8S)y4R&v0R~W{GL}h-5(iKC!W;f7M)wVrT-5iL@C7MXjJ)J0Px+ku#4aEb z2ID7U8jFze^PmsC=t%;UyJ+4>D^bQ*`Vq(0yZ-gCUx-#5!gz3~ejJI+z3z9<`*~=d u@%TsvOT=Nx;v4_?$fw3O>OqFC+#nXW)Q2diPyOm!e;31O{ylCG0suSU0ezPM diff --git a/reference/beginShape_9.gif b/reference/beginShape_9.gif deleted file mode 100644 index 912cb15b03b3017913d15ba11d2a602bd7ad9e71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2272 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 diff --git a/reference/bezierDetail_/index.html b/reference/bezierDetail_/index.html deleted file mode 100644 index dc32694..0000000 --- a/reference/bezierDetail_/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: withcc -title: bezierDetail() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    bezierDetail()

    Examples
    example pic
    void setup() {
    -  size(100, 100, P3D);
    -  noFill();
    -  noLoop();
    -}
    -
    -void draw() {
    -  bezierDetail(1);
    -  bezier(85, 20, 10, 10, 90, 90, 15, 80);
    -  stroke(126);
    -  bezierDetail(3);
    -  bezier(85, 20, 10, 10, 90, 90, 15, 80);
    -  stroke(255);
    -  bezierDetail(12);
    -  bezier(85, 20, 10, 10, 90, 90, 15, 80);
    -}
    Description -

    Sets the resolution at which Beziers display. The default value is 20. - This function is only useful when using the P3D or OPENGL renderer as the default (JAVA2D) renderer does not use this information.

    Syntax
    bezierDetail(detail)
    Parameters - - - - -
    detailint: resolution of the curves
    ReturnsNone
    UsageWeb & Application
    Relatedcurve()
    - curveVertex()
    - curveTightness()
    diff --git a/reference/bezierPoint_.gif b/reference/bezierPoint_.gif deleted file mode 100644 index 77376acf640f836729b2c15f668878a7fedcbf1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 zcmV+?0oeXWNk%w1VPpVg0FeLy|Ns90007L)%m4rYA^8LV00000EC2ui0Av7U0008` zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iB3^2>wz5fH5!$B8QaX zQ3-_}oPZ^>5j9pHP_6Z9Pzt_dp@d3iqB~;n)axFt=>4iru- tYIm2umObwkm9K>VNWYC}&)2(g1PdBGh%lkTg$x@yd - - Name -

    bezierPoint()

    - - - - Examples - -
    example pic
    noFill();
    -bezier(85, 20, 10, 10, 90, 90, 15, 80);
    -fill(255);
    -int steps = 10;
    -for (int i = 0; i <= steps; i++) {
    -  float t = i / float(steps);
    -  float x = bezierPoint(85, 10, 90, 15, t);
    -  float y = bezierPoint(20, 10, 90, 80, t);
    -  ellipse(x, y, 5, 5);
    -}
    - - - - Description - -

    Evaluates the Bezier at point t for points a, b, c, d. The parameter t varies between 0 and 1, a and d are points on the curve, and b and c are the control points. - This can be done once with the x coordinates and a second time with the y coordinates to get the location of a bezier curve at t.

    - - - - Syntax -
    bezierPoint(a,b,c,d,t)
    - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - -
    aint or float: coordinate of first point on the curve
    bint or float: coordinate of first control point
    cint or float: coordinate of second control point
    dint or float: coordinate of second point on the curve
    tfloat: value between 0 and 1
    - - - - - Returns - None - - - - Usage - Web & Application - - - - Related - bezier()
    - bezierVertex()
    - curvePoint() - - - diff --git a/reference/bezierTangent_.gif b/reference/bezierTangent_.gif deleted file mode 100644 index 60909d2240b0a860ad0451e549e8ee6d1e1c7664..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmV;I0cie5Nk%w1VPpVg0FeLy|Ns900094H0L;wHA^8LV00000EC2ui0Av7U00092 zoR6u??GK}zwAzca-n{!HeBwBT&e@TBJc}bluI0Z?5UC*v&_8X{H%3=B@LlzJuRE9Jy6Y!hwu%q;4)60VC#*Jp?=Q3 zdG^lUs16^&D@DheJ&QK2+O=%kx_t{buH3nF>jEnP06QJq B$j1Nx diff --git a/reference/bezierTangent_/index.html b/reference/bezierTangent_/index.html deleted file mode 100644 index 906cfc1..0000000 --- a/reference/bezierTangent_/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: withcc -title: bezierTangent() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    bezierTangent()

    Examples
    example pic
    noFill();
    -bezier(85, 20, 10, 10, 90, 90, 15, 80);
    -int steps = 6;
    -fill(255);
    -for (int i = 0; i <= steps; i++) {
    -  float t = i / float(steps);
    -  // Get the location of the point
    -  float x = bezierPoint(85, 10, 90, 15, t);
    -  float y = bezierPoint(20, 10, 90, 80, t);
    -  // Get the tangent points
    -  float tx = bezierTangent(85, 10, 90, 15, t);
    -  float ty = bezierTangent(20, 10, 90, 80, t);
    -  // Calculate an angle from the tangent points
    -  float a = atan2(ty, tx);
    -  a += PI;
    -  stroke(255, 102, 0);
    -  line(x, y, cos(a)*30 + x, sin(a)*30 + y);
    -  // This follwing line of code makes a line 
    -  // inverse of the above line
    -  //line(x, y, cos(a)*-30 + x, sin(a)*-30 + y);
    -  stroke(0);
    -  ellipse(x, y, 5, 5);
    -}
    -
    example pic
    noFill();
    -bezier(85, 20, 10, 10, 90, 90, 15, 80);
    -stroke(255, 102, 0);
    -int steps = 16;
    -for (int i = 0; i <= steps; i++) {
    -  float t = i / float(steps);
    -  float x = bezierPoint(85, 10, 90, 15, t);
    -  float y = bezierPoint(20, 10, 90, 80, t);
    -  float tx = bezierTangent(85, 10, 90, 15, t);
    -  float ty = bezierTangent(20, 10, 90, 80, t);
    -  float a = atan2(ty, tx);
    -  a -= HALF_PI;
    -  line(x, y, cos(a)*8 + x, sin(a)*8 + y);
    -}
    DescriptionCalculates the tangent of a point on a Bezier curve. There is a good definition of "tangent" at Wikipedia: http://en.wikipedia.org/wiki/Tangent
    Syntax
    bezierTangent(a,b,c,d,t)
    Parameters - - - - - - - - - - - - - - - - - - - - -
    aint or float: coordinate of first point on the curve
    bint or float: coordinate of first control point
    cint or float: coordinate of second control point
    dint or float: coordinate of second point on the curve
    tfloat: value between 0 and 1
    UsageWeb & Application
    Relatedbezier()
    - bezierVertex()
    - curvePoint()
    diff --git a/reference/bezierTangent_2.gif b/reference/bezierTangent_2.gif deleted file mode 100644 index f9743fcb23100385508aeb48024c0bec9fdcf9ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 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 diff --git a/reference/bezierVertex_/index.html b/reference/bezierVertex_/index.html deleted file mode 100644 index 2da9332..0000000 --- a/reference/bezierVertex_/index.html +++ /dev/null @@ -1,212 +0,0 @@ ---- -layout: withcc -title: bezierVertex() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    bezierVertex()

    Examples
    example pic
    noFill();
    -
    -beginShape();
    -
    -vertex(30, 20);
    -
    -bezierVertex(80, 0, 80, 75, 30, 75);
    -
    -endShape();
    example pic
    beginShape();
    -
    -vertex(30, 20);
    -
    -bezierVertex(80, 0, 80, 75, 30, 75);
    -
    -bezierVertex(50, 80, 60, 25, 30, 20);
    -
    -endShape();
    DescriptionSpecifies vertex coordinates for Bezier curves. Each call to bezierVertex() defines the position of two control points and one anchor point of a Bezier curve, adding a new segment to a line or shape. The first time bezierVertex() is used within a beginShape() call, it must be prefaced with a call to vertex() to set the first anchor point. This function must be used between beginShape() and endShape() and only when there is no MODE parameter specified to beginShape(). Using the 3D version of requires rendering with P3D or OPENGL (see the Environment reference for more information).
    Syntax
    bezierVertex(cx1, cy1, cx2, cy2, x, y)
    -
    -bezierVertex(cx1, cy1, cz1, cx2, cy2, cz2, x, y, z)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    cx1The x-coordinate of 1st control point, either a float or int
    cy1The y-coordinate of 1st control point, either a float or int
    cz1The z-coordinate of 1st control point, either a float or int
    cx2The x-coordinate of 2nd control point, either a float or int
    cy2The y-coordinate of 2nd control point, either a float or int
    cz2The z-coordinate of 2nd control point, either a float or int
    xThe x-coordinate of anchor point, either a float or int
    yThe y-coordinate of anchor point, either a float or int
    zThe z-coordinate of anchor point, either a float or int
    UsageWeb & Application
    Related - - curveVertex()
    - - vertex()
    - - bezier()
    - - - diff --git a/reference/bezierVertex_2.gif b/reference/bezierVertex_2.gif deleted file mode 100644 index 7d6c372b441aad3eaac0bf65351e30f571471ce5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 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 pL|5b6;10LA#eI#QfWgqiU - - - - Name - -

    bezier()

    - - - - - - - - - - Examples - -
    example pic
    noFill();
    -
    -stroke(255, 102, 0);
    -
    -line(85, 20, 10, 10);
    -
    -line(90, 90, 15, 80);
    -
    -stroke(0, 0, 0);
    -
    -bezier(85, 20, 10, 10, 90, 90, 15, 80);
    example pic
    noFill();
    -
    -stroke(255, 102, 0);
    -
    -line(30, 20, 80, 5);
    -
    -line(80, 75, 30, 75);
    -
    -stroke(0, 0, 0);
    -
    -bezier(30, 20,  80, 5,  80, 75,  30, 75);
    - - - - - - - - - - Description - - Draws a Bezier curve on the screen. These curves are defined by a series of anchor and control points. The first two parameters specify the first anchor point and the last two parameters specify the other anchor point. The middle parameters specify the control points which define the shape of the curve. Bezier curves were developed by French engineer Pierre Bezier. Using the 3D version of requires rendering with P3D or OPENGL (see the Environment reference for more information). - - - - - - - - Syntax - -
    bezier(x1, y1, cx1, cy1, cx2, cy2, x2, y2);
    -
    -bezier(x1, y1, z1, cx1, cy1, cz1, cx2, cy2, cz2, x2, y2, z2);
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    x1, y1, z1int or float: coordinates for the first anchor point
    cx1, cy1, cz1int or float: coordinates for the first control point
    cx2, cy2, cz2int or float: coordinates for the second control point
    x2, y2, z2int or float: coordinates for the second anchor point
    - - - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - bezierVertex()
    - - curve()
    - - - - - - - diff --git a/reference/bezier_2.gif b/reference/bezier_2.gif deleted file mode 100644 index 560512cd9a9e1018a227602df313541ad2f8272f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2300 zcmV0PIBizsH*yxI zhL=8wQ^_)?(W6L{Dvi0bXGv~BA?WKs(ItngShH%~%C)Q4uVBN973-2>2YK24SRx@+ zBGr~x708`Sx31m0c=PJr%eQaet1Tn&O#7!*TdENN#P!R#vE#>(?E*F{&nHk44~W8@ z>!EY!1)xKV9!C>oFt6qJYL*TQO)t=0ZSTX0$1acqQ&AYen-@t6v26vobL%Efy}I@5)k7bD9UCfhiOxC5jV>L#`Sa+hYj+JmaQ88nns0_Ky?pxn z`0<0@-u|p|_}{(toCozym*0W+1rWgh7wRp*pL_qUCEtJr5`f@^)_tI$f_OCepnp#R zsKJEd(N`dbCBADot-Z2WNiDW{0 zM3PHtS>>f}f+;1Z_62(72$No5D5RwJsp+X>rdnkH66C6@nw6Fr>z95O*=dRz>MDVu zI2fC&r@Q^SD2Z_nd!exmR_dewuFPKGY^KnnYT$v(q9*~f+ltt2t>0$*Tex$U`zEcA zsvF$6?XsyTw~aV>Ys8N-0#01mKv<14LiKLGAwP!52pz7x$%-*GKMD)jBddy&ucQk5{E48zA^iT@PRFF`f|>~?VMlF z@Ky};ZbCB|v8*T?ee@1VBT6&VE~or7(kxF6tj!dUeDx7gqeryJIDf4}*lRAmb<jpI#Q9wdZZ*L`9}&gfC3a?B*8Gr$xeFmlb{5pvLq17QkwFV zs5GS}UzW;Na?)5yilr=PNy}Q&@&K*G|F#mb&z%EF~#SXG+tW+H|HBFhEWlT7jPW z^rt`#s!)eY)S?>os7NI$Pm{{jraJYhPfb8W6Ho!FTD7WJy{cBT%GIrUwX0zLs#wEH zR<9=DtW!O!TGz_fwz~DLaE+^6=So+&PBjAwz^h*K%GbU6wXcBvt6&35*ufgMu!uEm zLo>kG#ya+~kd3TlCrjDNTK2M&T`Xod%h}F)_OlITKn6rh+R>V}w5UC;YE#SF)w;H| zuzjs;VatHfGT^qj&8=>C%iG@i_P4+du5f#6+u<7bxX4Xzasi{i2iDI6%8jmcr)yjX zFu(!-4RwHax69q`diT5F4X=2|OWyK&_qq=7fCGj1KI^*oy6}CkeB(>s`P#R>_`R=w z^UGiTZa2H;4X}U*OyB|oxWEWbu!04A-~~JQ!4FnU``G(D&sg}v7|yVUH_YJo0NSkAJRw+!PRx9L3&IZRa+6PYrb`OJ@*OpLz7 z7TSa<$!LzVoaM}1!91xCYtevIn&TYBjOEXO4z!>Lot3gcNLG4o3wWxsltw%H(MoA~ zN@ce8ft0wVD3H#yrZc@0*kq$5i>kCZGUFD+faKJuPPM96-DyvMdQm6|$Da3rkXqaN z*0|2KKNRw5P-n^&;K)Zr;z8_U8~fPDo`+9hEdpdH0~^qewzQ{BZEgHy40#p-EWm*e WV0io6;10LAmwjz)+d~8)0029{U%o8> diff --git a/reference/binary_/index.html b/reference/binary_/index.html deleted file mode 100644 index f3eeb50..0000000 --- a/reference/binary_/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: withcc -title: binary() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    binary()

    Examples
    color c = color(255, 204, 0);
    -println(c);             // Prints -13312
    -println(binary(c));     // Prints 11111111111111111100110000000000
    -println(binary(c, 16)); // Prints 1100110000000000
    DescriptionConverts a byte, char, int, or color to a String containing the equivalent binary notation. For example color(0, 102, 153, 255) will convert to the String "11111111000000000110011010011001". This function can help make your geeky debugging sessions much happier.
    Syntax
    binary(value)

    -
    binary(value,digits)
    -
    Parameters - - - - - - - - -
    valuebyte, char, int, color: value to convert
    digitsint: number of digits to return
    ReturnsString
    UsageWeb & Application
    Relatedunhex()
    - hex()
    - unbinary()
    diff --git a/reference/bitwise AND/index.html b/reference/bitwise AND/index.html deleted file mode 100644 index fc02cf5..0000000 --- a/reference/bitwise AND/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -layout: withcc -title: "& (bitwise AND) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    & (bitwise AND)

    Examples
    int a = 207;    // In binary: 11001111
    -
    -int b = 61;     // In binary: 00111101
    -
    -int c = a & b; // In binary: 00001101
    -
    -println(c);     // Prints "13", the decimal equivalent to 00001101

    color argb = color(204, 204, 51, 255);
    -
    -// The sytax "& 0xFF" compares the binary
    -
    -// representation of the two values and 
    -
    -// makes all but the last 8 bits into a 0.
    -
    -// "0xFF" is 00000000000000000000000011111111 
    -
    -int a = argb >> 24 & 0xFF;
    -
    -int r = argb >> 16 & 0xFF;
    -
    -int g = argb >> 8 & 0xFF;
    -
    -int b = argb & 0xFF;        
    -
    -fill(r, g, b, a);
    -
    -rect(30, 20, 55, 55);
    DescriptionCompares each corresponding bit in the binary representation of the values. For each comparison two 1's yeild 1, 1 and 0 yeild 0, and two 0's yeild 0. This is easy to see when we look at the binary representation of numbers - - - -
      11010110  // 214
    -
    -& 01011100  // 92
    -
    -  --------
    -
    -  01010100  // 84
    -
    -
    - - - -To see the binary representation of a number, use the binary() function with println().
    Syntax
    value & value2
    Parameters - - - - - - - - - - - - - - - - - - - -
    value1int, char, byte
    value2int, char, byte
    UsageWeb & Application
    Related| (bitwise OR)
    - - binary()
    - diff --git a/reference/bitwise OR/index.html b/reference/bitwise OR/index.html deleted file mode 100644 index b262651..0000000 --- a/reference/bitwise OR/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -layout: withcc -title: "| (bitwise OR) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    | (bitwise OR)

    Examples
    int a = 205;   // In binary: 11001101
    -
    -int b = 45;    // In binary: 00101101
    -
    -int c = a | b; // In binary: 11101101
    -
    -println(c);    // Prints "237", the decimal equivalent to 11101101

    int a = 255 << 24; // Binary: 11111111000000000000000000000000
    -
    -int r = 204 << 16; // Binary: 00000000110011000000000000000000
    -
    -int g = 204 << 8;  // Binary  00000000000000001100110000000000
    -
    -int b = 51;        // Binary: 00000000000000000000000000110011
    -
    -// OR the values together:    11111111110011001100110000110011 
    -
    -color argb = a | r | g | b; 
    -
    -fill(argb); 
    -
    -rect(30, 20, 55, 55);
    DescriptionCompares each corresponding bit in the binary representation of the values. For each comparison two 1's yeild 1, 1 and 0 yeild 1, and two 0's yeild 0. This is easy to see when we look at the binary representation of numbers

      11010110  // 214
    & 01011100 // 92
    --------
    11011110 // 222

    To see the binary representation of a number, use the binary() function with println().
    Syntax
    value | value2
    Parameters - - - - - - - - - - - - - - - - - - - -
    value1int, char, byte
    value2int, char, byte
    UsageWeb & Application
    Related& (bitwise AND)
    - - binary()
    - diff --git a/reference/blendColor_/index.html b/reference/blendColor_/index.html deleted file mode 100644 index 45dddd1..0000000 --- a/reference/blendColor_/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: withcc -title: blendColor() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    blendColor()

    Examples
    example pic
    color orange = color(204, 102, 0);
    -color blue = color(0, 102, 153);
    -color orangeblueadd = blendColor(orange, blue, ADD);
    -background(51);
    -noStroke();
    -fill(orange);
    -rect(14, 20, 20, 60);
    -fill(orangeblueadd);
    -rect(40, 20, 20, 60);
    -fill(blue);
    -rect(66, 20, 20, 60);
    Description

    Blends two color values together based on the blending mode given as the MODE parameter. - The possible modes are described in the reference for the blend() function.

    Syntax -
    blendColor(c1,c2,MODE)
    Parameters - - - - - - - - - - - - - - - -
    c1color: the first color to blend
    c2color: the second color to blend
    MODEEither BLEND, ADD, SUBTRACT, DARKEST, LIGHTEST, DIFFERENCE, EXCLUSION, MULTIPLY, SCREEN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, DODGE, or BURN
    Returnsfloat
    UsageWeb & Application
    Relatedblend()
    - color()
    diff --git a/reference/blend_/index.html b/reference/blend_/index.html deleted file mode 100644 index aab2b87..0000000 --- a/reference/blend_/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -layout: withcc -title: blend() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    blend()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="rockies.jpg, degaul.jpg"; */
    -PImage img = loadImage("rockies.jpg");
    -PImage img2 = loadImage("degaul.jpg"); 
    -img.blend(img2, 0, 0, 33, 100, 67, 0, 33, 100, ADD); 
    -image(img, 0, 0);
    -image(img2, 0, 0);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="rockies.jpg, degaul.jpg"; */
    -PImage img = loadImage("rockies.jpg");
    -PImage img2 = loadImage("degaul.jpg"); 
    -img.blend(img2, 0, 0, 33, 100, 67, 0, 33, 100, SUBTRACT); 
    -image(img, 0, 0);
    -image(img2, 0, 0);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="rockies.jpg, degaul.jpg"; */
    -PImage img = loadImage("rockies.jpg");
    -PImage img2 = loadImage("degaul.jpg"); 
    -img.blend(img2, 0, 0, 33, 100, 67, 0, 33, 100, DARKEST); 
    -image(img, 0, 0);
    -image(img2, 0, 0);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="rockies.jpg, degaul.jpg"; */
    -PImage img = loadImage("rockies.jpg");
    -PImage img2 = loadImage("degaul.jpg"); 
    -img.blend(img2, 0, 0, 33, 100, 67, 0, 33, 100, LIGHTEST); 
    -image(img, 0, 0);
    -image(img2, 0, 0);
    Description

    Blends a region of pixels into the image specified by the img parameter. - These copies utilize full alpha channel support and a choice of the following modes to blend the colors of source pixels (A) - with the ones of pixels in the destination image (B):

    -

    BLEND - linear interpolation of colours: C = A*factor + B

    -

    ADD - additive blending with white clip: C = min(A*factor + B, 255)

    -

    SUBTRACT - subtractive blending with black clip: C = max(B - A*factor, 0)

    -

    DARKEST - only the darkest colour succeeds: C = min(A*factor, B)

    -

    LIGHTEST - only the lightest colour succeeds: C = max(A*factor, B)

    -

    DIFFERENCE - subtract colors from underlying image.

    -

    EXCLUSION - similar to DIFFERENCE, but less extreme.

    -

    MULTIPLY - Multiply the colors, result will always be darker.

    -

    SCREEN - Opposite multiply, uses inverse values of the colors.

    -

    OVERLAY - A mix of MULTIPLY and SCREEN. Multiplies dark values, and screens light values.

    -

    HARD_LIGHT - SCREEN when greater than 50% gray, MULTIPLY when lower.

    -

    SOFT_LIGHT - Mix of DARKEST and LIGHTEST. Works like OVERLAY, but not as harsh.

    -

    DODGE - Lightens light tones and increases contrast, ignores darks. Called "Color Dodge" in Illustrator and Photoshop.

    -

    BURN - Darker areas are applied, increasing contrast, ignores lights. Called "Color Burn" in Illustrator and Photoshop.

    -

    All modes use the alpha information (highest byte) of source image pixels as the blending factor. - If the source and destination regions are different sizes, the image will be automatically resized to match the destination size. - If the srcImg parameter is not used, the display window is used as the source image.

    -

    This function ignores imageMode().

    Syntax
    blend(x,y,width,height,dx,dy,dwidth,dheight,MODE)

    -
    blend(srcImg,x,y,width,height,dx,dy,dwidth,dheight,MODE)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint: X coordinate of the source's upper left corner
    yint: Y coordinate of the source's upper left corner
    widthint: source image width
    heightint: source image height
    dxint: X coordinate of the destination's upper left corner
    dyint: Y coordinate of the destination's upper left corner
    dwidthint: destination image width
    dheightint: destination image height
    srcImgPImage:a image variable referring to the source image.
    MODEEither BLEND, ADD, SUBTRACT, LIGHTEST, DARKEST, DIFFERENCE, EXCLUSION, MULTIPLY, SCREEN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, DODGE, BURN
    -
    ReturnsNone
    UsageWeb & Application
    Relatedalpha()
    - filter()
    diff --git a/reference/blend_add.jpg b/reference/blend_add.jpg deleted file mode 100644 index e71ffad72de55581437cf43df7f97fc2c5ecb1f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7988 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 diff --git a/reference/blend_color.gif b/reference/blend_color.gif deleted file mode 100644 index c70bb72dcf34936b5248e8a92cfbc6856b687ed9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 561 zcmV-10?z$MNk%w1VPpVg0FeLy%*&X}W&i+YnKLspA^8LV00000EC2ui0Av7U00092 zoR6u??GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`sRqVb4CDgex; z^Z8T=rqrs{3QB6VOQ;try^62dt-09!ssZ7#TTni4(`#@0Eso2R^m;Ub=cc!J)aTc9 z7g#k&h?a0@2dGH)(a84*`G+t`>0zmanTaULNyXS`2${%vN|<`MI@!AS>KCgxD_2{0 z8<=~xyVi^MYZk0F{8l^{D#}J$3Rn4Qbo`YpI87a39l04jwanEliajQNiQqi?4UP_~ zzW&@E{a#3(X`ZJ|-3QX6;B{7%4U?P*LjHWT0*KlU@WHBN;h7AQ?JRol#QFl6- zVRWW(QPXix%lSMvH62oUQB7rqw>9I{eL%MfWzyAQ*?v5|Ev@(UUe$bKDRQvLt?fU0 z0pkvwTafR;wF&huG|*5QVTgt$*4?6@o>rrx=_XX~F8gEk(DxTxQw29l;#T-)qzw2!5}b{ZCHaj(azCbv2pYjdr=xh_{5 zoNa8kxtUG}TU~5)vO~(7KaW1W`t|JFyMGTqzWn+0>)XGNKfnI{{QJ`aC;$LE<02QN diff --git a/reference/blend_darkest.jpg b/reference/blend_darkest.jpg deleted file mode 100644 index 66114430ad7a1c5fd9fef2b46a8f66c676e84980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9234 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�y`cPyiCHox-8{% z9KAc>h#{6R^hNaH(u8~hyE)5@UpRBY-Nm=pO~r~m5sJ8Y$y1W^;8L7ZKmp(@`qEYD zE*R3bPmW_@A9y+WJXS9N#f#n?H$TFw@EDi?;Ynq=0@eJ4&*EjIi1R3 zxA8z*4jwjYF)!|1H{JPdb$)uPjluh@m2&ktTL_QSu(yqj&ZXn+hp}Ut;xDpCOeOa# zLrs{7^!lSxtNr@#3aU@UVD_OskANO`xmhuhs*s4`d=QtHaFe8@MMkZR zqV~`O*-9>3PDkU`EAs9tN_Cn!Sj<$wU5ssrzpn`|3A!wJ6-WM3Ej#E;#82#*W`~0$ z)nU$->cqf?R!Jk-ycKz#LUH!mI_%|~DqX4Le8m7ZY$SF@C8y7__s;ftF&zPgDCTGD zpF9jRIsYBIGs*7Z0UQTyDRIM9R2eCdBOgx}mOow}akF>@{IhB5n+95k&DEZbZ z|946bXA3={sqQtYZ^r|pmHQql61b73Bx@Q=luQ8kM#7T8!*UuuysrlUHacfVMa#^W z1u$Z3{anCkznMU8ONQ$IRw#Hq@I-0AEz4G}WDAXqpsvPSj)mJ@u?zU6jkyf0VQ3e* z$-1MDr3DM6?GP-C2G_P0JicSIJwQOXrw6kjIdj6~)}xfK5HC2$ccN$=Y}kyDg767ecK{&91DXc`5XSzY6<0yqj=fAm1yzM8fNP zbj@^iUb`phnEfbA!;U~Bkoc=sMztjy2XGwbr_@p4c227bT!62td;Chlu?ryQ23>$b z_hkwdmjJ31r4Sr4@S;T7=EV)*RY|M5EC|z&Ex6Z)^NJy~;-om&AeG!K!L+@*_X898 zAsmTD>!2x+fW=x10m3&c^eg=2tfH+LKb~6Hwd)niJ*0G79KFW*0^;ks?74 zR?r+_Xyji^qXliZ3`GhjdCr7NXf#N`2v6xPk_cY1g+w=Z2e=p9ttL~ZFO6XTCxE;G90s{k&e59ag1DK%T2?*-)odKk<%o+_xd!k&UrEe>Q94Olt|J_Za1 zz+_aMJ3}}v(6NWARvH0vo3jmLk8kprQnXsiSeT%eT<-g@*7@3xyFb7Mk~7qLiGA z&L^BUPvXm29QW>6guwIMPqBcNbWC(_;}0lWM+qOFzwe??OqMeZgCf%MhXGPaRElt> z)J=dGWHp?y*`0Eobz^9=JjuSx^}#*)@Jj3B5xaQB(|{+|yo=lZ zK?+X|eG5x2)Bl}RZtp1N;D12jsq~}a*cJ<6=`qWk`6zCqGV4cTCR>LVL#2Gp1n%KkKkPKm078jm^b(#6zzYe1S+73e*Y3{5{bteZ@6!9K8#?s0Plj~ zGQBKQGFz9L<>m&iR}P}$!r4ep{ApgL?xr*Y?T}eDK&20GNk@H@dGqEqYh=BF(L(*co4~LO7z(&WF&}EcetiViD z^YSx39ny-bE`TpQsSmjiLnnzih=|CC31dkqM!s2w6ET4~fksv+n(rff*uJIsBl7V{ zj5_vHzJ{HpOKB9Z(1q$n%>>gxIN^y)C85xcAwM3{4(mV(P`myaDJT(+n~-i-a8{~{b^v@T&qZ^aM+f}V$T z_Iignj&}G9?H7>?t=m@8cJ@(hoQv){vROcA2&IAo+^}Z^(1YtB^g7X%?&Z^05;xro939nQG$DRg63(YOob}*}eNBaFK~d@sEaua=ma%?Azc0l&OO>=9Djk zJ)Os%d8sG2zhTC`y&}t&Yf-R+LtbDmUhJ~MzlK!Kgz^p4dqieZE2PhyE(WUza07s5 z3d-Ko_$}OS6yOvJ3;dqBEagIYR)1V|CAujKU0ex71&C~JnckV2dp&tN|Iis$=sRA) V+p8~>yk0ODQde{ouoZGM_dkPVU?Ttk diff --git a/reference/blend_subtract.jpg b/reference/blend_subtract.jpg deleted file mode 100644 index 44202be3cd92055301418de33d861f6afbdc8585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8754 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 diff --git a/reference/blue_.gif b/reference/blue_.gif deleted file mode 100644 index fee9b9364b3a06deccd7c6c1c8ff0665f219cdbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2500 zcmV;#2|M;jNk%w1VT1sL0K@Ca?e*eP4 z!s+ShgM)+m`ufSq$?@^=baZs$;^J&0PICJXU$+IWV zj^V2L>a!}sH<%B6DqYI7sneVrgDzM}NyN7W{*ubnz_qK_uVBN99ZR;X*|TS7MxEFv z+lHh5wrXfVx31m0c=PJr%eSxJzkj*P?DuXcOA|-+$py@~vE#>(^9lygPbE=dSmOei zOV@*E&kjP19!C>oFt6t3-wT8j_3b)0qackYr0dgPN&AYen-@tZ>PLZrFRp}wT2&09=-kh z_SGM+tX#}@`JK@h0Dc4(n4JUb@i!a)e45QipMelY*qeUbx#u5);05@ggd9ppA$#3j z$XtUOj@RLd27ajEdn0DpKy(|TC?k3*w%1=(@!9sGfHU@JUX3B*NaBt$`e_9sD(R$@R$8fmm}aVJk-iCv zVV^t>XX&V6f7jSL&>@rfO@Z!g#wHXDlDF>CK=?Q za1!e)u*^m}?6bMD3L=%r-l^*UvduF4?6A=qOYN(K#u{9<&2B4fw~8JMZnD?H@rh@yGW5cKt@dZ!ckli8;Cpua^|D8=LjoV5 zuYUUMukU{Q@Vg%wW8(vDGj;Lj|Nj2^e=t8_^#fkjg!6#{8t{M!OrQc4_!OlCa9vBo z-vTE{K?XLkCl6Fw@FZBl4pQ(WAmm5}^QODqc<_V^4511~$hhqFh5`kI;Rj?$!x-9d zhBvGs4&A}Saj;NzF60dkVMxRw8nK8-JR%M=(?fUs5PQ_2fE1@l#VT6yidUqD7L)PB z@&$1>SPY{WvDl0MGRmThK}#MF#>hrCp5l$1K%>oCkAK|5 z09sQv+EL{mp0Sf4o0zjrR6_8A3 z65yH8jHWcFNlj`J;RnlXrZ$-=fMP;0cmhafIJrsAaaQx3=&U9V*2&Ixx^tZH6lXZ+ z=}iq5YM%Ja=RDKNPk#0Q2>|`4K({f_fD-he`b=mz>q$cCC^Vt{jA%7Gxrcj3}%A9%>r#D3aO|fUwraJYh2;hKJLpoKdmb9u^y{cBJ8dRcsb(l~Mt4%$i zxY%_v0AdZRRoBYawz~DLQe~!G#W~ly()F%(m1|m|x>PUj^{H?TtYFz1&vMGsu!xQ4 zJpbC%4v^J)u?(395YPe2TDG#7wd`Ow8(52a_OlwztY|5V*}k5&1E@`{YFEqI*0vS2 zuvO@4XRF%B!p@MVrLAsv%iG@i_P4+du4!!++|(Wbwa4v1a+izT<|@~@%q^~TfqUEo z40mb&2gt5=x69q`diT5F4X=2|OJ49^H+bbuuX@+Z-u7PLyoI`eeCJEw`r7xt_|30= z_sie@<`=#K@~?mgOyB|=m;nH$4+Ac+;081J!48fvgeNTF3RC#P7S1q+H(X%`csRl1 z@vw+TOyUxo_{1nqv5HsB;uM2eIxUW|jAu;a8E1e28F+DSGQi^=`}oH|4ziGkOynXP z`N%`oaR89ass47 z*0#>Iu6I4_$^7n{g*u$DP3D2R2s*OC9=5XgRc!bsd)d&wm1pR3Yymzy+SuOIv@yyL z9lc0A*$%h1x1FHm)N4rJ4xhT$&F*%)``z$1Hg`f)iNwfMnv^6N=CAx!kXLs<~Rq6R9^0um>Z?x8i9z=A3}776n*GMPdd^;36c_u zlzao-_&GS5NcE~){p#d^$50le4X8)`=U3UH*vC%xvOB{X@(@GM2hfVIgWZg9kGtIG OZi`>2ogM=S0RTJMjz01L diff --git a/reference/blue_/index.html b/reference/blue_/index.html deleted file mode 100644 index fac41bb..0000000 --- a/reference/blue_/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: withcc -title: blue() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    blue()

    Examples
    example pic
    noStroke();
    -
    -color c = color(0, 126, 255);
    -
    -fill(c);
    -
    -rect(15, 20, 35, 60);
    -
    -float value = blue(c);  // Sets "value" to "255"
    -
    -fill(value);
    -
    -rect(50, 20, 35, 60);
    DescriptionExtracts the blue value from a color, scaled to match current colorMode(). This value is always returned as a float so be careful not to assign it to an int value.

    The blue() function is easy to use and undestand, but is slower than another technique. To achieve the same results when working in colorMode(RGB, 255), but with greater speed, use a bit mask to remove the other color components. For example, the following two lines of code are equivalent:
    float r1 = blue(myColor);
    float r2 = myColor & 0xFF;
    Syntax
    blue(color)
    Parameters - - - - - - - - - -
    colorany value of the color datatype
    UsageWeb & Application
    Related - - red()
    - - green()
    - - alpha()
    - - hue()
    - - saturation()
    - - brightness()
    - -
    - diff --git a/reference/boolean.gif b/reference/boolean.gif deleted file mode 100644 index df7a981d1cd9d79fc70688b00ee8beb46059c637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2565 zcmV+g3i|a&Nk%w1VT1sL0K@FI-mgZldV^78V!y1L29 z$#Zja;^N}7v$Mj&!mO;UXJ=>T=H}Vi*#H0lo12@8ii+&)?D+Wje0+S;($f9?{q*$o z_V)Jg@9+Qr|Nj2|A^8LV00000EC2ui0E7U9000I5AdrnDDV%7ku59bRa4gGZEdqEh znse{}z@X2j!;MlBfn>>SI-k&}bV{vSuT53ymP0ZF5^!KlE}PHjw0g~MyVqf7YTH#V z(Ts6Eu=wzdnPjQM-4V#)9r^nE{Qds_00RmfNRVJSWbiPJL7~dnJq!8} zNSsKqqQ#3CGiuz(v13Pl;1DWY7;FRsZ{YI(P29k;rOTHvW6GRKv!>0PH7Di^nUG}3 zlLb<)+`yrz(W6L{DqYI7sne%WowC#!vcO1f8SDk^Adw}93t+>F9ZR;X*|TWVs$IL5 z!&C$v+*#X$)gDByEWsYw%eSxJzkmY^9!$8fVZ&gj?wq?Pm0hj~Ht0P}xw7TUnExi0 z7?&~05kVnF{>oQ_Y10Z)t6t5zwd>cgW6PdR8}^??f;IJ@iRGed8pzYhc#KAgGt@8H9KSN$A!XX;=kT_>$w!v_!WJ&2!AzrJ_! zx1*om9c+De_wU7L-+%-bm|A)IO~;@Ab)sRn7l84}SKx#cj;8>Exy|*9dJVD%p@0>J zC}MF3=9eLQ+W7aNa1oB^qKhS(r{ISDb@(5PAik*MgfS+lVR|*<A5F{e#)sOood==D51wasso%Ta=2)db%qJ)a*|HU zr;Kr0iYB8u4%q3Yr{+NEl5=9(D1oWA87mH}VhN~|70zm;t^m~fXRCqQ8Ri7U7HjOW z$R?}ovd4nwtD>X2TI#S7R%`A5wb*8hEwRpi>SLurMjLF16L?Urw&aCKt z0*h;|@SUsfz4xBm?z5sgD6OCq+G{Vq1Yav~w}_Srt-s^a8{fbMM?CPp?gZZJF~Vm+iW4o z;OdO=t6^pv^vp}I3~JH0@*FVGKUcf7(Dzl`vdBlnZ0fpI*Sqe`PqTVy!##uj^VRi| z{jJ&Jl00>~Y*S6Q+wlH+w%ke6+;P5mTg>�Qc>8%J@3{cD#E_ZTR7k(;WELMiVY< z%!t!nu;O_y+;!oYXRfsW#FOV7HPWGrZf)HLmkzbOj;F5r#vQv3_s*z)jk3o~+s=60 zvFpA&?YsM~H}JVTS~a`N8}GU0jIe|x)F9mjd$Yl6xIqN0=`KBb4Z`5ENd;+6z?s-YW-+OF%xrqonG+B|IFmq5C783E=sc%7)5%VAhVz==TxJ5c zIm-ejzybHnCqDP7&wldrpTrV^KvzI4e;O2@2}o!HG+;er+Ebwrji^K?3Q=ZR^r9F& z7DYFjP(Bk825TJ@?}&1zOBpw+H=^{ZeFD_6rB z)v0oltYSs0TGxu!v38XJ4ptYG=-*SOx5uGq8d zVE@|J#X9z}kZmkr5&J_Ad;qd}l`LjA%h}BOl>!8y0A=Ur0ScJ*w5Uz3YA2xD*1Gn! zu#K&3QOnxbj#i1YZEbCH%iG@iHnqD|?QJbL016cMxW-K`a+j;z<}&xW&W$c~rz_p+ zK6e2B*d1;GvCG}=diT5F4X=2|OWyLDcf8u=-+9-|-uAkey%iWheA64O3fT9)_|30= z_sie@`uD#84sd_z>m&gi_`nEGu!0Rh;5r$g0uPQbgeNTF3RC#P7S1q+H>}|fbNIs< zHh_p593c^#_{1nqv5HsB;ugF3#V~F$iQ)4B17N_$IKHutbIju%`?$wI{;`mQOynUO zxyUny4+fUZLO=v*lxzLDCw4xWyXt2ogqk+=@ z0HY^O=}IFS0tNe3DdC7w5(%I>si~n z*0{d4u5-=nUHh8Xo!&I6hfVBa8~fNCeQ78+3mCR?n|o%$(ZF8BUC;K^>D=&+ce=2xZu$ZUgZR$3zW2@Ve*4=r>#p{h zB9oo=+}qy>Pq@Mt4#Cs#1v=8HVXF-O?TTCc;uuHa!(~(^hCIeM1<#DgM^19fY$iii z+06(ZgBQt!yyP&CIm{EIpZ(;aF86?pSJ=Yyp8NdgKp%@+qJ#3HWq<(>flOqAh(g4s zJN@ZUZ~9wuqo4&H9VK@e$`iNF^{#vUi8_hPbb4WRhlC~~Sxmdy*Ut8}gG4T5$C62m zp%r|H@$PufyWaDD5NnX#>fE6FH|$9G!W;hZ=y=E9 - - - - Name - -

    boolean

    - - - - - - - - Examples - - - -
    example pic
    boolean a = false; 
    -
    -if (!a) { 
    -
    -  rect(30, 20, 50, 50); 
    -
    -} 
    -
    -a = true; 
    -
    -if (a) { 
    -
    -  line(20, 10, 90, 80); 
    -
    -  line(20, 80, 90, 10); 
    -
    -}
    - - - - - - - - Description - - Datatype for the Boolean values true and false. It is common to use boolean values with control statements to determine the flow of a program. The first time a variable is written, it must be declared with a statement expressing its datatype. - - - - - - - - - - Syntax - -
    boolean var
    -
    -boolean var = booleanvalue
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - -
    varvariable name referencing the value
    booleanvaluetrue or false
    - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - - - true - -
    false
    - - - - - - - diff --git a/reference/boolean_/index.html b/reference/boolean_/index.html deleted file mode 100644 index 119027c..0000000 --- a/reference/boolean_/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: withcc -title: boolean() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    boolean()

    Examples
    String s = "true";
    -
    -boolean b = boolean(s);
    -
    -if (b) {
    -
    -  println("The boolean is true");
    -
    -} else {
    -
    -  println("The boolean is false");
    -
    -}
    DescriptionConverts a primitive datatype, string, or array to its boolean representation. The number 0 evaluates to false and all other numbers evaluate to true.
    Syntax
    boolean(val)
    Parameters - - - - - - - - - -
    valString, String[]
    Returnsboolean
    UsageWeb & Application
    Relatedboolean
    \ No newline at end of file diff --git a/reference/box_.gif b/reference/box_.gif deleted file mode 100644 index 8148af35dc6cc1a04708c02a132e532d3210f44d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451 zcmV;!0X+UkNk%w1VPpVg0FeLy|NsBY%*+4)00000EC2ui0Av7U00092jE||y?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQ*2>wt(0RT`G4naob@p()xHNj^S zicJcplWPz&oU07|+-J6}f9o>EYn+~)tUhS?T{l%_3 zpHlC1Uz$$@FVMJuC-w~+2+ox^bP4esl-F>f9fa2u_Txm*gh7d%_#$4M_N}5rj{ZEx zJIPQa$z~zT9s5{IB}{%T)tN)t&ZNMZjC4-qSxhEQJ*!f>R3!@+t)NGf*4al?TE-H& zMz+&bNRrfXrrt~~NDQhgNMDIOcDyT07 tvTFoy2y8g9;>C;`JAMo~vgFB>D_g#dIkV=?oI88|3_7&v(NhWl06S;-*wFw0 diff --git a/reference/box_/index.html b/reference/box_/index.html deleted file mode 100644 index 518d70c..0000000 --- a/reference/box_/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: withcc -title: box() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    box()

    Examples
    example pic
    translate(58, 48, 0); 
    -rotateY(0.5);
    -box(40);
    example pic
    translate(58, 48, 0); 
    -rotateY(0.5);
    -box(40, 20, 50);
    -
    DescriptionA box is an extruded rectangle. A box with equal dimension on all sides is a cube.
    Syntax
    box(size)

    -
    box(width,height,depth)
    Parameters - - - - - - - - - - - - - - - - -
    sizeint or float: dimension of the box in all dimensions, creates a cube
    widthint or float: dimension of the box in the x-dimension
    heightint or float: dimension of the box in the y-dimension
    depthint or float: dimension of the box in the z-dimension
    ReturnsNone
    UsageWeb & Application
    Relatedsphere()
    diff --git a/reference/box_2.gif b/reference/box_2.gif deleted file mode 100644 index e9f1b31cdf6acc3b0f63288c939ecc7d78c4ed47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmV-e0jK^)Nk%w1VPpVg0FeLy|NsBY%*+4)00000EC2ui0Av7U00092jE||y?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr^9hYgmx5|_ z8nFTdfUfl`z#6JuZ~1%%Td8C;7Y&cAuRm>kd(Z3VT$+8a7bxiU<}2R`!();Gmo(_vKt1?OvB_^cEkt9o+ qJc%-;%9Sizx_k*Urp%c%YudbtGpEj-JbU{52{fqCp+ut;0028n2CGm2 diff --git a/reference/break/index.html b/reference/break/index.html deleted file mode 100644 index 7477863..0000000 --- a/reference/break/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: withcc -title: break | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    break

    Examples
    char letter = 'B';
    -
    -
    -
    -switch(letter) {
    -
    -  case 'A': 
    -
    -    println("Alpha");  // Does not execute
    -
    -    break;
    -
    -  case 'B': 
    -
    -    println("Bravo");  // Prints "Bravo"
    -
    -    break;
    -
    -  default:
    -
    -    println("Zulu");   // Does not execute
    -
    -    break;
    -
    -}
    DescriptionEnds the execution of a structure such as switch(), for(), or while() and jumps to the next statement after.
    UsageWeb & Application
    Relatedswitch()
    - - for
    - - while
    - diff --git a/reference/brightness_.gif b/reference/brightness_.gif deleted file mode 100644 index 055c20fbe4c90e8326e2d59a9c71d0914dff7f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VPpVg0FeLy|AB%3|NqR)%m4rYEC2ui0Av7U00092l#i*)?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`ySqVb4KDwTnz^9hYgrJ|+v zx}0ja(<=6h<%-2#usJzScSGm)Q4N2V-RHP{P6ylL_8TmX=_ncndU;AkTKcvMl`07v+v?g$>m=Klt807P+q8=q z956gseC(I}>&k3-i}d^vEgh_!H| - - Name -

    brightness()

    - - - - - - Examples -
    example pic
    noStroke();
    -colorMode(HSB, 255);
    -color c = color(0, 126, 255);
    -fill(c);
    -rect(15, 20, 35, 60);
    -float value = brightness(c);  // Sets "value" to "255"
    -fill(value);
    -rect(50, 20, 35, 60);
    - - - - Description - -

    Extracts the brightness value from a color.

    - - - - Syntax - -
    brightness(color)
    - - - - Parameters - - - - - - - -
    colorany value of the color datatype
    - - - - Returns - float - - - Usage - Web & Application - - - - - Related - red()
    - green()
    - blue()
    - hue()
    - saturation()
    - - diff --git a/reference/byte/index.html b/reference/byte/index.html deleted file mode 100644 index 3b87bd4..0000000 --- a/reference/byte/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: withcc -title: byte | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    byte

    Examples
    byte a;         // Declare variable "a" of type byte
    -
    -a = 23;         // Assign "a" the value 23
    -
    -byte b = -128;  // Declare variable "b" and assign it the value -128
    -
    -byte c = a + b; // Declare variable "c" and assign it the sum of "a" and "b"
    DescriptionDatatype for bytes, 8 bits of information storing numerical values from 127 to -128. Bytes are a convenient datatype for sending information to and from the serial port and for representing letters in a simpler format than the char datatype. The first time a variable is written, it must be declared with a statement expressing its datatype. Subsequent uses of this variable must not reference the datatype because Processing will think the variable is being declared again.
    Syntax
    byte var
    -
    -byte var = value
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    varvariable name referencing the value
    valuea number between 127 to -128
    UsageWeb & Application
    Relatedint - -
    float - -
    boolean
    - diff --git a/reference/byte_/index.html b/reference/byte_/index.html deleted file mode 100644 index b704367..0000000 --- a/reference/byte_/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: withcc -title: byte() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    byte()

    Examples
    char c = 'E';
    -
    -b = byte(c);
    -
    -println(c + " : " + b);  // Prints "E : 69"
    -
    -
    -
    -int i = 130;
    -
    -b = byte(i);
    -
    -println(i + " : " + b);  // Prints "130 : -126"
    DescriptionConverts a primitive datatype or array to its byte representation. A byte can only be a whole number between -128 and 127, therefore when a number outside this range is converted, its value wraps to the corresponding byte representation.
    Syntax
    byte(val)
    Parameters - - - - - - - - - -
    valint, char, int[], char[]
    Returnsbyte
    UsageWeb & Application
    Relatedbyte
    - - int()
    - diff --git a/reference/camera_/index.html b/reference/camera_/index.html deleted file mode 100644 index c38379b..0000000 --- a/reference/camera_/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: withcc -title: camera() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    camera()

    Examples
    example pic
    size(100, 100, P3D);
    -noFill();
    -background(204);
    -camera(70.0, 35.0, 120.0, 50.0, 50.0, 0.0, 
    -       0.0, 1.0, 0.0);
    -translate(50, 50, 0);
    -rotateX(-PI/6);
    -rotateY(PI/3);
    -box(45);
    Description

    Sets the position of the camera through setting the eye position, the center of the scene, and which axis is facing upward. - Moving the eye position and the direction it is pointing (the center of the scene) allows the images to be seen from different angles. - The version without any parameters sets the camera to the default position, pointing to the center of the display window with the Y axis as up. - The default values are camera(width/2.0, height/2.0, (height/2.0) / tan(PI*60.0 / 360.0), width/2.0, height/2.0, 0, 0, 1, 0). - This function is similar to gluLookAt() in OpenGL, but it first clears the current camera settings.

    Syntax
    camera()
    -
    camera(eyeX, eyeY, eyeZ,centerX, centerY, centerZ,upX, upY, upZ)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    eyeXfloat: x coordinate for the eye
    eyeYfloat: y coordinate for the eye
    eyeZfloat: z coordinate for the eye
    centerXfloat: x coordinate for the center of the scene
    centerYfloat: y coordinate for the center of the scene
    centerZfloat: z coordinate for the center of the scene
    upXfloat: usually 0.0, 1.0, or -1.0
    upYfloat: usually 0.0, 1.0, or -1.0
    upZfloat: usually 0.0, 1.0, or -1.0
    ReturnsNone
    UsageWeb & Application
    Relatedcamera()
    - beginCamera_()
    - endCamera_()
    - frustum()
    -
    diff --git a/reference/case/index.html b/reference/case/index.html deleted file mode 100644 index cbf49f2..0000000 --- a/reference/case/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -layout: withcc -title: case | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    case

    Examples
    char letter = 'B';
    -
    -
    -
    -switch(letter) {
    -
    -  case 'A': 
    -
    -    println("Alpha");  // Does not execute
    -
    -    break;
    -
    -  case 'B': 
    -
    -    println("Bravo");  // Prints "Bravo"
    -
    -    break;
    -
    -  default:
    -
    -    println("Zulu");   // Does not execute
    -
    -    break;
    -
    -}
    DescriptionDenotes the different labels to be evaluated with the parameter in the switch() structure.
    Syntax
    case label: statements
    Parameters - - - - - - - - - - - - - - - - - - - -
    labelbyte, char, or int
    statementsone or more valid statements
    UsageWeb & Application
    Relatedswitch()
    - - default
    - - break
    - diff --git a/reference/ceil_/index.html b/reference/ceil_/index.html deleted file mode 100644 index 013db02..0000000 --- a/reference/ceil_/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: withcc -title: ceil() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    ceil()

    Examples
    float x = 8.22;  
    -
    -int a = ceil(x);  // Set "a" to 9
    DescriptionCalculates the closest int value that is greater than or equal to the value of the parameter. For example, ceil(9.03) returns the value 10.
    Syntax
    ceil(value)
    Parameters - - - - - - - - - - - -
    valuefloat
    UsageWeb & Application
    Relatedfloor()
    - - round()
    - diff --git a/reference/char/index.html b/reference/char/index.html deleted file mode 100644 index ca77ff2..0000000 --- a/reference/char/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -layout: withcc -title: char | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    char

    Examples
    char m;      // Declare variable "m" of type char
    -
    -m = 'A';     // Assign "m" the value "A"
    -
    -int n = '&'; // Declare variable "n" and assign it the value "&"
    DescriptionDatatype for characters, typographic symbols such as A, d, and $. A char stores letters and symbols in the Unicode format, a coding system developed to support a variety of world languages. Each char is two bytes (16 bits) in length and is distinguished by surrounding it with single quotes. Character escapes may also stored as a char. For example, the representation for the "delete" key is '377'. The first time a variable is written, it must be declared with a statement expressing its datatype. Subsequent uses of this variable must not reference the datatype because Processing will think the variable is being declared again.
    Syntax
    char var
    -
    -char var = value
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    varvariable name referencing the value
    valueany character
    UsageWeb & Application
    RelatedString
    - - - diff --git a/reference/char_/index.html b/reference/char_/index.html deleted file mode 100644 index 61c69bd..0000000 --- a/reference/char_/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -layout: withcc -title: char() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    char()

    Examples
    int i = 65;
    -
    -char c = char(i);
    -
    -println(i + " : " + c);  // Prints "65 : A"
    -
    -
    -
    -byte b = 65;
    -
    -char c = char(b);
    -
    -println(b + " : " + c);  // Prints "65 : 65"
    DescriptionConverts a primitive datatype or array to a numeric character representation.
    Syntax
    char(val)
    Parameters - - - - - - - - - -
    valint, byte, int[], byte[]
    Returnschar
    UsageWeb & Application
    Relatedchar
    - - int()
    - - float()
    - - byte()
    - - - diff --git a/reference/class/index.html b/reference/class/index.html deleted file mode 100644 index 15f2855..0000000 --- a/reference/class/index.html +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: withcc -title: class | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    class

    Examples
    // Declare and contruct two objects (h1, h2) from the class HLine 
    -
    -HLine h1 = new HLine(20, 2.0); 
    -
    -HLine h2 = new HLine(50, 2.5); 
    -
    - 
    -
    -void setup() 
    -
    -{
    -
    -  size(200, 200);
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw() { 
    -
    -  background(204);
    -
    -  h1.update(); 
    -
    -  h2.update();  
    -
    -} 
    -
    - 
    -
    -class HLine { 
    -
    -  float ypos, speed; 
    -
    -  HLine (float y, float s) {  
    -
    -    ypos = y; 
    -
    -    speed = s; 
    -
    -  } 
    -
    -  void update() { 
    -
    -    ypos += speed; 
    -
    -    if (ypos > height) { 
    -
    -      ypos = 0; 
    -
    -    } 
    -
    -    line(0, ypos, width, ypos); 
    -
    -  } 
    -
    -}
    DescriptionKeyword used to indicate the declaration of a class. A class is a composite of data and methods (functions) which may be instantiated as objects. The first letter of a class name is usually uppercase to separate it from other kinds of variables. A related tutorial on Object-Oriented Programming is hosted from the Sun website.
    Syntax
    class ClassName {
    -
    -  statements
    -
    -}
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    ClassNameAny valid variable name
    statementsany valid statements
    UsageWeb & Application
    RelatedObject
    - - - diff --git a/reference/color datatype/index.html b/reference/color datatype/index.html deleted file mode 100644 index 640623c..0000000 --- a/reference/color datatype/index.html +++ /dev/null @@ -1,158 +0,0 @@ ---- -layout: withcc -title: color | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    color

    Examples
    example pic
    color c1 = color(204, 153, 0);
    -
    -color c2 = #FFCC00;
    -
    -noStroke();
    -
    -fill(c1);
    -
    -rect(0, 0, 25, 100);
    -
    -fill(c2);
    -
    -rect(25, 0, 25, 100);
    -
    -color c3 = get(10, 50);
    -
    -fill(c3);
    -
    -rect(50, 0, 50, 100);
    DescriptionDatatype for storing color values. Colors may be assigned with get() and color() or they may be specified directly using hexadecimal notation such as #FFCC00 or 0xFFFFCCOO. - - - -

    - -Using print() or println() on a color will produce strange results (usually negative numbers) because of the way colors are stored in memory. A better method is to use the hex() function to format the color data, or use the red(), green(), and blue() functions to get individual values and print those. The hue(), saturation(), and brightness() functions work in a similar fashion. To extract red, green, and blue values more quickly (for instance when analyzing an image or a frame of video), use bit shifting. - - - -

    - -Values can also be created using web color notation. For example, "color c = #006699". - -

    - -Web color notation only works for opaque colors. To define a color with an alpha value, you can either use the color() function, or use hexadecimal notation. For hex notation, prefix the values with "0x", for instance "color c = 0xCC006699". In that example, CC (the hex value of 204) is the alpha value, and the remainder is identical to a web color. Note the alpha value is first in the hexadecimal notation (but last when used with the color() function, or functions like fill() and stroke()). - -

    - -From a technical standpoint, colors are 32 bits of information ordered as AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB where the A's contain the alpha value, the R's are the red value, G's are green, and B's are blue. Each component is 8 bits (a number between 0 and 255). These values can be manipulated with bit shifting.
    Syntax
    color var
    -
    -color var = colorvalue
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    varvariable name referencing the value
    colorvalueany color value
    UsageWeb & Application
    RelatedcolorMode()
    - - color()
    - - hex()
    - - red()
    - - green()
    - - blue()
    - - - diff --git a/reference/color.gif b/reference/color.gif deleted file mode 100644 index 83b304ab7cbd629c2379c95c3b0ef36529d19983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2484 zcmV;l2}|}zNk%w1VT1sL0K@E`C0PICJXU$x~-W zfG2T@im1$-OPD>ADqYI7Y0aNOQxYZdz+VT9GBs%3%C)Q4uVBN99ZR-sS(z9+*z2b9 zL{*DdV`^1Ex31m0c=PJr%eSxJzkjvHi~y7^p=58bMi4L;u;a&&BTL3BIITUQQymq>e65*rSD6uC^tYPlK|r@bH^(;1`P5K+DZ4^cHKaa-F3KZ)2+4Le#h-KvSt^JcGa`y9eCnyFMhYxhcC=$ z-_(*_^W|?Bj96~^K>@etj{EMq_r811 znt#1FeZCjZ`|-I0-@3ZO3l84~&_^%*^wdkQyy>oQu3`1ucfY~)pI82IecqREed*!T zuDylkw-5g8**Bj$@eFKG|NZvokN^Jpzu!3M>pKwt2B^OR-p_y6QlI=pXCMYR@PQDF zpada^KybwmaSRmD1UJY*22>DgdUIZRI!Hnaq7Qz|!yt!N_yHEWu!S&mApQ&K?}Ng9EpP&%LE;CL$iyT%afvOQ00wSI#Tiy{idM`b2Ak)K)wb}u!0xNU!}geOel1tYk^6mGx;G|b@*d$_|O z{xF6|OyUTmG=Udfn1Kn9U>2{q#V~#`1f0uS2)NkBF~+fsbfWGQ z%dpP1u6NDrUi7ckj;?fSbw@vPH+vRC9OAJ;TGnsa~``wYL43S8d7#Cd|-uTXUzOlTf!>pt#5W)^) zXie~f8~os4LCc3g^zXM^2P;mAxWp&k6sTN=WD_w8T#!QXj(fc0KecYn9P{q4+W z?Xj8xb9L~?!2p5*h{qpbeG1T^jJTBD00K4u09QOT3hYPP^d=nmltiOT-fJUWK zZK*U{TN-LN#|~vNXfy_k>*&aGbmVdzFx(tC9G;WFiN_I%TwFvVsYD`?`pp_dx3i<$ z)0y`6Ow68Pk6}y{Wnz2`V__KIc^(J1dCm)j0)ardz}3~++0|7n_7aO{@qX4OfKqWH z2M}l>fKdoRA?ppG0RRCA1VK2_*M``@Br-&yLNl2+QR0i(KzND?U>Lx*2!fDaCt(Qj zc0?T(uFU<`V#Cp|Be#$!@5N#&5lfbU64eNqjLdd`Uy`yOW!?JlPS%|)nD##$WP^`p&!4;{+T;B{16j>< zc3D9=SgeZ)MW-FRvV&s4{wM{v$~#15ayGW_vLpNyZk31e(pAzqnu4p#R~j0RcgN^f zXmVL(H@lr47gSwjH=6RMhw4PBQz0j4Uu*8r z>2-r)tHvuB-H*!TKVDNG?EJg`h+v95#aLF^p`9ay_gr+%2aNWV2m{f98htzEqO#ne zRh1i7Y)jDfc;Nre$4Pk@FJC2{k7L*3MWkiN!`~*C4-1l|wFdej1<_;J;C66Ba4sTi%B)<+_CyB^!ap+7YCZs8rc_wSw*@RSYxXpN)oZdEff-}LNgliRh_oZ{XT;1}V{(Rs>Ut5J=2d8S=_x_Y^ zU;ggC_d#j%Xc|AE=%}0U33viu5+<%Eq1pZsSTLZp5W?b;pQ1>zH{_UV^N6ubvy&Y09=ULMbSg9Q@-@@mjXv@W{dD{3!LuWo zmYNA;M{wgyon&ugD6t6kQJycp1KXjd3NH}gQ-iQ#RyK6)Y_IQ>D&tCGR9f3`?gfv^ z$hQws#35Nr4VUD}>f786jCI+?%um^6hKk!GJ)`9dhbM-&; z{j>SbMA*38RQT+#w&`}=VAaSPI%`we<~8b@w*%Lz{Kx2Ho>(fu!led2+ytgH4Tc@E zSWPSGhPfNoZP)aFH4qwe1->Q9Tc}@JulYcnN9QM?#i_~!cCqYGZETG;JwA$ED*G-p z_E<#nFmEo~P#KzpMX1@_jKciFw!VV%{AVL2L%g;QwHfy(?e6>XI;7?B`ezN?omt_!TV&evL&CkFg>Yv@pcOK&4TtjC7uF6Y#i(n-Nu#qb2;)hat{e&Ijx zg95 diff --git a/reference/colorMode_/index.html b/reference/colorMode_/index.html deleted file mode 100644 index 6c8303e..0000000 --- a/reference/colorMode_/index.html +++ /dev/null @@ -1,186 +0,0 @@ ---- -layout: withcc -title: colorMode() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    colorMode()

    Examples
    example pic
    noStroke();
    -
    -colorMode(RGB, 100);
    -
    -for(int i=0; i<100; i++) {
    -
    -  for(int j=0; j<100; j++) {
    -
    -    stroke(i, j, 0);
    -
    -    point(i, j);
    -
    -  }
    -
    -}
    example pic
    noStroke();
    -
    -colorMode(HSB, 100);
    -
    -for(int i=0; i<100; i++) {
    -
    -  for(int j=0; j<100; j++) {
    -
    -    stroke(i, j, 100);
    -
    -    point(i, j);
    -
    -  }
    -
    -}
    DescriptionChanges the way Processing interprets color data. By default, fill(), stroke(), and background() colors are set by values between 0 and 255 using the RGB color model. It is possible to change the numerical range used for specifying colors and to switch color systems. For example, calling colorMode(RGB, 1.0) will specify that values are specified between 0 and 1. The limits for defining colors are altered by setting the parameters range1, range2, range3, and range 4.
    Syntax
    colorMode(mode);
    -
    -colorMode(mode, range);
    -
    -colorMode(mode, range1, range2, range3);
    -
    -colorMode(mode, range1, range2, range3, range4);
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    modeEither RGB or HSB, corresponding to Red/Green/Blue and Hue/Saturation/Brightness
    rangeint or float: range for all color elements
    range1int or float: range for the red or hue depending on the current color mode
    range2int or float: range for the green or saturation depending on the current color mode
    range3int or float: range for the blue or brightness depending on the current color mode
    range4int or float: range for the alpha
    UsageWeb & Application
    Relatedbackground()
    - - fill()
    - - stroke()
    - diff --git a/reference/colorMode_2.jpg b/reference/colorMode_2.jpg deleted file mode 100644 index 998e37020b8d86d713e77b29344ce6fd98e79995..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1713 zcmai#X;9PG8ph8*f0iI5AtWJeQjjdD5JO^s$f|-6QJ^BCvM7qC5CKC-1X%8SUC^X6t zjW)!iF=#yA5Q{a$FUR8vc>Hp*8BrrMvXzacrKOFPtu2{sYs+BJ8H|7GUDRy=i_{p& zf}s@vfrVf!r0xXy03cupf;2w=mKFlm)`4^(u*Cm;0BdU@ARR*h!H^EDh1AymZv}*a zaad~yqZL{k6uOakg7@(bn-k?fSLkH6XK54nZHyuZV*x@V03+eQ8$wtFtYz(x`H-=m ze`CY(D|Ktnw&S$b!@xju1%ZXJzyqj82o-M(x=j;Tr?WGq1L!Z(sV%B8u;l?D>nDvp9vYZM+ zx7e!K*{;X9@St1Ikr3)vZ+6zKxNh}2Z2OeXwR`X4$saK>dQVyke1(hqV=8#gTw2P-7%JVH8V0vNppDF zV$OJ^6DIZNQ&;+p(wg;#N-STI&e-}G`IvoZc4*1Y6LviE-DOjQlWa_1cef{`AUK{f zq_yg;ebk9kW;(&<9=Tg=y@A6g#QlBc ztIgH7>L#+9K(I{mk+kPsLY<=27ADTJq}_{HK*hjvt#Me2Bh{%kICx z-}M^iQ&0VRuRQzg(+jLF`w+Tc!-j-goHEy<+`e~|gRi#u?OaWFiTFJvq=-x3m%ubPjaFh~T z*)LShS}#q>jVa-40@2q*vlsA-Idn(SnYP!C3FC3Gq-JEXqw+>`r(|2R9j@?=KPS#e z66Eff`swY90w1Zg`l#uY{bcp|8&|F(kL-8(c8cMYu+Pn|p}u>J^WDt4vG%!!mk~8T zndJnnxL*Ht(*dXO!)cV9B38jx(sHZ1t$f|hTSme-B5_vYu~-+Uqe|JYlAt0ri1u(w z)$EIL=T<)bebe)WlCpq_tl2i_wm0{qmt3wfhV?R_>G0D{=C_ioyx8Gc&&=s@F1{&l zbq$JQX5{oJ)wL_2tbRwbs zl@|1iC?XYax3mXy-YMKWzdAmqJinKp8#-J$DhNBN%*#p(m|r}{D&U>E8A&RgpcS>t zdw1JCnGx-Y@^DI5N~cku`?#|Ay%WpNr$-O?`(2N)%WM7OGnq48>hC{bgvZbYywgoBK6(!zST=b`iq4##2o=(X}%8+<>Az( zoIcXIFz*2q(H?DyJ9dU9Y4!N-Q{ZP=D7$N>`ty8<{MNjpzC_a6;QPyhc)=qFrvM6g zz(KY&-im-V9DqjC&Q*O=_O4n!pMLmp8f!;#;cbOP6pXlB%!_OkmKi&an8v=XpS3xA zB!H0GJwCnp(m?Q$?{}%#GH&21i)vT>Yia#G-czA-=Su>9JFW(gXDuc;1LOeatc9Y! zlAyb-P$u=fD9fBL6HGhHX1XFSBwZ?1l&q$52#c}Ysn4&E1+K!>q!zw?IG)G*@#Jku zx7eLO&uEq>^$!Rhm_MA1FA1HCOP*Pm8Td}cJ?1gol8cwir0s1~j`0K6P)!5zBk~@n zx%A|jWtoBD@`y2+J3RPG_+;_POF?V&!sXUOS5?0}PkEoH28{vsu4*v&CAN>(NB<*d z%Zq*SDG_~x0`7>h0)8L_7P(Az3>N@YWEB9cleGX0nzaFVC+}YfLF-#X+Y1ol>7{>X F=ub>l!KwfN diff --git a/reference/color_.gif b/reference/color_.gif deleted file mode 100644 index 68b5c5558c4a3aac69995d40e3faaad1a73dc7ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2358 zcmV-63CZ?HNk%w1VT1sL0K@L& zAA-xZ&Kc(C=;`X~?CtLF@bU5)&cl_jBA&L*=N0PICJX6dC_0V zTAm(e`aq7Q%MBcoDqYI7sne%Wqe`7hRqD&0KTmoa+JIjNi!V877)!RS*|TWVs$I*r zty{Mot~%&IZ(ATtB)U@k`f{v+zkmY^9!$8f;lqd%D^@)As!zLtUg`bnV1wVqm@{kM z%z1EQi*&bX1@LNtQKT9Gdsw}?hwIm{W6PdRySDAyxNB>OJNM_^l%^?LR=qla@!ZIh zD__nW!ROv~g&qrDS?u59#*a7O&b>Qs1G_gsAB~qf>gyh|8{fgcz5Dm@(3fPDlOXyAbb;uqfkc)v|YQFW;SDByqyR%qdc^(m+yJ^VSy*M9-3 zhvA4Mj;Nt{`!#5Re-Vb5U5PNpNZ^SKZsj3_*G(wnjy$?YV~RGe_~3aG3fSY3JpRa` ziY(@6B$7~;sAP0y^fx4kI!3AGg;RDYQ2_~P8KI&(rgJP+srFLTa zC60|63L^#&lxpg!sHUpws;sv90G@6x2&AB&5-KK)uI8%iuBk#0pQm#cN+FC8@M`R_ ztHRpDn>ErJ?5!kzfb6u>LJ-FPd%!X(tc=A{>+P=BVjJs*R4zJcsKb^h?YHc<>g#>u z!db4Qpl%D}2i>--FRJ1C7;m%Y)(b6(`xb1fweT)0Yn;w%JMe}08f>t#2rxTqz_xB$ zqQnIwEUv=jdikuz7)H#oz7$)`FvgnpiR;Pjdh9RA@`~&*$q?rYv$rWPJa49Hy1enu z-^vW=zZcV+vCt*!Of<4RhkWL__Qv?Mw??yC^Ct99EpbFFuUU-MnJ*faxNcF<=JZMd#$Cki;;OE=#1 z? zoV)V7o9{d8D!V6}qP8^>C#z@BhGMe#>XdEL51&~HFHgSj%Y@;0IC;$-7af}RjBg;z200s2%kA4g! zAO|T(KQf??YdoYO1$oFr>Tz-7YosJ6Ny$n|G6Ep9BqblYy$NaZlb{4)1R7a^NtUt# z72u@!(1prYy7HBomKdl21~7n2{$*#F$V{d(m&wdw z($av!Y-TcxIlur&^P1QMAqAv401OOZ0MsPnH^)iNa+;Hz-t6W81Wy7QgzjHf*3 zNzZx;;GEw~=QqO{L45l2p8yT0KnF@teDV{61@$Kc%(>8p4#1%heW*kuO3{g0w4w_Y zXhRQLLI`;O^rIjRsYpjk(vq6=q$maHLsR-uj*gF|Fpa59XG&8DxD;IifIv=ns?(nG z^rt=zYE6e~Ql17Cr~*i;0B$NQr8@PgP>rfor%KhTTJ@?{W$J{m%GIuV^{ZWtfB?j* zRRKldtY}TETGz_fwz~DLaE+^6-C9=l%=NB#&8uGbT7bG{rvMQEtY8C6*ufgMu!udZ zViU{Q#X7dJkX5WZ{c4V}w5UC;YE#SF)w;H| zuzjs(DL~uW+V-}%&8=>C%iG@i_P4v8EpUfR+~OM7xCij;0hY_$<~sMe(2cHir%T=H zT35RN9sna8F?ikXdiT5F4R3O_yT|c~_q^y$uXPhZSq~f_0q=!x0_02I_}X{A_pL8} z_p9Ij=J&t+1+aeuOkmH>_rM5Fu!0xN;08PR!4QtHgR=|0?Uqo&7|yVUH_T!7k{6Qb z>ad7MOkxR-rNZS6l?O`9;uf>mz%Gulj4|wh4|h^P9_WmYcg$nMoH#W$UZt=mMC2kH z`N&94vXYlvG?v{A8V>O%FTvrn zi)G5J=t^69F^xe{ivEBX3v`7#l|jv0MosEcoBGsciOZWq<2Fz0Wz3ss4d zDRSwJqgC{QmF(pxI|;V1hfVBazj-cn*)^{vVw$~BMkLUVwzQ{B?Vk9gE - - - - Name - -

    color()

    - - - - - - - - - - Examples - -
    example pic
    color c1 = color(102, 102, 0);
    -
    -fill(c1);
    -
    -noStroke();
    -
    -rect(30, 20, 55, 55);
    - - - - - - - - Description - - - - Creates colors for storing in variables of the color datatype. The parameters are interpreted as RGB or HSB values depending on the current colorMode(). The default mode is RGB values from 0 to 255 and therefore, the function call color(255, 204, 0) will return a bright yellow color. The color() function packs the information input through its parameters into a 32 bit number in the following order AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB where R is the red/hue value, G is green/saturation, and B is blue/brightness.

    Color can also be created using hexadecimal notation. For example, "color(0, 102, 153)" is equivalent to "color(#006699)" and "color(0x006699)". To create a color with an alpha value using hexadecimal notation, it's necessary to use the "0x" prefix, for example "color(0xCC006699)", which is equivalent to "color(0, 102, 153, 204)". Note the alpha value is first in the hexadecimal notation and last in the RGB notation. - - - - - - - - Syntax - -
    color(gray)
    -
    -color(gray, alpha)
    -
    -color(value1, value2, value3)
    -
    -color(value1, value2, value3, alpha)
    -
    -color(hex)
    -
    -color(hex, alpha)
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    grayint or float: number specifying value between white and black
    alphaint or float: relative to current color range
    value1int or float: red or hue values relative to the current color range
    value2int or float: green or saturation values relative to the current color range
    value3int or float: blue or brightness values relative to the current color range
    hexint: color value in hexadecimal notation (i.e. #FFCC00 or 0xFFCC00)
    - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - color datatype
    - - colorMode()
    - - - - - - - diff --git a/reference/comma/index.html b/reference/comma/index.html deleted file mode 100644 index 600f92a..0000000 --- a/reference/comma/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: withcc -title: ", (comma) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    , (comma)

    Examples
    // Comma used to separate a list of variable declarations
    -
    -int a=20, b=30, c=80;
    -
    -
    -
    -// Comma used to separate a list of values assigned to an array
    -
    -int[] d = { 20, 60, 80 };
    -
    -
    -
    -// Comma used to separate a list of parameters passed to a function
    -
    -line(a, b, c, b);
    -
    -line(d[0], d[1], d[2], d[1]);
    DescriptionSeparates parameters in function calls and elements during assignment.
    Syntax
    value1, ..., valueN
    Parameters - - - - - - - - - - - -
    value1, ..., valueNany int, float, byte, boolean, color, char, String
    UsageWeb & Application
    - - - diff --git a/reference/comment/index.html b/reference/comment/index.html deleted file mode 100644 index c8a9f98..0000000 --- a/reference/comment/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: withcc -title: // (comment) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    // (comment)

    Processing.js BehaviorProcessing.js's parser will fail when using // comments on the final line of a Processing.js script.
    Examples
    // Draws two lines which divides the window
    -
    -// into four quadrants
    -
    -line(0, 50, 100, 50);  // Draw the horizontal line
    -
    -line(50, 0, 50, 100);  // Draw the vertical line
    DescriptionExplanatory notes embedded within the code. Comments are used to remind yourself and to inform others about the details of the code. Single-line comments are signified with the two forward slash characters. Comments are ignored by the compiler.
    Syntax
    // comment
    Parameters - - - - - - - - - -
    commentany sequence of characters
    UsageWeb & Application
    Related/* */ (multiline comment) - -
    /** */ (doc comment)
    - - - diff --git a/reference/concat_/index.html b/reference/concat_/index.html deleted file mode 100644 index 2d32443..0000000 --- a/reference/concat_/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: withcc -title: concat() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    concat()

    Examples
    String[] sa1 = { "OH ", "NY ", "CA "};
    -String[] sa2 = { "KY ", "IN ", "MA "};
    -String[] sa3 = concat(sa1, sa2);
    -println(sa3);  // Prints OH, NY, CA, KY, IN, MA
    Description -

    Concatenates two arrays. For example, concatenating the array { 1, 2, 3 } and the array { 4, 5, 6 } yields { 1, 2, 3, 4, 5, 6 }. - Both parameters must be arrays of the same datatype.

    -

    When using an array of objects, the data returned from the function must be cast to the object array's data type. - For example: SomeClass[] items = (SomeClass[]) concat(array1, array2).

    Syntax
    concat(array1,array2)
    Parameters - - - - -
    array1, array2boolean[], byte[], char[], int[], float[], String[], or an array of objects
    ReturnsArray (the same datatype as the input)
    UsageWeb & Application
    Relatedsplice()
    diff --git a/reference/conditional/index.html b/reference/conditional/index.html deleted file mode 100644 index fe22854..0000000 --- a/reference/conditional/index.html +++ /dev/null @@ -1,160 +0,0 @@ ---- -layout: withcc -title: "?: (conditional) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    ?: (conditional)

    Examples
    int s = 0;
    -
    -for(int i = 5; i < 100; i += 5) {
    -
    -  s = (i < 50) ? 0 : 255;
    -
    -  stroke(s);
    -
    -  line(30, i, 80, i);
    -
    -}
    DescriptionA shortcut for writing an if and else structure. If the condition evaluates to true, expression1 is evaluated and returned. If the condition evaluates to false, expression2 is evaluated and returned. - - - -

    - -The following conditional:
    result = condition ? expression1 : expression2

    - -is equivalent to this structure:
    if (condition) {
    - - result = expression1
    - -} else {
    - - result = expression2
    - -}
    Syntax
    condition ? expression1 : expression2
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    conditionany valid expression which evaluates to true or false
    expression1any valid expression
    expression2any valid expression
    ReturnsVariable, dependent on the datatype of the expressions
    UsageWeb & Application
    Relatedif()
    - - else()
    - - - diff --git a/reference/constrain_/index.html b/reference/constrain_/index.html deleted file mode 100644 index 96a4786..0000000 --- a/reference/constrain_/index.html +++ /dev/null @@ -1,138 +0,0 @@ ---- -layout: withcc -title: constrain() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    constrain()

    Examples
    void draw() 
    -
    -{ 
    -
    -  background(204);
    -
    -  float mx = constrain(mouseX, 30, 70);
    -
    -  rect(mx-10, 40, 20, 20);
    -
    -}
    DescriptionConstrains a value to not exceed a maximum and minimum value.
    Syntax
    constrain(value, min, max)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    valueint or float: the value to constrain
    minint or float: minimum limit
    maxint or float: maximum limit
    Returnsfloat or int (depending on the input values)
    UsageWeb & Application
    Related - - max()
    - - min()
    - diff --git a/reference/continue/index.html b/reference/continue/index.html deleted file mode 100644 index 3d133da..0000000 --- a/reference/continue/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: withcc -title: continue | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    continue

    Examples
    for(int i = 0; i  100; i += 10) {
    -
    -  if (i == 70) {  // If i is 70,
    -
    -    continue;     // skip to the next iteration,
    -
    -  }               // therefore not drawing the line
    -
    -  line(i, 0, i, height);
    -
    -}
    DescriptionWhen run inside of a for() or while(), it skips the remainder of the block and starts the next iteration.
    Syntax
    continue
    UsageWeb & Application
    Relatedfor() - -
    while()
    - diff --git a/reference/copy_.jpg b/reference/copy_.jpg deleted file mode 100644 index e2ef0aa48d43941277cb3c6f8073a27cb530da54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11147 zcmb`tWmsHIvo1V1!Ce9b3-0d0A-LOM!QEYhySoRs!QI_8z~Jsqa1G&*=h=I|``7oK zAE)M;p1Z56yQ-_J*Xmwt-j?3B0BF(@QW5|NNC3e2{R4PA1E7n!7+HA$AOO$+008*T z+JO|35*5`~R929Xk`)I)KmY)c%)(+K;*e+nfQ_xQqq3w3iKZ5i1a2At3xIlW^-cyx zPWEyt5~_c(t(~pO-{1d5?|s}ayxVxEIflP|{V&=74MZ@qcXWPN{QdrAH8ycF0stVG z-?4?8v;8|CBI_Mv8Cv~=YyM(KRb|n4{=hp%G5Z&T|6;>`@!ntT_&$hto!h_qX8&MF z_`lfjUrhKHJDa%wwF?lnv-fbcFf(^1Vd3H7ArUsVGc+Ml@o;iBv2h}ivNf`Ew6}9K za5j05Dd1oK{Gj_P`3@i<-^=&nUxI>!dZ+gS z`Y%Dj{6lbm3I2cRZ|iq$7$_(hI2dS{|0Ve!mH%(>)(1d`|GOHXAkYDj=nzoo5N`v2 z6AcpTAJ6_fhOltZFz_EBq5dui$iK4x761TH(2y_?uy6qQ_XPqA@m_;~hWall1SAwR z3_1oTEGZT?92yymFgXtVXLell_a*o~qJR8_`>Xn{2SCSwCS}2d5hlY@GGN7a@b49Y zjjx?iCTC;6%rguSRr!pAMzVe7m|ss(=Tso3ItYjHPcM*g@23CT96A~)3nYm!2APl& zvw=fi?+mMdyoe(vdF{4xK*B5(=3n3cdI+@~O!{l1Ee9&t|;8Fu1#EnSAg{PfvI(LwwSlpDd7S#%!R$2MJX z>_rJWHQ`cClX%7yY@$U-*6VZ@dvZuvHiuJi{is*sAwxapUd$x6$YNfh=IUX1nrPZT zV!JLg2RzVg|VmpNF9(1g?U@dotiKJ+hp=Jl&(O48P;1V?Ror9sp z*TrxcugTQj9_D4o=V8`tx_GH4GH7%l_s3T<7d%gk7~GSvpDE>@6&g+4l+d_71zL^T&Q@-2==g4*^h%0K zzw50`8!3=&mSei7f>lB$7}4*>qBCb2c4y%0R#e5ESsK->e-7VCkF8lPCaDX5W`)%> z<6;_&aQ!g9p^+wN+TEmk3Z2KyQeK0XoNU41WXfSZ%L>5 zP&G;U@@%EK{`&;Ozo#z*45U%kSUo6n)L>CjA2>hln(>Fsl7Hu{%m`#TE9qglE;T4( z(8o!TCGW~coA>p$nZln^Y_k0gKy~Vw>_i~(sx@Lb@&#tXuvZf8@J{Ww+oW*J>YdlV z%_@(UZ942+6=n6P>(OnbgWaplNWxvT-BqFO8$b`N`wS^dMK&2Ehp{F+TobZMnNvO} zmg?9V9o{rcd(mC>fRoT-5}6fJ^=okOkKL>Hv1#IwU;N~+k7bRZ;DHSX4jn@}SC{yM zj$cF>MO?$=W{acYz%KXV70FlF@xH4I4bk38r3=k)YQ3GRWL>7!By4dv1BEjl)%ZQJ zq+Qd(?@4}VtL$aVRj~?HgfXJ$@&csl*|FH?m8U=UT$>wl?16>r3Mlv5G5DT7$&G{B zZsj@8l3w=*?V)<57m~&1iTV?7fSOpE$efFtVeKkmN7q7N9qj?Wq9Z;wSJ>VCgtSB! zgVOxVFPuV|XYTbt`dI1J!T8DVb*=>7fq%a01}EX0XMW1CXjsH>)GXU-xR7eBF5gw) zvR=mDU`|lG7hbvuOzDkPyT((^s$SEeYd;j6)H>sD(1PEMFW++vcARYKSPsw)B^QGp zCsWkc5@y}9fR!@Er*>E=l&*~zCBr+%-u(P9KUDDzt2{X45tS zY5>c!BHOZmF0;)ixQ~zDt730NE+I5&bx_$atig3a7bi_VQgiAfU|G>?ibgF;RAQC5 z&d4!tmH%wJ7@Dub{UqVMsuTKiFnP@=YOMiAqpcrh24pj0ErEFq_Pf{<8%YQ>kx_Np z@Rq!3r`T_zc+iT>*@zvt<2h{q`Z$9)fNodyxp_jQuCyx>Km1nuLlUgyN>)6i6MUv3O;79s=`x7Tud{qVtkA)WE8fGCHe@=%A!fFcgp{~pB}l6^nf}g3s7PGQ zC{Zne=hh|AgEC9dQN!CokH(noB!7Ye&KahDSU#H0`KiM638QBGvc;N{Lt(4X%TT1>0NF@VVnC`?jn3{Jxt|86B0t8)Q_h&gJZgteA z&mo>x8r(3V$Q7c_T-##A8)y>f)0D)gE|SAfBgL|c5o(;Pi|WkVh&Kx#g)vkJT_-Bz zx9$X;56&Nn#5ORCU%Qj-o4U_ki^*0cu!D^$kb=2?arC#GE)HFN~&X-`j##RqTUB;PlnzEI4k3 z{$mXn7KbtVp7igy5iZy|*nG5x6OY^I``#8-A+WH4J3b5en@xZ@MU4$!@1Y$j1O5+d zPBdI1aubp`KV$t56d$17>7%7T2rU>RPXzwNT1L)YeP3L#0kFEN$>w%}GRt z4^~ z)gJe6fR)>`wr$_a2mNLawMkMP40H+we(Zow_Q%4H$S@2~-s+5(c|~2s)GRD11!StK zt#}fzU+BWsJcvR{nkvuezKDCHj!s6Dy-2pY(0cL-vVsI*&bnfsP%7d{2e)A)+daCHD1(Nh1gU%Wvdu(vD|eSgRjzz z(rjB)|3(M`;$80uEziouxKsL0V8+~fK53d+RnX|$NV|t6$kAdDL08&CS%p4@&ynAt za&`M9d|79bi&I+sqY3oq+?Z>3@fF*yd7S;Bad8!R8z~KJ6WaWtzDl{qgp?AVRuZaI&&D8`(trB_DLEnODWMzoSNuiOE4;LvrH-%#Y$2mC=Q&+gcPC(T-*F9UHQYD zv~|Y$HkefpLpkhx3bUo&p4Uq~Au=7D&cDO%5o+E?Y?<7(gGjn{aycVil7oklN4*pX zK&0qssFW)W#mapNSL$z0L98s%Mf5=C>`PG;E*JYM1Am>d^qc>d19#41x}W~Ak4s$Z zLf$%jMHHp+#qf#lwE@iB=ZMyxX%}|R1p2YGw)!Q0!t900@L+b%cJ(6FKEKjfuWPNC zB0$$}6?dWPH{<W)JKl!xY)&|j|Y z#!ZD^*1yh+r1rUwc?`b+B%8q!<+d4KA9letTTZB8^d@hGI^g`CsfKhBO0!5-elW#E z-|W|<@BFv8-^V{`9lQa?uh~zn%x@F3PEI^b?u>TyUQ7k&Sz?H1*K5}Z8&4Q!n?Fjq zN@qqYw1&c~brvsLj3rdEmTxu!4r;Aem68m&$8D@(`9xg5Ej?qJph#yE|L^r}Z0_AJGa%CFc6 z{AL+_gM0s^;A~zUTSIqaSr5t7#uBjQ(TTuAgM|wJaSn^?#$c16dr}j~XY{lL5f`-* zRhBWFHrzy(N@aU6p~9F^(LSE15~_}|+4#4hYbG59v<{QtD0nOQjmyxH%c+lv1<6Z{@Lb97I73p#GrnPlN9<9Sc6`sht%CXQQJhcSt z^CrFJ?bn=~YK8sg^cg{9^p*=$PCQ(s6a zkSk%pa-IqH?yO?9(Qz;%G$_+E<0#2xRO;vRlwySJnRw$d=-aVKZW%~~`DFQRi zsaeX35&gELqEMuv>|bUjU&nu3l1P?g_z1FdOQQLj1Ma=Pfs;SBQ``;)w<#;{RBjfR zA!X!XFuQsQS39(5uUmrfC&h}$XG^a)njL=#&mUbMdqlIA^zw2`^Y)t_NyW)MXX+yK zH-y>fegvs`Tk;!xrMBtRVRRu@Vasaa&teUFN?gE&$7}wUJxD`Jj$|yv zJXsV;)|;7<@F(Jv?$`$<>NJfL2`c1*yB(NzP+mUZ_y^2IRlGadVCj@4;FM9l(Qym+^3Xp04;IdFBny7uJSqf z3T=dz^F#BY+o<#}g|*a=S|t@qrh04E{gaB}U$E_ylFGv&Q6vmG)b{5@gy{GIGEogQyJ$oAZE`NV(+WU7%PmYbbKg(zBvi4ozk~F}=#ZB{+45*V^X` z;chZUij17mDgotfQM+Sy&dI`I!Mq~M5r3+ARx-_)meBmlL*7y>Z?oWY3vTr48jy32 z({%z!v)7ipUX-a$L#xXmn@#g5M(SEsMy>w~J}tmSz?-ynt(5xl3Rct29|3kp3h$Fv zS|a1&HbS30olE03hsx_^5-K{I99s_hZ@vdQnH(0KE|0;F)icZ5F2C!ti0jo$2O^9U z`MIUhX4MnJ;lCA`n$1z$G&2z7K1xt_{mx}=x1{|-Uz^oVD!*EHsVr7ljWyD9?PusF z#~Vy{tE#|H^@zRB&^pPejOK1^lxSg{%3~2P?`_bjEzw^j&``wBb{@@Vik8Kq#9pNQ z>$3=!GA_&H1d`ty01JyQnFiKa1>0hmX&rx_TB=dy*h7n_T+|F~n6d%!(}M%qg7po6 z%nb8_W5?-R4!2OQTNA;+kk#~nv4S+WoJ6@eI&z6Z3=1z1#=EhC+i)JYX7MOG3)S`#&*)S zN~($k);PbHedKrgmkzqDPA3qtESC4C({J)^vlARJNcs%Qm@o2HyahP&!cwp;GzW z2vxZ@1fdD#PsyMRn8--eGM&Meh37o;GrEnc%ufNcws-bt&A8iC4pXeWL3w!^dErc0 z@EXCn8Z_2aB&rokAaflZ?$FZDb}+tqjHn0Uy?E)q8aqP|+$W+6L{;?=J3 zg>T9AHbvYbzZ4&3q%K;FdS$2SP~L%G?_%>zuq>yr?GV^Och1lP`+CY|Gl{c7?KjE` z2~;noZAAi_Gg9%w7jca^*kHV%_Ll*+-vGweibcMoqY*kD@_b_@sN@xJGj%fdwHd_b zEsZ1LP<;xKZr4MH8@4Jv>-oWHx&*1{SQ0Jvcsfs-Y70UQ#cr(4_>k!ELL+Nnr(UQB zcxI0SHW7`(9hEhYAM&KxQw2Ch*_;CX*U77%o-!y?XZfW~)+zLg<*F(?>J^V~fVKd` z5oB+qP_nKA*jmpyD0}88CFi1Bm_X8LG|)Vk5v`*^<~fx4bswQ!YH2GwEekZ(Ttw1qp7$D220wR|v#qpfcL!D96rOo7fiPN9Uh9|f)J ze6!&i%7PIo%oan&p$Wx%l63)eMYGSG^FL;^dge#ZJjl6Y&hxXZl}G3>Ef)tn38V>n5$Wk3&}2yF3({ z$J~L#KgTVGBC0G;$Mv+IOM;B_jG7RAGK11C_M%zNfluSUKm2I;4EI){Cv<%0x5C8F zsf|H3dF)hD)dw2`zG1dwfhaqtWxDwX4xj0B4IfFOZt!!)l>KZKsHvo*|76We_1x#V zoAJ=ucQ7Z~OF@V@;@|7t`y*pPQim$jJWWkqlH&!_-?34xH5!5fR4_r$_##VcFApc7 z&82l$-^-Z#1`zAhseTpm#{XkrMr1}aE#h3h)h3*y4!1thHVgD*Zpg4N7aVXNmBao% zifD#N|Ma;#WuLJ#D5c1H`_F(Lg+l~!&>mdocg>LI12x@~&VA%BxiQ^J{p2T1a9~ds z(WQqLw1y8EhvPiI`fuzNyW9{32IZwokjK*6eW?Yo4WHn*PS({81$sf$(^qp43nm#7 zd<2n$mpwkA80pGw-xrFI|B&vLcV$F`&8tCV9T8NmlK_b^8$YR_6(|u=ef^5d;_b^O zFyF!P6xufZU_2=a_(u8pZUcI)6w1#vRwcMi%?Z0Tp?I6+>?v^VGWa(Ml%X-97n6&WTX$uxlNSm}8wu>w-^9+(S7f*rSOw=0yDycUt-pG4Qr#C5?I&~}=!}p^ zVyU=S98OH>$*QtxYdRaBO-JHWh6pm{!6soh&S5E6y!+PF#6A3dE6Du|Qc-3<{{S?Z zm<{tc;Cl|P7!c%djl&okv6)XCP2n&}>2&TtPlriwTjNTtW~U*`eGG-W8gO#>)q6+f zDk#g=>VA?{9#u<5NlE?Cx*!MptxN@Hyc+%sqgqUYW$exu4yL>-f(AYEpdgT}5Q_?S zf^q@ZJ`03DZbY$j!mD7=AL6z@Ukab)qh;5N=}#OlY$zCnQ@@!UhD0mkXI$La=UHlG zDzZIL25zVg01g#{J1CGmmY~5~aBO5Ba00P(5fH8Y%R>1}JW~R6P`)KkvdqlT;<1Dl z=Aq!bHJBrP(^B;+M~L3b{ryNd)$$CS@2W?Tyee|+NMv6Tr?TYWp-)LN=VoFa5;Lu1 zhe%O!HN|py3gaU%B0(`mw=7!ybf0mLGttp#w^bY=g$oB}c;aR|$jp+7$voHqpKlBA3p<0z-sK|U@aovl%eQJ`+eY4#Ti zMOpS#e=+zV%aHpLtz3iOFj2@#qcbrXSurS18w>X}_W&CNJfu|DEC9dTG z$;sIVKVj%9=0UU28_=B=U8ScDVq)awU zX@B$7hZ?j}38M73+FDp2!WzpKEj+tgH0sHW_2>}bQR^GO0vpyclEA4`}6$~ z*zUdv;$x0%Nrv&jMZOgmIyE7Yq~gpnT0d6AZ<-&!4Us7Ysw2fpX&frj#q9%cVCM`1 zQ?OdaRSI*Ce5U5;{H7EEvpD$X6 zciSqN&|K@M1OOJea_J%?HuE%fG%7V0NJ*zqa^iW6ak1CQN+GP0YQIn$eMk6A{3k{4 z9*E;H3S1VL1pZuMKp_!+!R20)B#S?2lfOYY+?SuYv(l^X$IyBtU|2tf{A$P=LX$3D3jS1G4W?+xI+``wE}Y`JeumoR8p>|)zU z6XL7m8(^vex7++)Vu!Y|=<W+H%B8Xi_;4wISO*zlWRa9M0#!0@uPv2%-%9AwW3KJ`t*`|G4rlpp8 zzkw785XD?<*4Vn)O`>oRLL693vIZHdVuWNho0rPgD7Tei#%a=lI;^5}$|JA99Pro^ zXg#Y zqk(LsAt3YoL|T(%A@kO=WKKsQa<6HD@F>kN5=jvTONd;GN>W6KL#6#D&`F3^$d-gU z{P1I}r7DI?d>@hem@4wPX-}Qt?-{X5E#aFG2PPs=%o!l}BSeu(qR&Uxh`x<&Iv)Gl zJLOZK3TE8_7y|D5=zfSiSL%L|pC(Ao$a=C=9+i&KX-tmif+-^P)TUV}v|KnVioK4P zBdgeyv>?I*OQ&JNH})$Ez+y=FaRvSA#X*^!@#KSLqClxw3PBfZuQ{q@+0LD}fcyq! zw1UJsPs+f!MX1V1QY#HWBu#+uv(+Dl4E{V!Ei%qdD!6*!u;2CN1~JWz?+@X{p@k2{ z;^+%8%{tEoCvl_3#`ocS6qGqNooQJaayv=jj%U-V0O&9yo$!}&>Yn$8j)F=@bu6$$ z^6*IQcI$WIeIXH!eZ`dy=3(e}8?|w@!D&VRM;qTn@R!D4|Ji+^F*HhClP&F;j>sdX zQE#prp>|4)us7k&xm#uxc{p(bYXlgkccWy{D!?EeTrb3pa}XH1jz%ZyR9@CC)ncWC zPBnZe6B_4oqkIn{q%n9%s~3tPfZB}D85WDwL6oct1n>NiGKIkc>a^KCAOkcILU`ZI zIPglvM1gc^>rVtXL9ZxFdQj#1w z602&Q$MIzmW`E+G0a+gX)r^p-%_mJW2}2BJ{9v|#C7no}6%PX|YKh0?^y%Z~z_EIh_+dKIt_4`RMT$|n8WzgGVHGr_qh78SmfHU`8n!{s=FB-IGQ$9Rm=iKuioeE z)$imEA<0ZEiKbz4^(w<%ik2ESRlmZm#J(!*oqZ@VtyVcO8#-cTq;;xG>M;fq zkmQ;`;$WE=V|zXo!nSs>ghy-7T;G6RX+V7lw)rHT!(05 z0`nTI7FkMqd)f%wcB2i~L15)Z!^>$0N`_0%FC#N>)4q%dv~$@`wG=(VmX-!c>A|kc zL|&v&C9S8ZFucDJA9-G$RDsiGVZT^&Sy3P#HWb`#Avftm%B4nP5GQ2b)*NPe!l$Mm zN#&gVgRqO}#Ky*(^JcII@#D`rLiYKE<5G;Dor^iC+&FmZ5Z35A8Kn6XkRel_UZKJ+ z7+!AlL6ItBFmAJ3FxWRrFf(&8YX>BHqPQ;uDxj`gFxhbHr6%|C-`yjgVNS`$XZlsA3jz`bP|{ zXL9{TZEQwTyt?VM!--{il8N1E^A1AFE{f-uN%an$$fnQB<)plPw6~9Cv2|^s{%DqS zYZCmf(U;Sw$b-SbQ=-f4*P`=}tKtIq6R18*a=Q`Q3h}2jk9Dp2FR?FpAq5nM!>gq) z^W)!B7$Z=eG|xSgdvVJdx=}ZBHInx7*B+meh{ou29dbVL4v^^XQu1$h^WU)SR9c@_ z=XlDljJ4}URzG0=kty(AXa`R@?=-vIXgp`jFnYQjR&L&Xsq02qplx(&>Nd6NJ~1?z zS^TqDIh~E|;_|~s*Yvf`;(!C^a7_r(7k zA1LQEA}`f^w*e4(bq`5c`JMXV zDVJN%(*rC99W_gr%$NJ9OqEmdj@R?PZ-6t{w5jG{uIAGQjHoBUJz4}*+#eIHN#j`$ zt?qp8k)XamP~5&sXPz8ib1dO#KE*3eFdHAlQ-99EBX$9MDGP1 z1pP{p2n@qj6+${)BkhSLixE9RmaV@SgKG?L;K0GmbeK$wuVFUEb_D4)?h67NRssS= zU(7D}glV~jfCJ(yHOKIVWx4wF)~g3d1D<*&cuFhOQ3~sV--(ri0eMB!d>5MmxjF}m zx@OR7QfOE%NWD?D`a`KmJ9>n5GIzSpS)?v@?Pa>7cldjPpUJ#14hKrXjcW9acD$vf zrm;)k6Ind^{+Kb&BM{8_Ej!RK4v=#+Lyvr6m%@Vjy)Sf)47`{xujUBa7>s! zd+>tmif96?Rz1{qc7m_JZ>dsw9V5X<=L%RtN1zI3iDS!m3s%iB%s%{iOdGqE)zLF; z+w}2~&D=hzvM7IO_3yu9(GOfGc_yv~Pk_dM=+(2d5q}Q{A?zal*{1=XgU$tfTYkJP F{~vah0XhHx diff --git a/reference/copy_/index.html b/reference/copy_/index.html deleted file mode 100644 index 3da17b7..0000000 --- a/reference/copy_/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: withcc -title: copy() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    copy()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="eames.jpg"; */
    -PImage img = loadImage("eames.jpg");
    -image(img, 0, 0);
    -copy(15, 25, 10, 10, 35, 25, 50, 50);
    -noFill();
    -// Rectangle shows area being copied
    -rect(15, 25, 10, 10);
    -
    Description

    Copies a region of pixels from the display window to another area of the display window and copies a region of pixels from an image used as the srcImg parameter into the display window. - If the source and destination regions aren't the same size, it will automatically resize the source pixels to fit the specified target region. - No alpha information is used in the process, however if the source image has an alpha channel set, it will be copied as well.

    -

    This function ignores imageMode().

    Syntax
    copy(x,y,width,height,dx,dy,dwidth,dheight)

    -
    copy(srcImg,x,y,width,height,dx,dy,dwidth,dheight)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint: X coordinate of the source's upper left corner
    yint: Y coordinate of the source's upper left corner
    widthint: source image width
    heightint: source image height
    dxint: X coordinate of the destination's upper left corner
    dyint: Y coordinate of the destination's upper left corner
    dwidthint: destination image width
    dheightint: destination image height
    srcImgPImage:a image variable referring to the source image.
    -
    ReturnsNone
    UsageWeb & Application
    Relatedget()
    - blend()
    diff --git a/reference/cos_.gif b/reference/cos_.gif deleted file mode 100644 index d394e1e6db848ab9e315c89d81d6af22459afdf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2496 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 K;BOp+002AD#VWM` diff --git a/reference/cos_/index.html b/reference/cos_/index.html deleted file mode 100644 index 2ac94fb..0000000 --- a/reference/cos_/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: withcc -title: cos() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    cos()

    Examples
    example pic
    float a = 0.0;
    -
    -float inc = TWO_PI/25.0;
    -
    -for(int i=0; i<25; i++) {
    -
    -  line(i*4, 50, i*4, 50+cos(a)*40.0);
    -
    -  a = a + inc;
    -
    -}
    DescriptionCalculates the cosine of an angle. This function expects the values of the angle parameter to be provided in radians (values from 0 to PI*2). Values are returned in the range -1 to 1.
    Syntax
    cos(angle)
    Parameters - - - - - - - - - - - -
    anglefloat: an angle in radians
    UsageWeb & Application
    Relatedsin()
    - - tan()
    - diff --git a/reference/createFont_/index.html b/reference/createFont_/index.html deleted file mode 100644 index 65528a5..0000000 --- a/reference/createFont_/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: withcc -title: createFont() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    createFont()

    Processing.js BehaviorFont support for the Canvas element varies across browsers. See Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    -
    Examples
    PFont myFont;
    -void setup() {
    -  size(200, 200);
    -  // Uncomment the following two lines to see the available fonts 
    -  //String[] fontList = PFont.list();
    -  //println(fontList);
    -  myFont = createFont("FFScala", 32);
    -  textFont(myFont);
    -  text("!@#$%", 10, 50);
    -}
    Description

    Use a font that's installed on the computer, or from a .ttf or .otf file inside current folder.

    -

    Use the PFont.list() method to first determine the names for the fonts recognized by the computer and are compatible with this function. - Not all fonts can be used and some might work with one operating system and not others. When sharing a sketch with other people or - posting it on the web, you may need to include a .ttf or .otf version of your font in the sketch directory because other people might not have the font - installed on their computer. Only fonts that can legally be distributed should be included with a sketch.

    -

    If you have a @font-face rule in your CSS, you can use it by passing the @font-face name into the name parameter

    -

    The size parameter states the font size you want to generate. The smooth parameter specifies if the font should be antialiased or not, - and the charset parameter is an array of chars that specifies the characters to generate. The smooth and charset parameters are ignored in Processing.js.

    Syntax
    createFont(name, size)

    -
    createFont(name, size, smooth)

    -
    createFont(name, size, smooth, charset)
    Parameters - - - - - - - - - - - - - - - - - - - - -
    nameString: name of the font to load
    sizefloat: point size of the font.
    smoothboolean: true for an antialiased font, false for aliased. Ignored by PJS
    charsetchar[]: array containing characters to be generated. Ignored by PJS
    ReturnsPFont
    UsageWeb & Application
    RelatedPFont
    - textFont()
    - text()
    - loadFont()
    - diff --git a/reference/createGraphics_/index.html b/reference/createGraphics_/index.html deleted file mode 100644 index 25a8563..0000000 --- a/reference/createGraphics_/index.html +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: withcc -title: createGraphics() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    createGraphics()

    Examples
    example pic
    PGraphics pg;
    -
    -
    -
    -void setup() {
    -
    -  size(100, 100);
    -
    -  pg = createGraphics(80, 80, P3D);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  pg.beginDraw();
    -
    -  pg.background(102);
    -
    -  pg.stroke(255);
    -
    -  pg.line(40, 40, mouseX, mouseY);
    -
    -  pg.endDraw();
    -
    -  image(pg, 10, 10); 
    -
    -}
    DescriptionCreates and returns a new PGraphics object of the types P2D, P3D, and JAVA2D. P2D is not yet implemented, but will be available in a future release. Use this class if you need to draw into an off-screen graphics buffer. It's not possible to use createGraphics() with OPENGL, because it doesn't allow offscreen use. The DXF and PDF renderers require the filename parameter. - -

    - -It's important to call any drawing commands between beginDraw() and endDraw() statements. This is also true for any commands that affect drawing, such as smooth() or colorMode(). - -

    - -Unlike the main drawing surface which is completely opaque, surfaces created with createGraphics() can have transparency. This makes it possible to draw into a graphics and maintain the alpha channel. By using save() to write a PNG or TGA file, the transparency of the graphics object will be honored. Note that transparency levels are binary: pixels are either complete opaque or transparent. For the time being (as of release 0127), this means that text characters will be opaque blocks. This will be fixed in a future release (Bug 641).
    Syntax
    createGraphics(width, height, renderer)
    -
    -createGraphics(width, height, renderer, filename)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    widthint: width in pixels
    heightint: height in pixels
    rendererEither P2D (not yet implemented), P3D, JAVA2D, PDF, DXF
    filenameString: the name of the file
    UsageWeb & Application
    RelatedPGraphics
    - - - diff --git a/reference/createImage.jpg b/reference/createImage.jpg deleted file mode 100644 index 71fb0495ada4ff3217e6679e24c9eb3ca712b889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1535 zcmex=TaUl^P5E2)cmXVW@7FSVG zS65LnH8wUjwT1&mUT$t)K3)MnJ^>Lvem)Tq0YO0l5m^xtQ4tYYRVi^GkWy7pmXniH zR?yH;Rn^ciGBPkSg6p^be}F-d1L%+zW=16jCP7AKLB{__82W+EW@ZEephKa6nT3s& zk(~)B1eAaYf@mfdRz_w421Z6^Hg%PbMke9F#6}?&RzX8YC8tZG6AuP8Z8|i0 z@#ByZ(^NKb#X^yVn-6dNn3Sv{$OsHLR#qfa8JU;`1BHx)6%B)oSqlH(V&GwB1iFq{ zkinke?yiZy8*XxIsvSyG{c?m=f_H*LPU{b24r9ji4LA7{%$)v6wn#QCWZWd@kkjtO zbBO0aK*LQIwiEHq2F(UCKX@m6V@}aOIKy!Umw>e56Sfm23TG6~uv@N}Xg7~1-S8B20i|qyldw0{6O+F_x3c^ian1)KblRl-Ym2yu2AV`CeysB z3YkF+FPHA~bC~wiLh=KHyv5%9=!@2uZpdbjZC)za&+q2CO9lHVsJOGdvqwCu*- z-(MFmt&fP8%g_7B_356L*dt|*7suD_+Ug&=cVqSU*X~~bHry89U$>=X{cBOiyM~i& zrasrMPWt}-THn;aiQDw+{${+4zox~w%*ayvT-djx@9(db)&6xjC+_dBi?jyOsTh2-bJ^Ptmb8nUS zx-(uME01(PUDEgF$a?WP9{Zv^_D=b-lG$qlyRYu2B9`qZ51emc_?i3h*|+xs>vbP3 z%=_`Vy1XNN+Q)#M{uxPk?kX_6QUKb*dwpZg!hC`6Zz)%XbkAdy>O|6h!(^6IgL+ygQ(Yz~ROYbZ;a?4je zyjA{9$j)6+{~7F8^&jhcUbkC()^dvt`=b2nw_RCx+ULT@!gEbOGcf}5+5L$Ye>%^V zlzAy{3b5C@^G$VXZTS4aevQxZ*%H?a4A+};7o^SaZB2Z*de^&!I+aH%PiC(+pL1iY zZCZ!xhBY>(<*`?!xegx=FTLv&@wwx3Z)w_d*7Y1%q%H%c3Zg!=L_<_NLN%-QTl8C8 z4@(DXirlcMw^eP)Z%tEg z=FAfRBs=xfrS!dBf77C$HUDXAt=ZBZf{4Ub{+k)CMVJ*oK3`F4yYl_ diff --git a/reference/createImage_/index.html b/reference/createImage_/index.html deleted file mode 100644 index 408cca1..0000000 --- a/reference/createImage_/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: withcc -title: createImage() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    createImage()

    Examples
    example pic
    PImage img = createImage(66, 66, RGB);
    -
    -for(int i=0; i < img.pixels.length; i++) {
    -
    -  img.pixels[i] = color(0, 90, 102); 
    -
    -}
    -
    -image(img, 17, 17);
    example pic
    PImage img = createImage(66, 66, RGB);
    -
    -for(int i=0; i < img.pixels.length; i++) {
    -
    -  img.pixels[i] = color(0, 90, 102, i%img.width * 2); 
    -
    -}
    -
    -image(img, 17, 17);
    -
    -image(img, 34, 34);
    DescriptionCreates a new PImage (the datatype for storing images). This provides a fresh buffer of pixels to play with. Set the size of the buffer with the width and height parameters. The format parameter defines how the pixels are stored. See the PImage reference for more information. - -

    - - - -Be sure to include all three parameters, specifying only the width and height (but no format) will produce a strange error.
    Syntax
    createImage(width, height, format)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    widthint: width in pixels
    heightint: height in pixels
    formatEither RGB, ARGB, ALPHA (grayscale alpha channel)
    UsageWeb & Application
    RelatedPImage
    - - PGraphics
    - diff --git a/reference/createImage_2.jpg b/reference/createImage_2.jpg deleted file mode 100644 index b31c42423c82f3f9c75fe192bddffd145e954f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1570 zcmaiycTkf_7{)gVEhNNzDMTPdz)(d4K~Myg7Nkj0;Y2u)0C#pu3}C}pLQzox5e}6W z^&CNSD0(VIh(Vf-AP8tg#7H;{69puAV(xQJz45Pmc4lYi*>~sp?Ypb)Q@;dwe;+>| zfItEe4-cSz3m|W9+?JgH0W<&rR;w?s1Um@zGjIrCb#!#lI#@Is3t@CI z5P1$3JBK`%NF)=9b14K8ECPjMM5R%UD0I4|C7tf*;Nals@?8i$3`P&9hsWXYB-|Vv ziG+tBJjs|uB9lnQ=7tnlhUO;oX*Ak=6Duoob1N$*(~imfe%?jh1Rxz4=wx+JGHu`Hl>_YY)q5Fv%rm+Mw zPi0<>V3?#CrbVe}UY&9v-{D}v-DI{%;i?h#~ZIF;@8>69Cj@z@@8z zHMu9g=1rvUN9M*C$B*W_Iq^z+%8kN#`bn9D*mN(noxw|h>MRV&d6=?h$UGU-Nf7Mt z&8e+>9dv~3^mK3VcGFZvFZr-i{_ak(V#+MT67v4(W5=#!%ygpRvD7SfjkQWRb&}s# zzdB=aa70i&U&bD&ldr2W8;Y)>j$CpJC3jr9>dW6B`8a0i&fiCxL~X5+yWI9=?-p3( z%2n<2yEo1AS!LAqE`Q~P?u7*dwW!UHkq_~rK!#4N1!FR~##~KJML4QAJLB+tHd|q$o}2-|uG*x^Z)4zrVf0fO1CC9(6yi z>uSqce%7~8ziYHs@HW10kUN2Cn;hVbaYv_~zhee(eymsJo?AVHrHhoAgbfZ&K)VQE z|C^X$>wkbQ5|)`fiQvaL$Ca(Onc-Jr8)G+S4)Ynr)G^kp;JT$^kMvAI*~+A^@ombl zi}uv#Pd3&WIW3Xyy*lpZbnl?Lt$`h`ifgd{>S{A6q z{>11QPrBaT;LG8kPdm53xk~d`Ru+o|MR`@ZR;O9HmSn$POW7qe+p*_$(6J+a3BNSK zJhVamh_)EWdQHmBsR!AW7_r6fJPy7g!I8Slh4%qBQM4aD&#`o|N%IOHV!>GYiM%d! zVv!%CcX7jaApb=zx2VPaE6z_~`X&cbzO*I7)UC?h=`zyk+9A6FjA*VOZ${`GW4)l< zS@blF#Z|?q{5wRmok5C@WOnDNh)riaRgCFwuKO~ffB4o9G_qoSc#B6^u7$U&ZNmM- zDE~L%vLd;w3u{wE_?eS^w(<#?^n|jeV7Z@&ZNQ1W5*9WX+~;#SYk7Wq@y~GsJMScO zGS-Ye5-)8P7**!Ws)q%$`Z=~Mty?&!xYAobflJ&DW|YKDM18uul6E>!I4bG~?F8Y!!c~vx&_#mOAf~zjLi3-^=^tw109eX9z89bIHuh*K0*r - - - - - - Name - -

    /* @pjs crisp */ directive

    - - - - - - - - Examples - - - -
    /* @pjs crisp="true"; */
    -
    -void setup()
    -
    -{
    -
    -  size(200,200);
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw()
    -
    -{
    -
    -  background(255);
    -
    -  line(width/4, height/2, width/2, height/4); 
    -
    -  line(width/2, height/4, 3*width/4, height/2); 
    -
    -  line(3*width/4, height/2, width/2, 3*height/4);
    -
    -  line(width/2, 3*height/4, width/4, height/2);
    -
    -  rect(width/2 - 25, height/2 - 25, 50, 50);
    -
    -}
    - - - - - - Description - -

    Depending on the browser's default settings, canvas elements may or may not apply anti-aliassing to draw instructions. This directive lets - - you force plain (not anti-aliassed) rendering of the "line", "triangle", and "rect" draw primitives. This results in crisp clean lines, - - although angled lines may look jagged.

    - -

    NOTE: the "arc", "ellipse" and "bezier" draw primitives are not effected by this directive.

    - -

    NOTE: this directive is very expensive, and will result in a significant drop in framerate, and increase in CPU use.

    - - - - - - - - - - Syntax - - - -
    -
    -        /* @pjs crisp="true"; */
    - - - - - - - - - - - - Parameters - - - - - - - - - - - - - - - -
    crisp "true" (implicitly false for any other value)
    - - - - - - - - - - Usage - - Web & Application, Processing.js compatibility - - - - - - - - Related - - - - @pjs directives - - - - - - \ No newline at end of file diff --git a/reference/curly braces/index.html b/reference/curly braces/index.html deleted file mode 100644 index 95d8935..0000000 --- a/reference/curly braces/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -layout: withcc -title: "{} (curly braces) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    {} (curly braces)

    Examples
    int[] a = { 5, 20, 25, 45, 70 };
    -
    -
    -
    -void setup() {
    -
    -  size(100, 100);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  for(int i=0; i < a.length; i++) {
    -
    -    line(0, a[i], 50, a[i]);
    -
    -  }
    -
    -}
    DescriptionDefine the beginning and end of functions blocks and statement blocks such as the for() and if() structures. Curly braces are also used for defining inital values in array declarations.
    Syntax
    { statements }
    -
    -{ ele0, ..., eleN }
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    statementsany sequence of valid statements
    ele0 ... eleNlist of elements separated by commas
    UsageWeb & Application
    Related() (parentheses)
    - diff --git a/reference/cursor_/index.html b/reference/cursor_/index.html deleted file mode 100644 index 0e891c9..0000000 --- a/reference/cursor_/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: withcc -title: cursor() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    cursor()

    Examples
    -
    // Move the mouse left and right across the image
    -// to see the cursor change from a cross to a hand
    -void draw() 
    -{
    - if(mouseX < 50) {
    -  cursor(CROSS);
    - } else {
    -  cursor(HAND);
    - }
    -}
    DescriptionSets the cursor to a predefined symbol, an image, or turns it on if already hidden. If you are trying to set an image as the cursor, - it is recommended to make the size 16x16 or 32x32 pixels. It is not possible to load an image as the cursor if you are exporting your program for the Web. - The values for parameters x and y must be less than the dimensions of the image.
    Syntax
    cursor()
    cursor(MODE)
    cursor(image,x,y)
    Parameters - - - - - - - - - - - - - - - - - -
    MODEeither ARROW, CROSS, HAND, MOVE, TEXT, WAIT
    imagePImage: any variable of type PImage
    xint: the horizonal active spot of the cursor
    yint: the vertical active spot of the cursor
    -
    ReturnsNone
    UsageWeb & Application
    RelatednoCursor()
    diff --git a/reference/curveDetail_.gif b/reference/curveDetail_.gif deleted file mode 100644 index e7390f1b6640a45ed826a5833715601b42cc120d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmV;A0dW3DNk%w1VPpVg0FeLyetv!c00960|IEzHA^8LV00000EC2ui0Av7U00092 zoR6u??GK}zwAzca-n{z{hT=$;=82~2%C_zc$5}wv_Fc;c&iB4u35b3@9YSbK4v9{g%Sw5xE>XCjsoXyWLT*-tGwfUSG&X_<7%i2aqKg@`iRq zcnFrLI5xo8IP@6l2ub;YWO>PvxtV65={a){Dr&)0+9k46;5IbA@ zO47Q6Altz!pu?IVOi?QqP)y448!6-rYN~-moovm3{k(m_RIL52@FXy9U4%gGNd)u& zz&_pT;xDkK6`9{RB=(RL~#TTyatT3O20Rv1H4dJ&QK2+O=%kx-DA(06RwZx}pF8 diff --git a/reference/curveDetail_/index.html b/reference/curveDetail_/index.html deleted file mode 100644 index b6a8807..0000000 --- a/reference/curveDetail_/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: withcc -title: curveDetail() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    curveDetail()

    Examples
    example pic
    void setup() {
    -  size(100, 100, P3D);
    -  noFill();
    -  noLoop();
    -}
    -
    -void draw() {
    -  curveDetail(1);
    -  drawCurves(-15);
    -  stroke(126);
    -  curveDetail(2);
    -  drawCurves(0);
    -  stroke(255);
    -  curveDetail(4);
    -  drawCurves(15);
    -}
    -
    -void drawCurves(float y) {
    -  curve( 5, 28+y,  5, 28+y, 73, 26+y, 73, 63+y);
    -  curve( 5, 28+y, 73, 26+y, 73, 63+y, 15, 67+y); 
    -  curve(73, 26+y, 73, 63+y, 15, 67+y, 15, 67+y);
    -}
    -
    Description -

    Sets the resolution at which curves display. The default value is 20. - This function is only useful when using the P3D or OPENGL renderer as the default (JAVA2D) renderer does not use this information.

    Syntax
    curveDetail(detail)
    Parameters - - - - -
    detailint: resolution of the curves
    ReturnsNone
    UsageWeb & Application
    Relatedcurve()
    - curveVertex()
    - curveTightness()
    diff --git a/reference/curvePoint_.gif b/reference/curvePoint_.gif deleted file mode 100644 index e2373f18ac8c80b3a3d5a067bbecc8b2f6fd334d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmV+|0n+|QNk%w1VPpVg0FeLy|Ns90007L)%m4rYA^8LV00000EC2ui0Av7U00091 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<3j0p@tY}1OUwB z0%>F{n^GnKi6vT{JE(G-#crSAqQHAXC#Ki1m?||Z*jz2#qo$w3W2O9}cGlNH_trKy z$fAcgxH$LM;>O{)$JIlL5om-N#dy~Vf(2S)IT{LSy1|*6naG;4`f8ymn^}u@OPH&Q zx+@Xu>i`^F^+_B-d;CzUjNCkt{JiEWjc8mweT|I}y=}nk%^e;G9zI-sE}i}?I{w{j zP93l9z0MBrp0B^p-|znqFrdJJ1PdBGh%lkTg$x@yd - - Name -

    curvePoint()

    - - - - - Examples -
    example pic
    curve(5, 26, 5, 26, 73, 24, 73, 61);
    -curve(5, 26, 73, 24, 73, 61, 15, 65); 
    -ellipseMode(CENTER);
    -int steps = 6;
    -for (int i = 0; i <= steps; i++) {
    -  float t = i / float(steps);
    -  float x = curvePoint(5, 5, 73, 73, t);
    -  float y = curvePoint(26, 26, 24, 61, t);
    -  ellipse(x, y, 5, 5);
    -  x = curvePoint(5, 73, 73, 15, t);
    -  y = curvePoint(26, 24, 61, 65, t);
    -  ellipse(x, y, 5, 5);
    -}
    - - - - Description - - Evalutes the curve at point t for points a, b, c, d. The parameter t varies between 0 and 1, a and d are points on the curve, and b and c are the control points. - This can be done once with the x coordinates and a second time with the y coordinates to get the location of a curve at t. - - - - Syntax -
    curvePoint(a,b,c,d,t)
    - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - -
    aint or float: coordinate of first point on the curve
    bint or float: coordinate of first control point
    cint or float: coordinate of second control point
    dint or float: coordinate of second point on the curve
    tfloat: value between 0 and 1
    - - - - - Usage - Web & Application - - - - Related - curve()
    - curveVertex()
    - bezierPoint() - - - diff --git a/reference/curveTangent_.gif b/reference/curveTangent_.gif deleted file mode 100644 index 0c5150d6207ca0c39eb703c4c21154eba7752b93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmV{r6p73e1@V3 zs#Ib%WUmoG)XU{8w_%D9T<)OLYBIaxeq-fodcC@~L%jUBzWSHp7Z^l%F=%*zm>95_ z=t$Tn3CTtoX!(b!r%A`z$vBY*`p`G(FeYl+807iXTB*7hdpdiXT8s30<#Y>b)f-t$ wD_lriY@DDAiwwxz>Kq-J9V3M(f|Me diff --git a/reference/curveTangent_/index.html b/reference/curveTangent_/index.html deleted file mode 100644 index 659f63b..0000000 --- a/reference/curveTangent_/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: withcc -title: curveTangent() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    curveTangent()

    Examples
    example pic
    noFill();
    -curve(5, 26, 73, 24, 73, 61, 15, 65); 
    -int steps = 6;
    -for (int i = 0; i <= steps; i++) {
    -  float t = i / float(steps);
    -  float x = curvePoint(5, 73, 73, 15, t);
    -  float y = curvePoint(26, 24, 61, 65, t);
    -  //ellipse(x, y, 5, 5);
    -  float tx = curveTangent(5, 73, 73, 15, t);
    -  float ty = curveTangent(26, 24, 61, 65, t);
    -  float a = atan2(ty, tx);
    -  a -= PI/2.0;
    -  line(x, y, cos(a)*8 + x, sin(a)*8 + y);
    -}
    DescriptionCalculates the tangent of a point on a curve. There is a good definition of "tangent" at Wikipedia: http://en.wikipedia.org/wiki/Tangent
    Syntax
    curveTangent(a,b,c,d,t)
    Parameters - - - - - - - - - - - - - - - - - - - - -
    aint or float: coordinate of first point on the curve
    bint or float: coordinate of first control point
    cint or float: coordinate of second control point
    dint or float: coordinate of second point on the curve
    tfloat: value between 0 and 1
    UsageWeb & Application
    Relatedcurve()
    - curveVertex()
    - curvePoint()
    - bezierTangent()
    diff --git a/reference/curveTightness_.gif b/reference/curveTightness_.gif deleted file mode 100644 index ada14edc5282c739be15889ec8aa12160b24ce84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2436 zcmV-~348WONk%w1VT1sL0K@larIAq@>l=)q{hB`uh5PeSOKv z$#Zjav$M0TtgL5eXX)wb;^N}w=H~M9@&Et;o12@8ii+9U+04w$($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u0PICJXUne$@5 zk_}N7`>^ss%anSvIqhT9!$8f;lqd%D_+c)aapWC@&0MWH>`vWfE#Px z%(=7Y!jCQ5m5h>vQHqzz3iiO7wSw2MW6PdRySDAyxO3~atzm9mpm|e*6{}%2>j21) zC|}OJx%21Hqf37-8-a!mqU8k>ieY%t;s}l-Pd>f8`Sa+_!?x~w^!72AysHlHVLbWt z`19+RzP>kh_rVn-A9(fI7r=f9CaB>5YwZ1}U4Y%8_FZ5F+Na=!7@o(Vf4|{1Onef~ zSK)XWmS|#g8@Bi0hXRI3pn(UTDC3DKI_M#ME&3%Qj5GF_VT~QW*Uf+w^62A{2m%Qp zixKMhqJc<8nV*s?;@D(rPg*GDmg*_cV2}_J8J>|`mI)n|HxB7ykx-iHCW>BixTKY0 zj(Fdjc@ifQ(V z<)0*OnQ4BbCb_ANeCGJ+qJSO=DTbxuCn=qZ+8JYyv1a(HtfzuGX|0u-xGQ=v7E4|N z!*==QoND^XYN)Up+MKb$HkZKvwFv}p?Vt%LD`%C>u4-$v7f{=3e%DSLK(25u3$CXV zK6@v6g-!tNjNMAN?xkn;$}GG)GV0vE_1bG@zSC*TuXD488}GPBV5`Htd0v2Uc?vJQ zT*Clod9M!Grdx5u=w6Vlp8me8>ciD47xK#&OBu6y+3Jui$14YXF3m8*T;j~qNqnox z3*&qx%L4!0^U@(d2lNh1D>pRJ6Btct(iJnUwaC#;y@R0ccAB%t6pzf@)5J1oHLzHl zy&T%-d40j!&O+?Ab8wp{H{Ig4d^gA!?wzvON9+9Y-%w-dHQz|@jJU;$Z#;Oag_A8e z;(5m{dDxU+?KtLhhwYU#b7F8buU_uaPX2@1}6^Nq9Kx`NWDF8l7!L%(14u~Sd_<=*QDe(t|= zPkZv;HwU)%;s-DM@a-!nsPXcWUw(R1^NYXT^Glq5JYc`#F)w}2TVMIM7Bd8VO=JJ# z9p-!n9f>*6X1Mbet<-0|JS`1y=*ic~=61jhCa{AtqoB3YgDj0LZ+Zx<9`bzDwDZ_* z2NG~$2LCm-krkZ?b}vCS1Y&t~sJ0S1YIdg_20a znJuG*&wl#zp8yT0KnKdtLJ{rcV4-=m zs75!+(T;lm^rIjRsYpjk(vV_wd?ih(N>|EKl@_1@1t`EtEf>?8+VrM4&8bdz%F~|u z^rtt4X-#M9L!cV;kLP>rfodrE-gz_-Btt#E@&+~FFxxX3-Oa+Ay4zE$_{0`2OZc2hHV>fq#V|Ip0~X+b={n%XIL@(-cg*7+`}oH|4ziGUOk)Rl zK*Xs7lO5F^C0?ZNv#e)L>ss4- z)henIL@Gm^QGe#wzz#NNLertG1cwBb@e5{rE$n7HyV;NV4}kihm#?7aGT(`dwztjg zZhQMIbHPrrDTe_FOvEzSwu-vf&F*%)dnt7J&4VCB6qfV_DLl!yzW2@Vev7*t^mhMzH*v)nEd1@ zPkGAc@o|ZZ02w1EIW}fa^P1bd=Gv&o81y0nScp6vzzDj~hfZ{&3uEW^5J3n50029R C{S@>7 diff --git a/reference/curveTightness_/index.html b/reference/curveTightness_/index.html deleted file mode 100644 index 1f0405b..0000000 --- a/reference/curveTightness_/index.html +++ /dev/null @@ -1,166 +0,0 @@ ---- -layout: withcc -title: curveTightness() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    curveTightness()

    Examples
    example pic
    // White curve 
    -
    -noFill();
    -
    -stroke(255); 
    -
    -beginShape();
    -
    -curveVertex(10, 26);
    -
    -curveVertex(10, 26);
    -
    -curveVertex(83, 24);
    -
    -curveVertex(83, 61);
    -
    -curveVertex(25, 65); 
    -
    -curveVertex(25, 65);
    -
    -endShape();
    -
    -
    -
    -// Gray curve
    -
    -stroke(126); 
    -
    -curveTightness(3.5); 
    -
    -beginShape();
    -
    -curveVertex(10, 26);
    -
    -curveVertex(10, 26);
    -
    -curveVertex(83, 24);
    -
    -curveVertex(83, 61);
    -
    -curveVertex(25, 65); 
    -
    -curveVertex(25, 65);
    -
    -endShape();
    -
    - 
    -
    -// Black curve 
    -
    -stroke(0); 
    -
    -curveTightness(-2.5); 
    -
    -beginShape();
    -
    -curveVertex(10, 26);
    -
    -curveVertex(10, 26);
    -
    -curveVertex(83, 24);
    -
    -curveVertex(83, 61);
    -
    -curveVertex(25, 65); 
    -
    -curveVertex(25, 65);
    -
    -endShape();
    DescriptionModifies the quality of forms created with curve() and curveVertex(). The parameter squishy determines how the curve fits to the vertex points. The value 0.0 is the default value for squishy (this value defines the curves to be Catmull-Rom splines) and the value 1.0 connects all the points with straight lines. Values within the range -5.0 and 5.0 will deform the curves but will leave them recognizable and as values increase in magnitude, they will continue to deform.
    Syntax
    curveTightness(squishy)
    Parameters - - - - - - - - - -
    squishyfloat or int: amount of deformation from the original vertices
    UsageWeb & Application
    Relatedcurve()
    - - curveVertex()
    - diff --git a/reference/curveVertex_.gif b/reference/curveVertex_.gif deleted file mode 100644 index d095fd6ef2fa2ec60efcbfcc988c84f54c33c761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2400 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 - - - - Name - -

    curveVertex()

    - - - - - - - - - - Examples - -
    example pic
    noFill();
    -
    -beginShape();
    -
    -curveVertex(84,  91);
    -
    -curveVertex(84,  91);
    -
    -curveVertex(68,  19);
    -
    -curveVertex(21,  17);
    -
    -curveVertex(32, 100);
    -
    -curveVertex(32, 100);
    -
    -endShape();
    - - - - - - - - Description - - - - Specifies vertex coordinates for curves. This function may only be used between beginShape() and endShape() and only when there is no MODE parameter specified to beginShape(). The first and last points in a series of curveVertex() lines will be used to guide the beginning and end of a the curve. A minimum of four points is required to draw a tiny curve between the second and third points. Adding a fifth point with curveVertex() will draw the curve between the second, third, and fourth points. The curveVertex() function is an implementation of Catmull-Rom splines. Using the 3D version of requires rendering with P3D or OPENGL (see the Environment reference for more information). - - - - - - - - - - Syntax - -
    curveVertex(x, y) 
    -
    -curveVertex(x, y, z)
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xThe x-coordinate of the vertex, either a float or int
    yThe y-coordinate of the vertex, either a float or int
    zThe z-coordinate of the vertex, either a float or int
    - - - - - - - - Usage - - Application & Web - - - - - - - - - - Related - - curve()
    - - beginShape()
    - - endShape()
    - - vertex()
    - - bezierVertex()
    - - - - - - - diff --git a/reference/curve_.gif b/reference/curve_.gif deleted file mode 100644 index 240fc86d1139f2f800c5f32ae9151719cf030a14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2253 zcmV;;2r~CaNk%w1VT1sL0K@|NsA!lar*Rq}A2c@@4>ogM<3| z`pL=3b8~aEv$L$MtY>Fu>FMd_=H~M9@&Et;o12@8ii+9U+04w$;^N|be00PIBizsH*yxI zhL=8wQ^_)?(W6L{Dvi0bXGv~BBk1cu(ItngShH%~%C)Q4uVBN973-2>2YK24SRx@+ zBGr~x708`Sx31m0c=PJr%eQaet1Tt)O#7!*TdEQO#P!R#vE#>(?E*F{&nHk45QxH^ z>!EY!1)xKV9!C>oFt6qJYL*TQO)t=0ZSTX0$1acqQ&AYen-@t6v26vobL%Efy}I@5)k7bD9UCfhiOxC5jV>L#`Sa+hYj+JmaQ88nns0_Ky?pxn z`0<0@-u|p|_}{(toCozym*0U1s<#0DfA0OamV5&iNI-%VR_NP)>^1llfEqw39(@H` zD58iMa_3-t;LS&1h$FU$V2S;`_h5<A|R>YypNho`g6Cd7h5`Z8)QVAFf!R zkW5-fq>Lyc`J;_ZR$1JF85YT7hcqS$q?KS^h^2`}M(HDnONOcD5l^1jql#ayxn`SX zzFA|Ma;iz^mL5)tXP#j0=^d9+qG=zXfsPrYn}nXJ>aJ>HdtA(;6a9^o*dWq`)1-ydlY_MQ{FhP#SLRqb{x=Oq47nmL~!MEm7+vur( z>VR&#!?AmvySR2r?{)TO7cQguUb`=K{VK@dv6Loj>4XEDSMYH7Dx53B4fA{NzjeNQ z=du+O_popg7dmmr7CVVCpAzd!a=j)WEUw1Z#=Ej`A7AM*z$ptn^KUi(7BZ(g@7!C@ zV&0r_z%mQ%8_~V}3@^t@58ZN>FCz_g)Vndwo6{TXiZyRq@5Xh^SAVTT*leDRtjH>x zy#v}ij7=`ZZf89;nJBXzwApa$Aos#`OYN`Gc>|qv-F;v1_sD^(dokf_8(#L;i7T#l z!g?Rh_v2LKocZKfSH5`v+ir_~`KC{MT{?E7?;UmJmP3xYEN?&+p>P50`z%Z|G4 zjb8w}-?)zpc;Lem?|bfK*DiGO%6EQr&YJHGeeBW~p8D=WgF0>TFwd>@0^aA>di9Zt z8rp&9gU)8Q>}QLBXce}f8*85mV4D2=uc|+4mIF-yS)-ce8E;~&`Jes-u)qZ{@PQDF zpadtVKnE_cfuQ*x0avp?1BP#56b#`69Z13kny`c@ykH0|D8d%H5P}}GT5euQ!y4M~ zhB%bq0Affz=?p*sKMW!ehbY7%5^(@XOrjE($iyZZF^NQs;uEDv#Ud(^ho8%h6Sv64 zE_(5cU<{)Zu}C}r0*LX9XiTFTnb?2|F#mbx?nC`~{GWJ=SS+O(!Py{S%f%F~_t zw5LG*sZe>EfTG5rfoof^{&B*3azy{cBT%GIrUwX0zLs#wEH z*0GwEtSHTZTGz_fwz~DLaE+^6=StVQ#x<>W&8uGb%GbW4lmQt4tY8C6*ufgMu!udZ zViU{Q#X7dJkaa8r{>p<K2M-&8%iO%h}F)_OqbfEM-GW+R~c#w5J8kqNbNc51{t7 zu#GKgAHaYIp!5N_&8=>C%iG@i_P4+du5gFT+uA)r91_q^x@Z+X+p-uAXvF?buM?mR=^`r7xt_|30= z_sie@=9ezXW!~H*MBoA&_`nEGu!0v{U=PS8zz3WdgC|Vk3R@V#oq2G4&p99oU--iy z4zYnVOvc1~2s-2uv5HrGVb9D3Ikrle!cgqr8r%5BIL@(yH5{Y&IOH%@SxjVxOynXz zW-=No6I*D5q!SzY$xw!}Y6YXEKCDFpQfZEJ6f>4Cd-=;?4s%w@(jZ1*xh>$S%2L+M z<~A#(DV53C2U6meqPY3ac)s&aV3UoKY-!Ho$c$SM1Cl};`p}3@^q%?L=PjWm99iB< z2SO%I=}KGr(*96LpZz>2SAZiQ5s8PWM@{NdmwFyPakL1Kp$u%e`qi+GwXC)AlQCRb b1h4=HK7hgNUi - - - - Name - -

    curve()

    - - - - - - - - - - Examples - -
    example pic
    stroke(255, 102, 0);
    -
    -curve(5, 26, 5, 26, 73, 24, 73, 61);
    -
    -stroke(0); 
    -
    -curve(5, 26, 73, 24, 73, 61, 15, 65); 
    -
    -stroke(255, 102, 0);
    -
    -curve(73, 24, 73, 61, 15, 65, 15, 65);
    - - - - - - - - Description - - - - Draws a curved line on the screen. The first and second parameters specify the first anchor point and the last two parameters specify the second anchor. The middle parameters specify the points for defining the shape of the curve. Longer curves can be created by putting a series of curve() functions together. An additional function called curveTightness() provides control for the visual quality of the curve. The curve() function is an implementation of Catmull-Rom splines. Using the 3D version of requires rendering with P3D or OPENGL (see the Environment reference for more information). - - - - - - - - - - Syntax - -
    curve(x1, y1, x2, y2, x3, y3, x4, y4);
    -
    -curve(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4);
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    x1, y1, z1int or float: coordinates for the first anchor
    x2, y2, z2int or float: coordinates for the first point
    x3, y3, z3int or float: coordinates for the second point
    x4, y4, z4int or float: coordinates for the second anchor
    - - - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - curveVertex()
    - - bezier()
    - - - - - diff --git a/reference/day_/index.html b/reference/day_/index.html deleted file mode 100644 index e5bda3a..0000000 --- a/reference/day_/index.html +++ /dev/null @@ -1,146 +0,0 @@ ---- -layout: withcc -title: day() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    day()

    Examples
    void setup() {
    -
    -  PFont metaBold;
    -
    -  metaBold = loadFont("fonts/Meta-Bold.ttf"); 
    -
    -  setFont(metaBold, 44); 
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  int d = day();    // Values from 1 - 31
    -
    -  int m = month();  // Values from 1 - 12
    -
    -  int y = year();   // 2003, 2004, 2005, etc.
    -
    -  String s = String.valueOf(d);
    -
    -  text(s, 10, 28);
    -
    -  s = String.valueOf(m);
    -
    -  text(s, 10, 56); 
    -
    -  s = String.valueOf(y);
    -
    -  text(s, 10, 84);
    -
    -}
    DescriptionProcessing communicates with the clock on your computer. The day() function returns the current day as a value from 1 - 31.
    Syntax
    day()
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - millis()
    - - second()
    - - minute()
    - - hour()
    - - day()
    - - month()
    - - year() - -
    - diff --git a/reference/decrement/index.html b/reference/decrement/index.html deleted file mode 100644 index 54bf65f..0000000 --- a/reference/decrement/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: withcc -title: -- (decrement) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    -- (decrement)

    Examples
    int a = 5;    // Sets "a" to 5 
    -
    -int b = a--;  // Sets "b" to 5, then decrements "a" to 4
    -
    -int c = a;    // Sets "c" to 4
    DescriptionSubstracts the value of an integer variable by 1. Equivalent to the operation i = i - 1. If the value of the variable i is five, then the expression i-- decreases the value of i to 4.
    Syntax
    var--
    Parameters - - - - - - - - - -
    varint
    UsageWeb & Application
    Related- (minus)
    - - -= (subtract assign)
    - - ++ (increment)
    - diff --git a/reference/default/index.html b/reference/default/index.html deleted file mode 100644 index ac18563..0000000 --- a/reference/default/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: withcc -title: default | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    default

    Examples
    char letter = 'F';
    -
    -
    -
    -switch(letter) {
    -
    -  case 'A': 
    -
    -    println("Alpha");  // Does not execute
    -
    -    break;
    -
    -  case 'B': 
    -
    -    println("Bravo");  // Does not execute
    -
    -    break;
    -
    -  default:
    -
    -    println("Zulu");   // Prints "Zulu"
    -
    -    break;
    -
    -}
    DescriptionKeyword for defining the default condition of a switch(). If none of the case labels match the switch() parameter, the statement(s) after the default syntax are executed. Switch structures don't require a default.
    Syntax
    default: statements
    Parameters - - - - - - - - - -
    statementsone or more valid statements to be executed
    UsageWeb & Application
    Relatedswitch()
    - - break
    - - case
    - - - - - diff --git a/reference/degrees_/index.html b/reference/degrees_/index.html deleted file mode 100644 index 4de608f..0000000 --- a/reference/degrees_/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: withcc -title: degrees() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    degrees()

    Examples
    float rad = PI/4;
    -
    -float deg = degrees(rad);
    -
    -println(rad + " radians is " + deg + " degrees");
    DescriptionConverts a radian measurement to its corresponding value in degrees. Radians and degrees are two ways of measuring the same thing. There are 360 degrees in a circle and 2*PI radians in a circle. For example, 90° = PI/2 = 1.5707964. All trigonometric methods in Processing require their parameters to be specified in radians.
    Syntax
    degrees(angle)
    Parameters - - - - - - - - - - - -
    angleint or float
    UsageWeb & Application
    Relatedradians()
    - - - diff --git a/reference/directionalLight_.jpg b/reference/directionalLight_.jpg deleted file mode 100644 index 5227afb4347416fcded0c4ac5151ea8b025750ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2634 zcmb_ddpuOz9$$O!nK6wym{1*Z8Y-2p8dL{8j5kGjlX5b~93+osJj*LeT_s6+P)0d>)_}_%l6&0RnIU07s~Li_%T?^^aIs9WXLAGXw|%07}y}&@)7(0Pynm zV_O;PQ5_CCQpK780btMz3WLe|Uv*a&hY0{egV-a`&ll>En-I&mcnWcz0JCkZ^r5~AVhJ}9ZWCY^5grs^Hv9-^ z^HE^$Cd4RFfL%m*wE+9Ef&_7azK?G(+r!P>kE*7nrA5_s^>JZQt%Es!EH4h#)SKzU z_Vr;i{8+H2K$M@r3rOnw9P?qDGyItDR9H5l?*G~d)8#cQ@LMnd@|{aMB@+NB>jB88^2dR)ut31I0>(rzAdABY zq#q#1GWf#U6CoeTgx?KL!|k;oCKhl;t>@qNS9s5}vMhJYP@R zf^jPTcC)&b3p;W-q(qna0H7fhMY;uWW-OOR019w;3??axhX4vqQB7BhYRNbb3FsF2 ze>P7H{KbC_$dCc0U=+9*U-%$mAvSR1jAf?ndJ>}a?holWX8?YF@>hD=p$8nFEe+{u zM>K+)oK&}`0)o$$l9=?8q8;Ns-Sve5VWAUzaN(;A0E4C4_dQ~Ud%8-H(}^|o#czQCekl>w0>Pu7JkH0*u^b8TYX16k2c+F zn3DFa%-24$OtwE;EW9<>tKIXN{pQ5FA!bR|!?{q0x*>M);jGZRN<(uJSuBWi!tcsz zcW4Y2a_zKeroZf+v`-jU7#%b}zH`;#+)IZXd^a$rLoPf~7?$MjXlQ8Vg$r{*g}EHZ zDNZEF2c=q?){t4%o3;B-8Ok)BzdRO6l(96cFFY#f_i4MTSoNSe`F0bNy-f}qE}^eqsHQ+S261T{d~JgC7Cv) zIq!G}>Idp<17fXcm1N880e3kGX=RnLJ!-r^M5&WGWMz}z*n-p7tt2fkc6s;Pt{u1;yLi_jP*$=zvC3jM5v3y#y2 zH|cZEug`2TdpaI+a)0F9Pn&{2W-@BQz08aHB|i?Tl(arV zT8>4T_ziePKTK+=+g-EgdEuGDGmka~Bv*vo9J%9Yc;|$%xJ=&m26VKi;EMX$y3Wa6 zGYPu}yVuCQEJ)2R_{GV++)R8W*|}(c$$HPk=JtBM?SI~}eo@5hZQA{S*rAePBk5mW z8+#(twmZDw+l~?DUg1!lo;6|O9Eq6S*8FX9SYw4-h~1Vc7nN%}4fEfCcW)i-J0-CD zJFa_H&utJbpU|&_DMb~hIiz1alEz~cRob@aX!PN#PvjCLf~F}Ch|$rYlB{<2b>(^) zdZ+kdkSh$jbUDEP`+^uhhIfTr4*Y|8!t+M){{n!j2SomwWB@c(D**Uv0d2z~790fq zn#J-<&8FJLGE{!{EBo+9r>dB)BYP#pY~(#%&w88QDe@Hi#ejG0T~2cwG1j%eWmD#* z#GFL*jBcB;hxx{R)|{PIQ7*3jT~=rp`?joUQXU~at83%gUhVxi!NZ3)Tbku&lPk?g zs%7|kt&?=^SE20^-kUnoS~Q-KS6FZ}!-{7If}G?mQ;eU48xp2w^^#6BWHv|KYm}d~ zy&O5^e)`o>%T#&NP!nAt!!<9E{@G1@`^Q_Tk=~{U=W11yah2mYG7>hQj1P?~A;~&f z*pPUJFP(DjTB=v9GzswaOo_Ga=%+E6pYbzS?(y;?91~MTbtJ;89MO@QE!AY64}5Kn z*IavhjI4_>T^~EEllwIv$DLX3WjK>Hf1GJm z-ZwKpQ?*(*`8N2JvXYQBgAftgk%8V|e0H^(|_Q K`kv?fuD=0;b#nUv diff --git a/reference/directionalLight_/index.html b/reference/directionalLight_/index.html deleted file mode 100644 index fac2b22..0000000 --- a/reference/directionalLight_/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: withcc -title: directionalLight() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    directionalLight()

    Examples
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -directionalLight(51, 102, 126, -1, 0, 0);
    -translate(20, 50, 0);
    -sphere(30);
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -directionalLight(51, 102, 126, -1, 0, 0);
    -translate(20, 50, 0);
    -sphere(30);
    Description

    Adds a directional light. Directional light comes from one direction and is stronger when hitting a surface squarely and weaker if it hits at a a gentle angle. - After hitting a surface, a directional lights scatters in all directions. Lights need to be included in the draw() to remain persistent in a looping program. - Placing them in the setup() of a looping program will cause them to only have an effect the first time through the loop. - The affect of the v1, v2, and v3 parameters is determined by the current color mode. - The nx, ny, and nz parameters specify the direction the light is facing. - For example, setting ny to -1 will cause the geometry to be lit from below (the light is facing directly upward).

    Syntax
    directionalLight(v1,v2,v3,nx,ny,nz)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - -
    v1int or float: red or hue value
    v2int or float: green or hue value
    v3 int or float: green or hue value
    nxint or float: direction along the x axis
    nyint or float: direction along the y axis
    nzint or float: direction along the z axis
    ReturnsNone
    UsageWeb & Application
    Relatedlights()
    - ambientLight()
    - pointLight_()
    - spotLight()
    diff --git a/reference/directionalLight_2.jpg b/reference/directionalLight_2.jpg deleted file mode 100644 index d8a762f7c12b5d8fa9320e38ab461c4a99a2415d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2325 zcmb_dc~n!!9-ez|61GZn0Yw8G19d|M6P{whg(W1EC9*`@2o-?@StT(f2tCRJuPo_;LW?%>cMj$a@fAP4{`!^_8; zjZy*Fn=F-t`g+s(JHzNkU4Q~GXax}^ND*^+ob3cp7A40J&vyWQyu1x#K>XrF_!?x*Vf9pW(gTdj;-Z%YqpO?*t638T} zZ)OP60l@#7&-=(u1b_qkO>v!-Hn0ES`^a3B%D$a)wNFrEWp4YkP_ zMm8do$nUJosr)t3{RD7h;x=Fi4p1Dya71?nbi!t$C`KIqw?HWfMj{&aJQBJ1-rff``vy4q!$ z)ePj;^b7#adk4c)FGvIH+n0!&w(fqOp$6uAA~K2xryZ3xwlCUEBYKib@cniDZsy+3_t=w*pHK>W)&?0&QIz6=K61)6_#r0u?sC8VwA$-Y z&c6+nBTzPB$IY3sJABc4O`c#W3H+Ec*KT5$~bz>;@E67uRdrq5DCaBeynLpYPvP*6_@jN+0~} z>g%(L?~;>B6G~5y)mm}2fBeKhnKNv=?A3wum(tCDe!Vm{=$X-vyt5^7{R6rEsVv1b zPxDVhei-6mKd})FX6$}(F<>K$;-ZF?Bs(b!FDif&ukD+@V%qrEF& zcKe0}Y&P5X;K>o?(@UynuR2=Y6WNWRu{@PSc_EeXl@p{emBb(RsmCM8plL>(# zTMB7~`Jv-S4&QA&r^s9vQK0Ae?6U=h9n%+R_$hKI$wJ86{F;{+X9v{WLXql&Q6s@s& z(AkqiGXDPPjmTW|DqTJBv3ix2aX>=${x3Gyw|=_Ay=_L0iKKt-(6v@0i>fh|Exzo(_I`%rD(lvau&y)Aj$_)R zB09$(w`UiX91CzFw>t&+o8)@(56PFz?E!UyVH*@(hIcRcgjTmg(VJ5Js%4#QOWT*e zDj#7*nfx#<;WuSOv+ahYC8-DN9;-I?m3-^pu=4%1ug)%c;{TzT!BsIM@@9kM9{2F4 z+6v}&j5^^Oz#Kl&G|S3pvFXfDSfi;f3ukjGl%p#fr|;1AgydDtn7nd7{#jRK`~Z7# zpnOaRZd6bDHfyI{_{A-^^Yb~XQ9)ekFs^db?hNj4+42whrG?oJq@PK%1Mqm?{V!ca B#U20v diff --git a/reference/directional_ambient_.jpg b/reference/directional_ambient_.jpg deleted file mode 100644 index f184ca84ab7a1092996db6ab9a13037f4f617c7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3171 zcmb_edpuOz9$$OU3`43Jk5Z0|@hb0B@|bF7NX9|luaw8kAR5LP#ijcZkhCpp|JOpW4nl|X&p+qaXhmBYiXO@d z`&@&d`vCm6`ihVE007L8e2eI>Xm&~fT!{ccZeT?tngf7W0ic$^e+^WZ69gDMWK0MJ zWY8!P@znreDgY1@1wi}-01{sOA&`i?US9ws1cs3kDTF}5C7664=hNuA8uMqS` ztT8AQMihg_eADvPUF`*>{qtJLo43OL^C4wVR zhAoSez2aYvlz<#leeXB{UJh=qc zm;s>n)Y0xXJ+P&H5$Io{0PnG%wb-O>h zV3S{<`p_ZDQPpnV1qjE9c zhPrxb@tbX>66vz-+-O7n7s+cjxhlHYY3ddID82Eiee3W$4Nac5p`p3gfetByext#_ z%ZFmj_jGMPAN0^sHOtU0tv|qZO<{Xnse7K^Nj~Tif21(6(W-IkamnnH3o;dhuZFZW z93Bo>j(L4nlB8oq0RAC02K1!a@nHVNqOfXr1W{%gHwIX_niQ@p?Y^5UakG zy(VCHjW4efX0@6YXf)=U4b`Ed=VeZhm`L7gQpGV(W)azGrTesfnZMhrn~iqJj6e6; zMOov9yPN)_GE+}n{3m%e`^BBhbB6_UpD$bHsBbt7i|m272;~(DL5RBeT2)O7Z(p}9 zt4`A)*mi8p6Evyv+^6lmZ=Skm1g|Z>aKkTxJ*Kxy$`rxV!$^ z$&!#^bWGgt*PX#1TqMSa&4+rD6iZ2c^H($jO=1(M8l|-C-i*9pELQAf*>EG-qB>dQ zu<~!GG)mRP9?ktV+ZaFAm$8Y?Y~C1q{H$z(n@9M>RcpOfV-@&Mh|MCm8I60t?e7UZ zk?p>H!8JHTb$ep@+L~)gihef5XpLkeAD?Ye1v_)>mTZ-^%rwg9I1csR*q=go5ERIJ6-)pVM$|${gIh|JZDQYoe3H|A(t4kGppcOnIFE?F% zw)5^##*EIphRW{e(h56^Jx}|$G@_;dl+TfvbhR)uA{JVf*%VAb?;q^@l@h63eL1^K zd^*?mkY!GvT~=p$5~kSC<$0D0trqPsh&3FQnyskk#0Mm%lzhjpkz#xxZiaEd z&RNcG!&*L<{NRbYfA}qxz9^4(S^sW07j+K8hC#Smxq- zqwQFhYUzUsWHZRsv4H97P%8%giI z$J>T%%Z+<_#KfznXUgi$Q_j!0e#oi1YViE9y|Vcc1IXOw`%0TC>7WH;;f8~P_9%X= z_o!Lzs2+QgCk?SPZ@=SEjMg1@!gkL29|$F5Ek_JQ!5 zL7C?$w2Ky2l~o+$GjmiDdEYImevkI|Z+lxOTV0^!+>nGA+gT`iF54j23Co1j6P$aU z|JuDvF}#f-Qs3Y$>axq@PJnl_tT$KV{e?~GIv?ujw20 zA7lQImCcwM)|ak`>>U~TLG9x4L1MylHGhfCs+WH}NVdbKS|Z&G2N^{>p6*x5=nq?E zs_*D@w#@B5FZYTrT(t86sUS0DXuL(mpPuGMe7F$+oa)N|^ zvKMY=U-`-jg-oG~89 z?$YWQb&wo4CCSCahG_w8yqR`&jy^k2XQ|Iu#ZVPh-SH6^UWACGp6Q^eCjG9c29Z>VOS!%69|oXD(Dzms|Iv0^@Z=U-5xE+Sr)! zK%qpN?rY$X#j-n>jB+m-916|S{%)@ENJjprkfZk<5B^-mQwcl1SkQzSMlA1-9O zt^ISuLui|6(W>2BPT`8zn)W}+3PIy}>XGC)=U=TV&TSIf-Yd+$rT01~D8zrHhU|uCWmGbwP38EU17#{U_G%HM;-+ diff --git a/reference/dist_/index.html b/reference/dist_/index.html deleted file mode 100644 index b16f46f..0000000 --- a/reference/dist_/index.html +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: withcc -title: dist() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    dist()

    Examples
    // Sets the background gray value based on
    -
    -// the distance of the mouse from the center
    -
    -void draw() 
    -
    -{ 
    -
    -  float d = dist(50, 50, mouseX, mouseY);
    -
    -  fill(d*4);
    -
    -  rect(0, 0, 99, 99);
    -
    -}
    DescriptionCalculates the distance between two points.
    Syntax
    dist(x1, y1, x2,y2)

    - -
    dist(x1, y1, z1, x2,y2, z2)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    x1int or float: x-coordinate of the first point
    y1int or float: y-coordinate of the first point
    z1int or float: z-coordinate of the first point
    x2int or float: x-coordinate of the second point
    y2int or float: y-coordinate of the second point
    z2int or float: z-coordinate of the second point
    ReturnsFloat
    UsageWeb & Application
    - diff --git a/reference/divide assign/index.html b/reference/divide assign/index.html deleted file mode 100644 index 416a8be..0000000 --- a/reference/divide assign/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: withcc -title: /= (divide assign) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    /= (divide assign)

    Examples
    int a = 12;
    -
    -int b = 3;
    -
    -a /= b; // sets "a" to 4
    DescriptionCombines division with assignment. The expression a /= b is equivalent to a = a / b.
    Syntax
    value1 /= value2
    Parameters - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2any numerical value the same datatype as value1
    UsageWeb & Application
    Related= (assign)
    - - / (divide)
    - - - diff --git a/reference/divide/index.html b/reference/divide/index.html deleted file mode 100644 index d7f3efe..0000000 --- a/reference/divide/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: withcc -title: / (divide) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    / (divide)

    Examples
    int g = 50 / 5;  // Sets g 10
    -
    -int h = g / 5;   // Sets h 2
    DescriptionDivides the value of the second parameter by the value of the first parameter. The answer to the equation 20 / 4 is 5. The number 20 is the sum of 4 of the number 5. As an equation we see that 4 + 4 + 4 + 4 + 4 = 20.
    Syntax
    value1 / value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float, but not zero (it is not possible divide by zero)
    UsageWeb & Application
    Related* (multiply)
    - - % (modulo)
    - diff --git a/reference/doc comment/index.html b/reference/doc comment/index.html deleted file mode 100644 index be647ca..0000000 --- a/reference/doc comment/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: withcc -title: /** */ (doc comment) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    /** */ (doc comment)

    Examples
    /**
    -
    -   Draws two lines which divides the window 
    -
    -   into four quadrants. First draws a horizontal
    -
    -   line and then the vertical line 
    -
    -*/ 
    -
    -line(0, 50, 100, 50);
    -
    -line(50, 0, 50, 100);
    DescriptionExplanatory notes embedded within the code and written to the "index.html" file created when the code is exported. Doc comments (documentation comments) are used for sharing a description of your sketch when the program is exported. Export the code by hitting the "Export" button on the Toolbar.
    Syntax
    /**
    -
    -  comment
    -
    -*/
    Parameters - - - - - - - - - -
    commentany sequence of characters
    UsageWeb & Application
    Related// (comment) - -
    /* */ (multiline comment)
    - diff --git a/reference/dot/index.html b/reference/dot/index.html deleted file mode 100644 index d86bcb3..0000000 --- a/reference/dot/index.html +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: withcc -title: . (dot) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    . (dot)

    Examples
    // Declare and contruct two objects (h1, h2) from the class HLine
    -
    -HLine h1 = new HLine(20, 1.0);
    -
    -HLine h2 = new HLine(50, 5.0); 
    -
    - 
    -
    -void setup() { 
    -
    -  size(200, 200); 
    -
    -} 
    -
    - 
    -
    -void draw() {
    -
    -  if(h2.speed > 1.0) {
    -
    -    h2.speed -= 0.01;
    -
    -  } 
    -
    -  h1.update(); 
    -
    -  h2.update();  
    -
    -} 
    -
    - 
    -
    -class HLine { 
    -
    -  float ypos, speed; 
    -
    -  HLine (float y, float s) {  
    -
    -    ypos = y; 
    -
    -    speed = s; 
    -
    -  } 
    -
    -  void update() { 
    -
    -    ypos += speed; 
    -
    -    if (ypos > width) { 
    -
    -      ypos = 0; 
    -
    -    } 
    -
    -    line(0, ypos, width, ypos); 
    -
    -  } 
    -
    -}
    DescriptionProvides access to an object's methods and data. An object is an instance of a class and contains is a grouping of methods (object functions) and data (object variables and constants). The dot operator directs the program to the information encapsulated within an object.
    Syntax
    object.method()object.data
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    objectthe object you want to access
    method()method encapsulated in the object
    datavariable or constant encapsulated in the object
    UsageWeb & Application
    RelatedObject
    - diff --git a/reference/double/index.html b/reference/double/index.html deleted file mode 100644 index 0845bcd..0000000 --- a/reference/double/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: withcc -title: double | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    double

    Examples
    double a;            // Declare variable "a" of type float
    -
    -a = 1.5387;          // Assign "a" the value 1.5387
    -
    -double b = -2.984;   // Declare variable "b" and assign it the value -2.984
    -
    -double c = a + b;    // Declare variable "c" and assign it the sum of "a" and "b"
    -
    -float f = (float)c;  // Converts the value of "c" from a double to a float
    DescriptionDatatype for floating-point numbers larger than those that can be stored in a float. A float is a 32-bit values that can be as large as 3.40282347E+38 and as low as -3.40282347E+38. A double can be used similarly to a float, but can have a greater magnitude because it's a 64-bit number. Processing functions don't use this datatype, so while they work in the language, you'll usually have to convert to a float using the (float) syntax before passing into a function.
    Syntax
    double var
    -
    -double var = value
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    varvariable name referencing the float
    valueany floating-point value
    UsageWeb & Application
    Relatedfloat
    - - - diff --git a/reference/draw_/index.html b/reference/draw_/index.html deleted file mode 100644 index 85c3de1..0000000 --- a/reference/draw_/index.html +++ /dev/null @@ -1,156 +0,0 @@ ---- -layout: withcc -title: draw() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    draw()

    Examples
    float yPos = 0.0; 
    -
    -
    -
    -void setup() { 
    -
    -  size(200, 200); 
    -
    -  frameRate(30);
    -
    -} 
    -
    - 
    -
    -void draw() { 
    -
    -  background(204);
    -
    -  yPos = yPos - 1.0;
    -
    -  if(yPos  0) {
    -
    -    yPos = height;
    -
    -  }
    -
    -  line(0, yPos, width, yPos);
    -
    -}

    void setup() {
    -
    -  size(200, 200);
    -
    -}
    -
    -
    -
    -void draw() { }
    -
    -
    -
    -void mousePressed() {
    -
    -  line(mouseX, 10, mouseX, 90);
    -
    -}
    DescriptionCalled directly after setup() and continuously executes the lines of code contained inside its block until the program is stopped or noLoop() is called. The draw() function is called automatically and should never be called explicitly. It should always be controlled with noLoop(), redraw() and loop(). After noLoop() stops the code in draw() from executing, redraw() causes the code inside draw() to execute once and loop() will causes the code inside draw() to execute continuously again. The number of times draw() executes in each second may be controlled with the delay() and frameRate() functions. There can only be one draw() function for each sketch and draw() must exist if you want the code to run continuously or to process events such as mousePressed(). Sometimes, you might have an empty call to draw() in your program as shown in the above example.
    Syntax
    draw() {
    -
    -  statements
    -
    -}
    Parameters - - - - - - - - - - - -
    statementsA sequence of statements
    ReturnsNone
    UsageWeb & Application
    Relatedsetup() - -
    loop() - -
    noLoop()
    - diff --git a/reference/ellipseMode_.gif b/reference/ellipseMode_.gif deleted file mode 100644 index 8d60690fd716be31bd91e208dd3eff2385723e33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2432 zcmV-`34iuSNk%w1VT1sL0K@FMU?=JN9L+1c5%v$Kkdima@x;^N|be0-amo6^$K`1ttj?CkXP^!@$) z_V)Jg@9+Qr|Nj2|A^8LV00000EC2ui0E7U9000I5AaIQ&Ih<&!u59bRa4gGZEdqEh znse{}z@X2j!;Mmq0c6Q+I-k&}bV{vSuT53ymP0ZH5U^lOE}PHjw0g~MyVqf7YTH#V z(Ufssu>0_ukEz4mugKvY`1$(#{Qds_00RmfI4~SCcw$2J-6N%eSxJzkmY^9!!{USE)MT?z#FC>oFt6t5zwd>cgW4Fezw(ZWiBu{32pdoZ#(jS5s8BV;o@#Dyo zD_@@400s@1-ECH=n>W|r8-i%3sIUB$Uh@P@s+o9=V~C@iE!unp`poW^z)#cwUc4 z{+K0rYO<+kgKoZAT%0>rY2Ar-zL)2oh_)AipCF1!VUbjpXeFU3eiuNZnDV(Oqd5Rt zCY@*Ax!k3hmdf6yoO)^`s91VOs;Q=;>Zhuan%OFMufiH@s*Z{%Cy$f*SgCTk>bmQ! zy}B5vq=O1uBXY$Wdn}l=&KYd~ox>g%t+dk$SuL>5V*9Ld+j5(!tU-P&XnNwJNv^r( zqHCkN%(5G5a^=E{sk|%FYips<>MJe3EGA3ls@LADt-#z8?4iG`0{kw+#yZ>~#0lS8 zT)q@1YB7WuhpX_$9S`iS!H`-jvc|-5T(X`Y9y72`Mm7EQg2OlmrgRE_S$TJ zDf5^qgPU~OI&dv8lWga$_u739DfXusD{c1Kc<*hv-hE&FH^M6mUN_Z+A1-;`U^fak z&2mSr_2XSn?m6O>>wvZYv+hp)asZ#FPC0y|w=1gY6r-;C>}rP&K;pG%Jp)!FKfUq|U*CN8(ATVa=@VD){rB^Q zpLy2g>u&z}y*sV_=I$2_fAR9G4>bF)FKqw)_zTnJepavX^-o*cNuUB3$UFe1&S>*% zAGAnA!3t8afew72aw2#@Xh8;p8T1^_IB2K<5C()Hl-vmQS3v%yDF97DVG0em!U2v= zdi3iKlVl>p8SX7+Bn*&~DAGe8t`0dtgwWTFs5&6BkZd^=P!X9}J2*WNhZ20y6shP$ z8v?Fz+mj*{Ki9?oM`3P%r0bv<$Ed;$UNLZC6e1hjXhknFZf@<7jUH9AMI#14k9Le6 z9NF`MJsQ$9ee~fUU$cM%EFh5L9O$0TGA*HI3pI-g^IlZNcE~tO{(j#%GIt)HFDmws#me9 z)ld<@0%uJtTGy)9wzBoDZjCEj!5Y5+$n~ypC4gQDP*yDM^{;>ptY8OASi#bjjCL)o zVg=h*J1zFHkX>xr4(FuEE>;2rz-(h1B!SL)_OqZ3t!PI}+R}c_Nu^D#YCF5x_N?}` zu#K&3XB*lAw3a;ukU(yCtJ~i4_P4$bE^vn{+~N}VxW-NHa0|fP+j@Yx(2cHir%T=H zTKBsD*v+nXuY21M6rcj%4KH}dE8g;w_q^s!FM8Lj-uANhz3z2x1?EfN`r7xt_|30= z_sie@`d7c*{jY!rOyB|=xB|{aKm`=c-~~Il!4Q71gdjJx8i8xC{>GS0D%ckE&YAbl%q`LDOynJUKCw`OJEwv9i7x z(j{B)&2WyhoaapEI@|fpdOT$UQ6aOI@-}(bYquX`})|(PPU+*W1suvK`s|)NOgDvnzUH^+Styvw!g9# zRA+{O(WXmdv@#T^nETx5PPe*=!WP>|XIU382}*WD?VH&9-uTY9zERy4x4gS2k&1Uc zJOh!A82sP}Pq@M-@{zajghVA_h_vrPkcwOU;uz1kJ`AE6ksxRoe31Az+ClP?oBZS` ye+N%K4)TyoT-w!$xy)xybDCcR;M!0HD_s6^UikdyKo5G*eUS}l4+8)p0028$RPQPP diff --git a/reference/ellipseMode_/index.html b/reference/ellipseMode_/index.html deleted file mode 100644 index 41b9ba8..0000000 --- a/reference/ellipseMode_/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: withcc -title: ellipseMode() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    ellipseMode()

    Examples
    example pic
    ellipseMode(CENTER);
    -
    -ellipse(35, 35, 50, 50);
    -
    -ellipseMode(CORNER);
    -
    -fill(102);
    -
    -ellipse(35, 35, 50, 50);
    DescriptionThe origin of the ellipse is modified by the ellipseMode() function. The default configuration is ellipseMode(CENTER), which specifies the location of the ellipse as the center of the shape. The RADIUS mode is the same, but the width and height parameters to ellipse() specify the radius of the ellipse, rather than the diameter. The CORNER mode draws the shape from the upper-left corner of its bounding box. The CORNERS mode uses the four parameters to ellipse() to set two opposing corners of the ellipse's bounding box. The parameter must be written in "ALL CAPS" because Processing is a case sensitive language.
    Syntax
    ellipseMode(MODE)
    Parameters - - - - - - - - - -
    MODEEither CENTER, RADIUS, CORNER, or CORNERS.
    UsageWeb & Application
    Relatedellipse()
    - diff --git a/reference/ellipse_.gif b/reference/ellipse_.gif deleted file mode 100644 index 494a89808c5ed2d653287f8dd3f2959727e81222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2406 zcmV-s37PgsNk%w1VT1sL0K@FL74!utC9gM)+e^76a8 zyUEGPb8~az;^Jp#XRNHO=H}+Jv$NUR*#H0lo12@8ii-I7`0VWLe0+S;($f9?{q*$o z_V)Jg@9+Qr|Nj2|A^8LV00000EC2ui0E7U9000I5AdrnDDV%7ku59bRa4gGZEdqEh znse{}z@X2j!;MlBfn>>SI-k&}bV{vSuT53ymP0ZF5^!KlE}PHjw0g~MyVqf7YTH#V z(T#CFu=((enPjQM-4Mv(9r^nE{Qds_00RmfNRVJSWbiPJL7~dny$kvh zNSsKqqQ#3CGiuz(v13Pl;1DWY7;HoXZ{YI(P29k;rOTHvW6GRKv!>0PH7Di^nUG}3 zlLb<)+`yrz(W6L{DqYI7sne%WowC#!vcO1f8SDk^Adw{p3t+>F9ZR;X*|TWVs$IL5 z!_)*F+*#X$)gDByEWsYw%eSxJzkmY^9!$8fVZ&gj?wq?Pm0hk0Ht0P}xw7TUnExi0 z7?&~05kVnF{>oQ_Y10c*t6t5zwd>cgW6PdR8@2_vaCy=#xwWf>(xyKMFG9Sy@#Dyo zD__o>^#KbTIJ@iRGed8pzYhc#KAgGt@8H9KSN$A!XX;=kT_>$w!v_!WJ&2!AzrJ_! zx1*om9c+De_wU7L-+%-bm|A)IO~;@Ab)sRn7l84}SKx#cj<*1Uxy|*9dJVD%p@0>J zC}MF3=9eLQ+W7aNa1oB^qKhS(r{ISDb@(5PAik*MgfS+lVR|*<unm^KcrJZEzsVAQ(a`MHMx{rdZ_l-nvvX}stXZ1BUiBJ5?Fp?=%&hy_D@ zaF=pYEbWjNhnTU(8#kBmoF9(~YlS0|yzadwPaLhcAVbQs%Ot~m=E)w@tn#rp;|#IR z$pvh&%@ejP^vn10JTtL1uUw$gON&eNaYjcC^wd@79COD{pNlksRCkT-)o{w(E!01E zO19Zv@2qyC`VP!B+(R#yb=xB2owwXzuPwIJ_Lc3ovS=5v_o!PBX!zmT7VWg)43Awn z?w2@0)b$ssj!!<#nI_Iqc)E-n!kW<9_Yx ztdqWQ?UvW~IPSpjZhPU}HShfM&_^%*^dBTIyr#qxZv1K7ckli8;D;~12G-9#yy?Z$ zH$i6X7gm1Yr5~-m@$J|D7x2NGk3IVHs~^?>089%0l$So^;pBh_bP4|Q2fy>luW@Aa zhy*7{kp&X4f5t0_1~-_G1u}4U@za{;rq+%Ume7M2gdhn`$ij1Y@Pph6A>Ujyfoj;0 z8ZS)Y2$RN(9_HeOFjUz79=OA#mEwq?0AdhP<}=25pf*r^%>?qGkSbE~ihRJL6|>02 zDo!AZtGS^I5G*4e552JNl8fxa*=#gfFarDL-RUN8Yvp7NETRDdiuIXL*p@|L*Fr7m~L%Uw>O2EYuaFiFtLUK(?kw5(iwj>*hs z`cjF+F_klo836@EAOgwE9(=CJ&2D=0o8SzmI3p0O@SJL#=oDu*`M1qos7Ot!QkQyEpR(x#OpU5kr%KhT_H?FWY})`Ru+^?|^{ZYDD_F-W z*0PfItY%FsTGv|E0l3wvPI9YU=StVQ+V!q@&8uGb%GbQY^-g^atY8OASix3c0Ehi+ zget(;#ya+~kd3TlCrjDNTK2M&Rcw4P%h}F)_OqZxfM(%?fC`lMw5ClhYFDe;*0T1s zu8l2hXDi#r4X=2|OWyLD_q^y$uX@d!-1WNmz3`2%d@-O~24KLx_`R=w z^UL4;`nSIT{;z-oOyB_{I|z@6d=&w4xWy=sXje&%KG` zOm^C1=tf)m(wJuSY4`#i>4Z%v#iBHvM@{Ndo0@x^mQk7*@)+Mt+J3N(wXC1h=?qzA zHzRlqUL^DCS^N6eh=GoN_LGOY+ygRRVT-bt&Fp47dn|5=j;+_0fd)JTGLa!l0JqKU zZhJc^Z^?~<7F2DN++`>UOt-q%&F+`zBrenG1-Ts(nut*F-uTY9zA*w4xyZXpCNYLq z@WH`?8~or1|HnbBA#ZYXL*U - - - - Name - -

    ellipse()

    - - - - - - - - Examples - - - -
    example pic
    ellipse(56, 46, 55, 55);
    - - - - - - - - Description - - Draws an ellipse (oval) in the display window. An ellipse with an equal width and height is a circle. The first two parameters set the location, the third sets the width, and the fourth sets the height. The origin may be changed with the ellipseMode() function. - - - - - - - - - - Syntax - -
    ellipse(x, y, width, height)
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint or float: x-coordinate of the ellipse
    yint or float: y-coordinate of the ellipse
    widthint or float: width of the ellipse
    heightint or float: height of the ellipse
    - - - - - - - - - - Returns - - None - - - - - - - - Usage - - - - Web & Application - - - - - - - - Related - - ellipseMode()
    - - - - - - - diff --git a/reference/else.gif b/reference/else.gif deleted file mode 100644 index 9b04fe7989322c931259096e4f71eb01d615a614..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2171 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 b04%_P4`5jO(wNS)rU!lHF`yU+Apih7@tc`N diff --git a/reference/else_/index.html b/reference/else_/index.html deleted file mode 100644 index b8bc0ac..0000000 --- a/reference/else_/index.html +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: withcc -title: else | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    else

    Examples
    example pic
    for(int i = 5; i < 95; i += 5) {
    -
    -  if(i < 35) {
    -
    -    line( 30, i, 80, i );
    -
    -  } else {
    -
    -    line( 20, i, 90, i );
    -
    -  }
    -
    -}
    example pic
    for(int i = 5; i < 95; i += 5) {
    -
    -  if(i < 35) {
    -
    -    line( 30, i, 80, i );
    -
    -  } else if (i < 65) {
    -
    -    line( 20, i, 90, i );
    -
    -  } else {
    -
    -    line( 0, i, 100, i ); 
    -
    -  }
    -
    -}
    DescriptionExtends the if() structure allowing the program to choose between two or more block of code. It specifies a block of code to execute when the expression in if() is false.
    Syntax
    if(expression) { 
    -
    -  statements 
    -
    -} else { 
    -
    -  statements 
    -
    -} 
    -
    -
    -
    -if(expression) { 
    -
    -  statements 
    -
    -} else if(expression) { 
    -
    -  statements 
    -
    -
    -
    -} else { 
    -
    -  statements 
    -
    -}
    Parameters - - - - - - - - - - - - - - - - - - - - - - - -
    expressionany valid expression that evaluates to true or false
    statementsone or more statements to be executed
    UsageWeb & Application
    Relatedif()
    - - - diff --git a/reference/emissive_.jpg b/reference/emissive_.jpg deleted file mode 100644 index d286026fa96b7a5c300c070e75569c4c787fc70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3484 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 diff --git a/reference/emissive_/index.html b/reference/emissive_/index.html deleted file mode 100644 index dba5ffd..0000000 --- a/reference/emissive_/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: withcc -title: emissive() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    emissive()

    Examples
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -background(0);
    -directionalLight(204, 204, 204, .5, 0, -1);
    -emissive(0, 26, 51);
    -translate(70, 50, 0);
    -sphere(30);
    Description

    Sets the emissive color of the material used for drawing shapes drawn to the screen. Used in combination with emissive(), specular(), and - shininess() in setting the materal properties of shapes.

    Syntax
    emissive(gray)

    -
    emissive(color)

    -
    emissive(v1,v2,v3)
    Parameters - - - - - - - - - - - - - - - - - - - - - - -
    grayint or float: number specifying value between white and black
    colorcolor: any value of the color datatype
    v1int or float: red or hue value
    v2int or float: green or saturation value
    v3 int or float: green or brightness value
    ReturnsNone
    UsageWeb & Application
    Relatedambient()
    - specular()
    - shininess()
    diff --git a/reference/endCamera_/index.html b/reference/endCamera_/index.html deleted file mode 100644 index 6abf340..0000000 --- a/reference/endCamera_/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: withcc -title: endCamera() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    endCamera()

    Examples
    example pic
    // The image for this example has not been updated.
    -size(100, 100, P3D);
    -noFill();
    -
    -beginCamera();
    -camera();
    -rotateX(-PI/6);
    -endCamera();
    -
    -translate(50, 50, 0);
    -rotateY(PI/3);
    -box(45);
    Description

    The beginCamera() and endCamera() functions enable advanced customization of the camera space. Please see the reference for beginCamera() for a description of how the functions are used.

    Syntax
    endCamera()
    ReturnsNone
    UsageWeb & Application
    Relatedcamera()
    - beginCamera()
    -
    diff --git a/reference/endShape_.gif b/reference/endShape_.gif deleted file mode 100644 index 0fd3e318c989d5fe058e9f602f84989a17876108..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2375 zcmV-N3Apx0Nk%w1VT1sL0K@l=)q{hB`uh6G$;oqb zbF;IvXJ==utgPwj>E`C<^78Tk005htn~I8x+1c65%*^8A;(UC3($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u0PIBizsH*yxI zhL=8wQ^|4zhoeZ7DqYI7sne%Wqe_L^a%azy+=4#P*MVY74jRIW9ZR;X*|TWVs$I*L zEr+TQI>^iR#}bLH61%nxi=eOHzkmY^9!$8f;lqd#hpoz!?w?k8yF%E&H?if*m@{h* zyqKcgY*+!bazNCm2EQIsr%u4Swd>cgW6PdRySDAyvo*Yp+q3RT(vm5oPA#DLk>kjd zD__pMx%21DUn9`4!Lz*34uMYw+n0E8*>2chqkNTbaxNm!Iz&;zy9;{ zx~r@AU93HK1n|WtfPDlOXdr9o>31Ffe;D|88h`>0XyAktnwLO=ywR0ae-dr?V1V&e zDB_69A(&r=>s{htcM+24qKhV`x8Q~icIY020=}qYg)u6q;TS5~_#cSh?Pz3yJ)+3q zia3UNYw?ABH*Rn#q-!qL&`Bm?N8X z9^vMaXv*niops(xWu8qI$!DJzo;YQfHGY}qoP)CIC!$rV+31*$o~fvwf=)_lp)#5o zrNS*xw~?P{R0 zYa#y8VLr@4cf^+%dn)s+_UL;g#&}%P7aZ=*%qN%rLLr=KQeC znc}+fu{e9GGp3@J+w#xlT?}%pRDxII~Q$q%`S%>^w=1i zeKyu<1AQ*rQ+MsP)p18H_PllTEHd6uC%gB-;M#q+zf^^5A->#hI zzjIDI@582k9PpV7&wA~}8@~hc$N|55*}eN7z4KbG{&C}`gPnZt+0VW_@jA8({qf3g z-+J@dpTBDQ>5^Z5@ZjI4ef-q3@4WlZ!=G~gM$#7lbRfO^{f}w-Gu{9zP(bmik9h(7 zp7-?TK>Q)_NY7ee1LxK`2u2Wn_0v}c4@fKAn2RAU6>7)LnTv5o_n;~n>y#sT<|jD7o# z9|uXuLK^arh&1FJ{kX_PIuenMe54}*$vrbl@{*X$;~*oMNk?)rlM5KY0v15Y^^NkB zs7$3QSINp%Mqre$Y^5w)8OvGDvXsoTr7m}Q%2?Ktm$UpOFdMLd1~dSd#51Ncm&wd# zI`f&%jDRtv3C(IklbY7FCNlGv&2D;gnbO4OH?1koaTcHf1t`Ea5tz<)y7QgzjHf*1 z8G!=SbDsE|=RNZYPjt3(owVYoKnMCxQW12Z`#k770V*toI#izteJDI5dQb@zKmrVn zkOVf$(T;lm^rIjRsYoLr(vp^xq$W*iMg^48mb&z#D1B*4V=7aRt~5RbkU&m%s?(nG z^rt=zDo}?i)S?pgs76idPzk`)n|_C>P>rfor%KhTTJ@?}&8k+f>eS+F^{ZeFt60H0 z0Roh@s{)vSTGz_fwz~DLaE+^6=StVQ#ucr0&8uGb%GbUg0Idg@Kwt+e*uoO_u!c=6 zVi&8}#xnM?j*aYM4?tPKQueZ#&8%iO%h}F)_OqZ3ZD#>{fdiEGw5ClhYFDe;*0T1s zu8l2hXDi#<&K9i~$gOU7%iG@i_P4+du5gD-T;SrixX4Yea+k|ov?|~N&y6m0rz_p+ zQun(5*3B+% zndX7}`uD#8o-YFwzyP!|;J^q@u!0xN;08PR!4QtHgcnR;26!NbCAKnMJc)qaP&f%J6HPCpa%6~^s}En*aZVy(avN{)0S4d`qi+G^;q6goeYf) z)p+TUSBx^1Uif9QlYyJoe4+e*4?s^YDqi tMSu)tVB_EjPq@Mtt_^E - - - - Name - -

    endShape()

    - - - - - - - - - - Examples - -
    example pic
    noFill();
    -
    -
    -
    -beginShape();
    -
    -vertex(20, 20);
    -
    -vertex(45, 20);
    -
    -vertex(45, 80);
    -
    -endShape(CLOSE);
    -
    -
    -
    -beginShape();
    -
    -vertex(50, 20);
    -
    -vertex(75, 20);
    -
    -vertex(75, 80);
    -
    -endShape();
    - - - - - - - - Description - - - - The endShape() function is the companion to beginShape() and may only be called after beginShape(). When endshape() is called, all of image data defined since the previous call to beginShape() is written into the image buffer. The constant CLOSE as the value for the MODE parameter to close the shape (to connect the beginning and the end). - - - - - - - - - - Syntax - -
    endShape()
    -
    -endShape(MODE)
    - - - - - - - - - - Parameters - - - - - - - - - - - -
    MODEUse CLOSE to close the shape
    - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - - - beginShape()
    - - - - - diff --git a/reference/equality/index.html b/reference/equality/index.html deleted file mode 100644 index 6dac4d9..0000000 --- a/reference/equality/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -layout: withcc -title: == (equality) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    == (equality)

    Examples
    int a = 23;
    -
    -int b = 23;
    -
    -if(a == b) {
    -
    -  println("variables a and b are equal");
    -
    -}
    DescriptionDetermines if two values are equivalent. The equality operator is different from the assignment operator. - -

    - -Note that when comparing String objects, you must use the equals() method instead of == to compare their contents. See the reference for String or the troubleshooting note for more explanation.
    Syntax
    value1 == value2
    Parameters - - - - - - - - - - - - - - - - - - - -
    value1int, float, char, byte, boolean
    value2int, float, char, byte, boolean
    UsageWeb & Application
    Related - - - - > (greater than)
    - - < (less than)
    - - >= (greater than or equal to)
    - - <= (less than or equal to)
    - - - - != (inequality)
    - - - -
    - diff --git a/reference/exit_/index.html b/reference/exit_/index.html deleted file mode 100644 index cc39272..0000000 --- a/reference/exit_/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: withcc -title: exit() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    exit()

    Examples
    void draw() {
    -
    -  line(mouseX, mouseY, 50, 50);
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  exit(); 
    -
    -}
    DescriptionQuits/stops/exits the program. Programs without a draw() function exit automatically after the last line has run, but programs with draw() run continuously until the program is manually stopped or exit() is run. - - - -

    - -Rather than terminating immediately, exit() will cause the sketch to exit after draw() has completed (or after setup() completes if called during the setup() method). - -

    - -For Java programmers, this is not the same as System.exit(). Further, System.exit() should not be used because closing out an application while draw() is running may cause a crash (particularly with OpenGL).
    Syntax
    exit()
    ReturnsNone
    UsageWeb & Application
    - diff --git a/reference/exp_/index.html b/reference/exp_/index.html deleted file mode 100644 index 4121844..0000000 --- a/reference/exp_/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: withcc -title: exp() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    exp()

    Examples
    float v1 = exp(1.0);
    -println(v1);  // Prints "2.7182817"
    Description

    Returns Euler's number e (2.71828...) raised to the power of the value parameter.

    Syntax
    exp(value)
    Parameters - - - - - -
    value int or float: the exponent to raise e to
    Returnsfloat
    UsageWeb & Application
    diff --git a/reference/expand_/index.html b/reference/expand_/index.html deleted file mode 100644 index 1978ccb..0000000 --- a/reference/expand_/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: withcc -title: expand() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    expand()

    Examples
    int[] data = {0, 1, 3, 4};
    -println(data.length);  // Prints "4"
    -data = expand(data);
    -println(data.length);  // Prints "8"
    -data = expand(data, 512);
    -println(data.length);  // Prints "512"

    -
    PImage[] imgs = new PImage[32];
    -println(imgs.length);  // Prints "32"
    -imgs = (PImage[]) expand(imgs);
    -println(imgs.length);  // Prints "64"
    Description -

    Increases the size of an array. By default, this function doubles the size of the array, - but the optional newSize parameter provides precise control over the increase in size.

    -

    When using an array of objects, the data returned from the function must be cast to the object array's data type. - For example: SomeClass[] items = (SomeClass[]) expand(originalArray).

    Syntax
    expand(array)

    -
    expand(array,newSize)
    Parameters - - - - - - - - -
    arrayboolean[], byte[], char[], int[], float[], String[], or an array of objects
    newSizepositive int: new size for the array
    ReturnsArray (the same datatype as the input)
    UsageWeb & Application
    Relatedconcat()
    diff --git a/reference/extends/index.html b/reference/extends/index.html deleted file mode 100644 index 9ca7209..0000000 --- a/reference/extends/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: withcc -title: extends | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    extends

    Examples
    DrawDot dd1 = new DrawDot(50, 80);
    -
    -
    -
    -void setup() { 
    -
    -  size(200, 200);
    -
    -} 
    -
    - 
    -
    -void draw() {
    -
    -  dd1.display();
    -
    -} 
    -
    - 
    -
    -class Dot { 
    -
    -  int xpos, ypos;
    -
    -} 
    -
    -
    -
    -class DrawDot extends Dot {
    -
    -  DrawDot(int x, int y) {
    -
    -    xpos = x;
    -
    -    ypos = y;
    -
    -  }
    -
    -  void display() {
    -
    -    ellipse(xpos, ypos, 200, 200);
    -
    -  }
    -
    -}
    DescriptionAllows a new class to inherit the methods and fields (data members) from an existing class. In code, state the name of the new class, followed by the keyword extends and the name of the base class. The concept of inheritance is one of the fundamental principles of object oriented programming.
    UsageWeb & Application
    Relatedclass - -
    super
    - diff --git a/reference/false/index.html b/reference/false/index.html deleted file mode 100644 index d7f0554..0000000 --- a/reference/false/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: withcc -title: false | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    false

    Examples
    rect(30, 20, 50, 50);
    -
    -boolean b = false;
    -
    -if(b == false) {
    -
    -  line(20, 10, 90, 80);  // This line draws
    -
    -} else {
    -
    -  line(20, 80, 90, 10); 
    -
    -}
    DescriptionReserved word representing the logical value "false". Only variables of type boolean may be assigned the value false.
    UsageWeb & Application
    Relatedtrue
    boolean
    - diff --git a/reference/fill_.gif b/reference/fill_.gif deleted file mode 100644 index b2805d04b8869ac04c996b6db399aa67dced4832..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VPpVg0FeLy%*@Q0nVA3p00000EC2ui0Av7U00092gpaAq?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`%5f$@k;DwoWrQveeLrqrtS zip^@Z(3f-z4vVo}*LRFglcVakyWBdv=V3TYPS3Bs`u^VR7f5Bdf+v_qsA70Hmzc81 z*ye}=8JRYDQfWDcX`;DV#|GLcIx1OedWo9Kxyl;K_lnk8@+n(IOJaLFl{>P_>nj3$ zD;z>BYYc+?s{Fys>g)lXD&0YCYR!Q?s=dJt>a793DV{-YX^w#&seZxE=xzajC|^M@ zXitG3s6WB)$6pa%VgyD2*vB9QgnAS{V2H>S!7C0OK%`T#!9`L^u_khn=y4FpkO49> z*!X5-NRtatp6W=_3QGkp)yz!rB&W`uN{IOU2{fqCp+t)sJ&H7`(xptBI(-T?s?@1e Pt6IH^HLKPi1poj$C+)5> diff --git a/reference/fill_/index.html b/reference/fill_/index.html deleted file mode 100644 index 0ae397c..0000000 --- a/reference/fill_/index.html +++ /dev/null @@ -1,202 +0,0 @@ ---- -layout: withcc -title: fill() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    fill()

    Examples
    example pic
    fill(153);
    -
    -rect(30, 20, 55, 55);
    example pic
    fill(204, 102, 0);
    -
    -rect(30, 20, 55, 55);
    DescriptionSets the color used to fill shapes. For example, if you run fill(204, 102, 0), all subsequent shapes will be filled with orange. This color is either specified in terms of the RGB or HSB color depending on the current colorMode() (the default color space is RGB, with each value in the range from 0 to 255). - -

    - -When using hexadecimal notation to specify a color, use "#" or "0x" before the values (e.g. #CCFFAA, 0xFFCCFFAA). The # syntax uses six digits to specify a color (the way colors are specified in HTML and CSS). When using the hexadecimal notation starting with "0x", the hexadecimal value must be specified with eight characters; the first two characters define the alpha component and the remainder the red, green, and blue components. - -

    - -The value for the parameter "gray" must be less than or equal to the current maximum value as specified by colorMode(). The default maximum value is 255. - -

    - - - -To change the color of an image (or a texture), use tint().
    Syntax
    fill(gray)
    -
    -fill(gray, alpha)
    -
    -fill(value1, value2, value3)
    -
    -fill(value1, value2, value3, alpha)
    -
    -fill(color)
    -
    -fill(color, alpha)
    -
    -fill(hex)
    -
    -fill(hex, alpha)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    grayint or float: number specifying value between white and black
    alphaint or float: opacity of the fill
    value1int or float: red or hue value
    value2int or float: green or saturation value
    value3int or float: blue or brightness value
    colorcolor: any value of the color datatype
    hexint: color value in hexadecimal notation (i.e. #FFCC00 or 0xFFFFCC00)
    UsageWeb & Application
    RelatednoFill()
    - - stroke()
    - - tint()
    - - background()
    - - colorMode()
    - - - diff --git a/reference/fill_2.gif b/reference/fill_2.gif deleted file mode 100644 index 4ed4af3bde1815db143605add2bcb1ee8a420097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VPpVg0FeLy%w_=0%*+4)00000EC2ui0Av7U00092jE||y?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`%5f$@k;DwoWrQveeHrqrtS zip^@Z(3f-z4vVo}*LRFglcVakyWBdv=V3TYPS3Bs`u^VR7f5Bdf+v_qsA70Hmzc81 z*ye}=8JRYDQfWDcX`;DV#|GLcIx1OedWo9Kxyl;K_lnk8@+n(IOJaLFl{>P_>nj3$ zD;z>BYYc+?s{Fys>g)lXD&0YCYR!Q?s=dJt>a793DV{-YX^w#&seZxE=xzajC|^M@ zXitG3s6WB)$6pa%VgyD2*vB9QgnAS{V2H>S!7C0OK%`T#!9`L^u_khn=y4FpkN`3= z*!X5-NRtatp6W=_3QGkp)yz!rB&W`uN{IOU2{fqCp+t)sJ&H7`(xptBI(-T?s?@1e Pt6IH^HLKPi1poj$SbeRW diff --git a/reference/filter_.jpg b/reference/filter_.jpg deleted file mode 100644 index 1bcdf847ad7ff5c3f76c69e029acbb0ce71076c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9151 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 - - Name -

    filter()

    - - - - Examples - -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="topanga.jpg"; */
    -PImage b;
    -b = loadImage("topanga.jpg");
    -image(b, 0, 0);
    -filter(THRESHOLD);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="topanga.jpg"; */
    -PImage b;
    -b = loadImage("topanga.jpg");
    -image(b, 0, 0);
    -filter(GRAY);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="topanga.jpg"; */
    -PImage b;
    -b = loadImage("topanga.jpg");
    -image(b, 0, 0);
    -filter(INVERT);
    -save("filter_invert.tif");
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="topanga.jpg"; */
    -PImage b;
    -b = loadImage("topanga.jpg");
    -image(b, 0, 0);
    -filter(GRAY);
    -filter(POSTERIZE, 4);
    -
    example pic
    // @pjs preload must be used to preload the image
    -/* @pjs preload="topanga.jpg"; */
    -PImage b;
    -b = loadImage("topanga.jpg");
    -image(b, 0, 0);
    -filter(BLUR, 6);
    - - - - - Description -

    Filters an image as defined by one of the following modes:

    -

    THRESHOLD - converts the image to black and white pixels depending if they are above or below the threshold defined by the level parameter. - The level must be between 0.0 (black) and 1.0(white). If no level is specified, 0.5 is used.

    -

    GRAY - converts any colors in the image to grayscale equivalents

    -

    INVERT - sets each pixel to its inverse value

    -

    POSTERIZE - limits each channel of the image to the number of colors specified as the level parameter

    -

    BLUR - executes a Guassian blur with the level parameter specifying the extent of the blurring. - If no level parameter is used, the blur is equivalent to Guassian blur of radius 1.

    -

    OPAQUE - sets the alpha channel to entirely opaque.

    -

    ERODE - reduces the light areas with the amount defined by the level parameter.

    -

    DILATE - increases the light areas with the amount defined by the level parameter

    - - - Syntax -
    filter(MODE)

    -
    filter(MODE,srcImg)
    - - - - Parameters - - - - - - - - - - -
    MODEEither THRESHOLD, GRAY, INVERT, POSTERIZE, BLUR, OPAQUE, ERODE, or DILATE
    paramint or float in the range from 0 to 1
    - - - - Returns - None - - - Usage - Web & Application - - - diff --git a/reference/filter_2.gif b/reference/filter_2.gif deleted file mode 100644 index 5b263d2f9b5508dd5a66ca847df1778c26c05670..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHN-Nk%w1VPpVg0Du4h00030|NkNR1ONa4001li0001F0Av6F0{;wxsd?+| z6pXamduP>=KMaQA$Y9bCoB<*?!CGaX)j&0G7G9qZDEhoB;a^LLjOrKOa3 z^|Wy)_%_rS80JWLRv9Q2_L=s%MX0DLddd`sN(G3riVDW}%1SZ|t7!>lJ9#N8mCN`5 zN{JZTc`T9n0c`BKN>_NJv3pQFVvRCGeY+?j$*V-&VaDtYO6#$PjWHA$+(4Y}_hO8I!pw+J4z_!FW5-6srW}TrGsO{j(t#;}{wQ25$Q)$fLC~Ua2xch}(!T^V!WJ^+qMq6%k_~m$#MX zH+J-}){8YqzPJ@GQqY1ObAIddY&g!7T@rq&I3RN0%E=`+DYv(5(p@NjpcOk0O~7gM zS&wa-I_uU%pNXEXF)>P9AIpX>kDV%f=D~i>rwD%geIHiufB&WEnSYi{vz&lK!N*bw z{&5%Jg7`Ujnmp1#NFjp1%~oNCr&U$qdzQ`jS5M_lXr5B^aQIm`8Xg5%LnErVqGB=T zXJ3Zn)JS22DS;?qQ)^iWV@N#WhaO=sl2xRUCSsT5g-#*qWPczYhhtqw1|}kqbp3&r zmWZ*)<7-QN84o^4+6E+LMcKynp<=h^-eroLRA@^2QKK|iHm~CXrmCelNgs$o)aI9L25XcWKJfE z9D5}Ca%789MoC^DN`7c5ZLkRmEN`Ns`X(2cwWS|z|17z;Dyn}j>I|~Y<;9#|!!-t) fKgRZlk%GUqH^-cXEk_Ek(t>5!oDr#tKmhK498 zx6-)CR*~EhQnF=`Y*}uuH7UzIL#6xI_xS5DOFaN*Yh_~v zAQS*T$N`rA1bB;M-T^EC0W<)>5utifyKT(P4>>wHSlR5c1P}xOO54=J%o2qIfEL7L zIQ?Ko*iUgI2sZ)@fRRy%d3uKg+c{gg2yhTRh$?8mGbG1{R-^`EueJ$tedqgMps05+ zgNX#rBbSa3HN+bLNE^ZaVa#BJhd2mc>lLt!^97jU;$)8S)d-gKTfxl&?6rdX1(<<6 z1QIhXi1%B@D69Z`tzZQKW>Uiib%8lOn8on-`5O1H!;?uxGzBa36N~~<=JY^1!_JfG{WAfPZJGPO-UREglJG<47k#&{a;v4hk1;~O z^dP7KfdAHC%@G{{fEA)Q#$c6m+5|u@3jq1HRZhto0K5tS_X$g5Ky_Il;PV)%3Bf=H z4P!(lkQ_fE7osOt7XVR@B|eA&sBZ=%2u34!7%hYrm=H#2*)SMkVXUw)MnptZR76Dl zp9aA&EQA&k!C*ur#6-j-q$ClOl3EV>(ulA0{yFYjZ>b94v4Y(ILwJC~Logm%ss`Br zz|gXN)exBuj1qemQG}M7x9?V}2NfJ9z1*#`TascRlidwtjs7nK zHyz$#khW$L(i){ULCJcWo|U5?f68pKceCxdIhQdLi*<~8RD>%L;83I zJ4nt(!pu=+V-`dlrxd1aU*9z6fC-Kl#qFKme8fHT?8c^yglTSymwsq#Or7d9xDlPM zR9suebGBC2v(NYPch++-B>Kzboy*R4^)cd!Mh&qvpLuL(zL^xnyX-vu&?=DV*q?aj ziLaXbmAjWm-E0bNkCZPqkt|y^lqkMI(bO03Tq*mE_qraZIbX&Zu$$*JKjJsX>%q#o z&nwo6-LL78?aq}~qS-Ysf$g6ZI&AXvOsyj&r^E`Yh6+l}W-~*Z7qk%Ju!y>l5Xz3> zBGa^w;zUwvQFxGlXy5w8&GxD4*Z-{%=@h!=;=lz4Pj-{|JCx}0wCj0Ki=^`@Sl#r; z50xF7aSUBGeRPD*waEkJQoC|mAZ(nj%Dpo#N{eiJ8 z1xg^rpONxO8x6svAChvu~Ri8xm#JTkCsDWLFnR^m0>8132Ftx zs}O<^w&!G%{*jh=XOk7FVaS9SdCS3x9)E7cbC+t)gZr^9(^~%#{TLI@$)Rru-+1cI zUJo6vHqUafnD1|e^M+Vm_VLxqa)V>$B{$J>nr-QS7W%&Jyl}fJ$oOP@XcxzJQ@8$R zZJ!MdD(?25gA7yq2HV4G0~71dh(&x#df)kuyRFL2<3*9r#F_K1*M=|BI$bPyJ4(yz z*)#T88ik80E{rqPhj za3{SDH{=w&HFl@vPZjaU`4fCvaV)=*R>Vin8p?A%t(-HE@{F&*@e?nax5o}pE35dL zk_;OSuJ3Deg#tf}GADMUJe8wkZ%S^b759&`j8;}bP-U@|@|@x~?l(^5_{~ev7AF*W z77>w%fAyn)JEixD-2Hi~yzD{%%1cEhH@DG>UB{Phj0mv{xIAhxI_0Y*7m!>*P&L0> z%6BdyT~qK7@<`(9Z%%U`^!X{~*Kf;*n<6)7O_k38X+r1kuXm_gX=J7ay|49)iK_h^ zi_Kreq5@AC#yp-W2#u?7H>Ui>KI59IIj7aqw_TT5aBG^b>h{|u_l<3t^~YpBln_th z=I%Jl(!p7^p|TV9tS&j-JPS=7v2zOscB7!BC8Hz$mFJ0_9<6_r`Hk&T9N5{KIs1#( z7Tw#r>;%~k#oM)Kj~8uYNcIVz&>wRdn~>F^UumN|WnD5DTxV7xFaJ4Obnc3|?4tzp zxClUa)oi6^UB|6;aG&Qk`m8IcFU_7N>CD2t(TnkNCn@27JoqI6pRq7dH=92)weYd~ znAdphn_YwA#o6- zN_IDUDtG+2+og!eN1J-eU0E6NZ(MIYyjNH@Q=D36k~q^gG$mLWEb^m(OmHLcHtJ9rY*S`^OCw*;g&(dM+L<0GuKK diff --git a/reference/filter_gray.jpg b/reference/filter_gray.jpg deleted file mode 100644 index 54a6a2413eff2e7c6d25837c7310eab7ecf06e8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8769 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 diff --git a/reference/filter_invert.jpg b/reference/filter_invert.jpg deleted file mode 100644 index 3d2b06e7bac468fb8dca1dfe0f770f96eaee575e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12807 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 IeqH{502l>up#T5? diff --git a/reference/filter_posterize.jpg b/reference/filter_posterize.jpg deleted file mode 100644 index 452e54133f2f0030bedc3d2e8c8bad6b41a6b7df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9496 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 diff --git a/reference/final/index.html b/reference/final/index.html deleted file mode 100644 index 3dff030..0000000 --- a/reference/final/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: withcc -title: final | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    final

    Examples
    final float constant = 12.84753;
    -
    -println(constant);  // Prints "12.84753" to the console
    -
    -constant += 12.84;  // ERROR! It's not possible to change a "final" value
    DescriptionKeyword used to state that a value, class, or method can't be changed. If the final keyword is used to define a variable, the variable can't be changed within the program. When used to define a class, a final class cannot be subclassed. When used to define a method, a final method can't be overridden by subclasses.

    - - - -This keyword is an essential part of Java programming and is not usually used with Processing. Consult a Java language reference or tutorial for more information, such as this one.
    UsageWeb & Application
    - diff --git a/reference/float/index.html b/reference/float/index.html deleted file mode 100644 index 8e2e94f..0000000 --- a/reference/float/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: withcc -title: float | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    float

    Examples
    - -
    -
    -float a;          // Declare variable "a" of type float
    -
    -a = 1.5387;       // Assign "a" the value 1.5387
    -
    -float b = -2.984; // Declare variable "b" and assign it the value -2.984
    -
    -float c = a + b;  // Declare variable "c" and assign it the sum of "a" and "b"
    -
    -
    DescriptionDatatype for floating-point numbers, a number that has a decimal point. Floating-point numbers are often used to approximate analog and continuous values because they have greater resolution than integers. Floating-point numbers can be as large as 3.40282347E+38 and as low as -3.40282347E+38. They are stored as 32 bits of information. The first time a variable is written, it must be declared with a statement expressing its datatype. Subsequent uses of this variable must not reference the datatype because Processing will think the variable is being declared again.
    Syntax
    float var
    -
    -float var = value
    Parameters - - - - - - - - - - - - - - - - - - - -
    varvariable name referencing the float
    valueany floating-point value
    UsageWeb & Application
    Relatedint
    - diff --git a/reference/float_/index.html b/reference/float_/index.html deleted file mode 100644 index 3a2c622..0000000 --- a/reference/float_/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: withcc -title: float() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    float()

    Examples
    int i = 65;
    -
    -float f = float(i);
    -
    -println(i + " : " + f);  // Prints "65 : 65.0"
    -
    -
    -
    -char c = 'E';
    -
    -f = float(c);
    -
    -println(c + " : " + f);  // Prints "E : 69.0"
    DescriptionConverts a primitive datatype, string, or array to its floating point representation.
    Syntax
    float(value)
    Parameters - - - - - - - - - -
    valueint, char, byte, boolean, String, int[], char[], byte[], boolean[], String[]
    Returnsfloat
    UsageWeb & Application
    Related - - float
    - - int()
    - - byte()
    - diff --git a/reference/floor_/index.html b/reference/floor_/index.html deleted file mode 100644 index 2b586bb..0000000 --- a/reference/floor_/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: withcc -title: floor() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    floor()

    Examples
    float x = 2.88;  
    -
    -int a = floor(x);  // Set "a" to 2
    DescriptionCalculates the closest int value that is less than or equal to the value of the parameter.
    Syntax
    floor(value)
    Parameters - - - - - - - - - - - -
    valuefloat
    UsageWeb & Application
    Related - - ceil()
    - - round()
    - -
    - diff --git a/reference/focused/index.html b/reference/focused/index.html deleted file mode 100644 index a01c862..0000000 --- a/reference/focused/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: withcc -title: focused | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    focused

    Examples
    -
    if (focused) {  // or "if (focused == true)"
    -  ellipse(25, 25, 50, 50);
    -} else {
    -  line(0, 0, 100, 100);
    -  line(100, 0, 0, 100);
    -}
    DescriptionConfirms if a Processing program is "focused", meaning that it is active and will accept input from mouse or keyboard. - This variable is "true" if it is focused and "false" if not. This variable is often used when you want to warn people they need to - click on or roll over an applet before it will work.
    UsageWeb
    diff --git a/reference/font/index.html b/reference/font/index.html deleted file mode 100644 index 197025e..0000000 --- a/reference/font/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: withcc -title: /* @pjs font */ directive | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    /* @pjs font */ directive

    Examples
    /* @pjs font="Arial.ttf"; */
    -        
    -void setup()
    -{
    -  size(200,200);
    -  noLoop();
    -  textFont(createFont("Arial",32));
    -}
    -
    -void draw()
    -{
    -  background(255);
    -  String t = "P.js";
    -  float tw = textWidth(t);
    -  fill(0);
    -  text(t, (width-tw)/2, (height+32)/2);
    -}
    -
    Description

    If you wish to use custom fonts in your sketch, these must be preloaded using the font @pjs directive. Preloading fonts uses its own command, - rather than the standard preload command, because unlike images a font must not just be cached, but must also be loaded into memory for the browser - to make use of. Processing.js does this by relying on the browser to load the font via a CSS @font-face rule. While most browsers support a large number - of font formats for use with @font-face (woff, svg, eot, ttf and otf), relying on "truetype" (ttf) and "opentype" (otf) font formats offer the greatest - interoperability between Processing and Processing.js.

    -

    Fonts can be preloaded from URL, such as "Arial.ttf" or from data URI, such as "data:font/truetype,base64, {base 64 encoded data block}". - Fonts that are preloaded can be loaded without their extension in your sketch using the createFont function: if you preload "Arial.ttf" you can use - this font in your sketch by loading it as a Processing font using PFont myfont = createFont("Arial",12); and then using as text font by calling - textFont(myfont); If you place your fonts in a separate directory, such as the "data" directory used by Processing, you only need to - indicate the font location in the preload command. The preload command will be /* @pjs font="data/Arial.ttf"; */ but the call in your sketch - remains createFont("Arial",12).

    -

    NOTE: The "VLW" format used by Processing is not supported, as this is a custom bitmap image file with an index that indicates sections of the - image that map to a letter.

    -

    WARNING: only use this directive for fonts that are used exclusively by your sketch; if your sketch relies on a font that you have also included for use - on your page with an @font-face CSS rule, this directive may overwrite your rule with a far simpler one. -

    Syntax -
    -        /* @pjs font="fontURL"; */
    - /* @pjs font="data:font/truetype,base64, {base 64 encoded data block}"; */ -
    Syntax for multiple fonts -
    -        /* @pjs font="font1,font2,..."; */      
    -    
    Parameters - - - - - - -
    fontcomma separated list of URLs or data-URIs (may be mixed), all inside a single set of double quotes
    UsageWeb & Application, Processing.js compatibility
    Related - @pjs directives -
    createFont() -
    \ No newline at end of file diff --git a/reference/for_.gif b/reference/for_.gif deleted file mode 100644 index 9fe0932a499451c8d18a9c30264a93096a30b140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2253 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 b1F!%GK7hgNUi - - - - Name - -

    for()

    - - - - - - - - Examples - - - -
    example pic
    for (int i = 0; i < 40; i = i+1) {
    -
    -  line(30, i, 80, i);
    -
    -}
    example pic
    for (int i = 0; i < 80; i = i+5) {
    -
    -  line(30, i, 80, i);
    -
    -}
    example pic
    for (int i = 40; i < 80; i = i+5) {
    -
    -  line(30, i, 80, i);
    -
    -}
    example pic
    for (int i = 30; i < 80; i = i+5) {
    -
    -  for (int j = 0; j < 80; j = j+5) {
    -
    -    point(i, j);
    -
    -  }
    -
    -}
    - - - - - - - - Description - - - - Controls a sequence of repetitions. A for structure has three parts: init, test, and update. Each part must be separated by a semi-colon ";". The loop continues until the test evaluates to false. When a for structure is executed, the following sequence of events occurs:
    1. The init statement is executed
    2. The test is evaluated to be true or false
    3. If the test is true, jump to step 4. If the test is False, jump to step 6
    4. Execute the statements within the block
    5. Execute the update statement and jump to step 2
    6. Exit the loop. - - - - - - - - - - Syntax - -
    for (init; test; update) { 
    -
    -  statements
    -
    -
    -
    -}
    - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    initstatement executed once when beginning loop
    testif the test evaluates to true, the statements execute
    updateexecutes at the end of each iteration
    statementscollection of statements executed each time through the loop
    - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - while()
    - - - - - - - diff --git a/reference/for_2.gif b/reference/for_2.gif deleted file mode 100644 index 6ee5cf33c12a95f9e0f233c85fa4f79f25f2f9ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2190 zcmV;92yypENk%w1VT1sL0K@l=)q{hB`uh5Fb92eb z$+NSwXJ=>W>FMU?=JN9L00023t*x7zn~I8x+1c6R;^KUKe9X+u($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u0PIBizsH*yxI zhL=8wQ^|4zhoeZ7DqYI7sne%Wqe_L^a%azy+=4pL*MVY74jRIW9ZR;X*|TWVs$I*L zEr+TPI>^iR#}bLH61%nxi=eOHzkmY^9!$8f;lqd#hpoz!?w?k8yFS>!H?if*m@{h* zyqKcgY*+!bYCzPe2EQIsr&hqawd>cgW3z@pySDAyxO3~?ja#;F)*9Z%?OFFEX~~pP zrxw8ci1X*rqf4Joy}I@3uMue2;8|X1hsP&_?Yo?L^Xur-t6!hKwRYj3L)#5+n!E?| z=h^Gu&)>TH;M~PmTru>GhroUK3DDpFf($mu+IsqIpLL0<|pNu`cXM!kSFTpWRYmbxt^Lp z&ex=haLTEte_)PSC7U(6iD!;`7K&Y;GS=Xrq<*exDX6e!D665g{(57X z!VbG9N-`sOz`7@tP>LwmOP!w$h5}>ZQ+~E2p;A za%--;Qo>uVsPxvGZl%r2i*JMA25g(S)1Jz1xB2pD@2l-59Oc3X&+G7x5L+wp#4lFt zud28TEHJ_9*2*x#7`LeLn-`Zn<-Wf5i}JrJo6NGJ+rG?k%raBja?OLnyr9P)w>LAn zBd3gWe<$~R^U(|@oocL1FX(izQRmz%&GFg{_0K?q3o^evKb>sVNDpnW#XghG-qa1N z%^%w&yDhZNSl_!e*In!S_0CxyR zw|m!Jbm5X8>iF3kN8Y*rbd+;GI&`HketLANi>}}0dIvr(=vt4xy61w^?zio?vyQmP zgsa~B5v}t+e2>2yTl;U!`v!Zi&Byk6;-L!={q@*qul@F}1)x9x(*qB=00ES5{`u&q zum1Y%x9|S@@UtJj^1H`x|NZ#quRj6vySzIA0RW%?14zID8nA!}JfH#-$iM|Uuz?U% zAOR-Wzpw>sf*8!81~dvCNz;Xfo^*9o8SzmILArOa+>p;=p^ShF_g}By7QgzjOPK? znVj?xm1>kZ7Ko`#XG+tW+VrM4&8bdz%2S-a zQ~*5-SLc_6NM&8uG9%76qg;HL}-tY8OA*uon2u!v2p zVi(KU!upi~9!RDC#Mal!`t`Dw%`9d&tJ%(S_OqT1Eoes@TEPOgv8YY0YFEqJ)3Wxp zu#IhMT`Sw#+Say|p{pTlr<&gS_P4+du5gD-+~OKnxPOtX1(AiJ<~sMe(2cHir%PSu zdY~`=%BA6fm|NZMdiT5Fg>GuFt6NoWH@xUguX?*X-ZoCgLfhr;dgn{u>Z-;s+v$$x zUKQWt`uD#84zPgnE2A|zBr;y9%w`tM;09-=GfG<0U5=v{%D~sb7|w8p7ZV@>^}#L} z*h+XNW16;@_{1nqv5Lp?7VeM;Yazx9io9Z!so40&IL@(-j{=wBc!ydaNJ(Cbl9M7E z`N&94vWw#)mmmKGP(c<4Y4Rc&kXZT3SkAJRcfymo_=H9%35SUHfsitr`OIievp*C9 znvzV&72wE6MB+i`I@|fqcbLO=xXAxf`zd04%_P4`4X@(U6V{ Qw50d^l=)q{hB`uh6G$;oqb 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 z z!eX3r&^DUvFVZ(E{qTP=Qw;OWfbwj!&qf2yG?!KreQ(wyZ{48NE{lC<*Y=iswAp75 zowmA9`xo`xQ(KI7r4E)jvS%1T{1 z&CXt3bjOA_?s(>2tKGT(=jxFSIOzcP4SC+Dqi&t)qsv{l%$3XgxwUVz9=q$>seUuq z+wz|1F*Qw5Svh$tpj3+$j zDbIS+^Pcw1=R66(&u%V=p8yT0KnF_Df*SOo2u-L$59&|-EcBreji^K+IspPyw4vyk zfJQgU(T;lm^rIjRsYpjk(vpT0qs}p@N>|F#mb&x+C>6i~CNR^Q()6Y_%_&ZIs?(nG z^rt=zDo}^o(*qbarbbPwQkTlqraJYhP>rforwUc1Uf=*%%_>&6s@1M?^{ZYDD_F-W z*0PfItYwYq1=h;ewz~DLaE+^6=StVQ+EuPdIK#=GykT&W$c~rz_p+ zQun(5*3B+SQj(XVLjpn$>CC@)u)t<#cn!HE`B#@3< zw4^6Z>7DRoE;M1& diff --git a/reference/frameCount/index.html b/reference/frameCount/index.html deleted file mode 100644 index 065e0a5..0000000 --- a/reference/frameCount/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: withcc -title: frameCount | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    frameCount

    Examples
    void setup() {
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  line(0, 0, width, height);
    -
    -  println(frameCount);
    -
    -}
    DescriptionThe system variable frameCount contains the number of frames displayed since the program started. Inside setup() the value is 0 and and after the first iteration of draw it is 1, etc.
    Syntax
    frameRate
    UsageWeb & Application
    RelatedframeRate()
    - - frameRate
    - diff --git a/reference/frameRate/index.html b/reference/frameRate/index.html deleted file mode 100644 index 6b52ab0..0000000 --- a/reference/frameRate/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: withcc -title: frameRate | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    frameRate

    Examples
    void setup() {
    -
    -  frameRate(30);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  line(0, 0, width, height);
    -
    -  println(frameRate);
    -
    -}
    DescriptionThe system variable frameRate contains the approximate frame rate of the software as it executes. The initial value is 10 fps and is updated with each frame. The value is averaged (integrated) over several frames. As such, this value won't be valid until after 5-10 frames.
    UsageWeb & Application
    RelatedframeRate()
    - - - diff --git a/reference/frameRate_/index.html b/reference/frameRate_/index.html deleted file mode 100644 index f1a34f1..0000000 --- a/reference/frameRate_/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -layout: withcc -title: frameRate() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    frameRate()

    Examples
    void setup() {
    -
    -  frameRate(4);
    -
    -}
    -
    -int pos = 0;
    -
    -void draw() {
    -
    -  background(204);
    -
    -  pos++;
    -
    -  line(pos, 20, pos, 80);
    -
    -  if(pos > width) {
    -
    -    pos = 0;
    -
    -  }
    -
    -}
    DescriptionSpecifies the number of frames to be displayed every second. If the processor is not fast enough to maintain the specified rate, it will not be achieved. For example, the function call frameRate(30) will attempt to refresh 30 times a second. It is recommended to set the frame rate within setup(). The default rate is 60 frames per second.
    Syntax
    frameRate(fps)
    Parameters - - - - - - - - - -
    fpsint: number of frames per second
    ReturnsNone
    UsageWeb & Application
    Relateddelay()
    - diff --git a/reference/frustum_.gif b/reference/frustum_.gif deleted file mode 100644 index a4e5aee4773d5d7b487250aede243434b45f73fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413 zcmV;O0b>3~Nk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`shHk!=|)=KSmGvA{)Bo&UwXf}`S{(yUM64&RBKLdJOyw7pA^Jf>OGiLy}v3AIp zrKnMdlb3~t0O_K~RT-Fo$)f4WS*7r)5_&Z%LFl*enYQZMT3Vq>drO0A0gLNdqf5qV z3IiO-J19GHd{ZnJWlNkaqB(5RyhkT(ncWLgovH1O7w*jMt32La{zi_?uI`Qu-|^jY zO`m=~oqt&$;lCmjqE6-vJzFR5QYnD?5*l2%h+iTH&>%2Ok!MxCi*zV5da1_oghvVk zuSf(~vSFi#7%GOerjXvfSrg@qbof#f%awdeK*?FCrca>gg!;@!)Fij0Tb7=3iVYS)^5(RLTyH*t;fj4BZ=p0;(#-~~dK HO#uKqzUIcn diff --git a/reference/frustum_/index.html b/reference/frustum_/index.html deleted file mode 100644 index 03f5b30..0000000 --- a/reference/frustum_/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: withcc -title: frustum() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    frustum()

    Examples
    example pic
    size(100, 100, P3D);
    -noFill();
    -background(204);
    -frustum(-width/2, width, 0, height, -100, 200.0);
    -rotateY(PI/6);
    -box(45);
    Description

    Sets a perspective matrix defined through the parameters. Works like glFrustum, - except it wipes out the current perspective matrix rather than muliplying itself with it.

    Syntax
    frustum(left, right, bottom,top, near, far)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - -
    leftfloat: left coordinate of the clipping plane
    rightfloat: right coordinate of the clipping plane
    bottomfloat: bottom coordinate of the clipping plane
    topfloat: top coordinate of the clipping plane
    nearfloat: near coordinate of the clipping plane
    farfloat: far coordinate of the clipping plane
    ReturnsNone
    UsageWeb & Application
    Relatedcamera()
    - beginCamera()
    - endCamera()
    - perspective()
    -
    diff --git a/reference/get_.jpg b/reference/get_.jpg deleted file mode 100644 index 6e7e7417331a3caab702fce6973cc38b73269684..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3704 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 diff --git a/reference/get_/index.html b/reference/get_/index.html deleted file mode 100644 index cf7a654..0000000 --- a/reference/get_/index.html +++ /dev/null @@ -1,158 +0,0 @@ ---- -layout: withcc -title: get() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    get()

    Examples
    example pic
    PImage myImage = loadImage("topanga.jpg");
    -
    -image(myImage, 0, 0);
    -
    -PImage cp = get();
    -
    -image(cp, 50, 0);
    example pic
    PImage myImage = loadImage("topanga.jpg");
    -
    -image(myImage, 0, 0);
    -
    -color cp = get(30, 20);
    -
    -fill(cp);
    -
    -rect(30, 20, 55, 55);
    DescriptionReads the color of any pixel or grabs a section of an image. If no parameters are specified, the entire image is returned. Get the value of one pixel by specifying an x,y coordinate. Get a section of the display window by specifying an additional width and height parameter. If the pixel requested is outside of the image window, black is returned. The numbers returned are scaled according to the current color ranges, but only RGB values are returned by this function. For example, even though you may have drawn a shape with colorMode(HSB), the numbers returned will be in RGB.

    The imageMode() function changes the way the parameters work. For example, a call to imageMode(CORNERS) will change the width and height parameters to define the x and y values of the opposite corner of the image.

    Getting the color of a single pixel with get(x, y) is easy, but not as fast as grabbing the data directly from pixels[]. The equivalent statement to "get(x, y)" using pixels[] is "pixels[y*width+x]". The (BETA) version of Processing requires calling loadPixels() to load the display window data into the pixels[] array before getting the values.
    Syntax
    get()
    -
    -get(x, y)
    -
    -get(x, y, width, height)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint: x-coordinate of the pixel
    yint: y-coordinate of the pixel
    widthint: width of pixel rectangle to get
    heightint: height of pixel rectangle to get
    UsageWeb & Application
    Related - - set()
    - - pixels[]
    - - color()
    - - color
    - diff --git a/reference/get_2.jpg b/reference/get_2.jpg deleted file mode 100644 index 21e697daa2522b2373fc8f6594ea1aaf1d019dd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3623 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 diff --git a/reference/globalKeyEvents/index.html b/reference/globalKeyEvents/index.html deleted file mode 100644 index 85c3a25..0000000 --- a/reference/globalKeyEvents/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: withcc -title: /* @pjs globalKeyEvents */ directive | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    /* @pjs globalKeyEvents */ directive

    Examples
    bypass.pde:
    -	
    -/* @pjs globalKeyEvents="true"; */
    -
    -sketch.pde:
    -     
    -int linepos;
    -
    -void setup()
    -{
    -  size(200,200);
    -  noLoop();
    -  linepos = height/2;
    -}
    -
    -void draw()
    -{
    -  line(0,linepos,width,linepos);
    -}
    -    
    -interface Javascript {}
    -Javascript javascript=null;
    -void bindJavascript(Javascript js) { javascript=js; }
    -
    -// due to every browser implementing key events differently,
    -// proper keyhandling requires knowing whether this
    -// sketch is running under Processing or under Processing.js
    -void keyPressed()
    -{
    -  if( (javascript==null && key=='+' && keyCode==61) ||
    -      (javascript!=null && (key==187 || key==119))) {
    -    // if someone types a "+", draw the line lower
    -    linepos++; 
    -    redraw(); 
    -  }
    -  else if( (javascript==null && key=='-' && keyCode==45)
    -      || (javascript!=null && (key==189 || key==115))) {
    -    // if someone types a "-", draw the line higher
    -    linepos--; 
    -    redraw(); 
    -  }
    -}
    -
    -sketch.html:
    -
    -<html>
    -<head>
    -  <script type="text/javascript" src="processing.js"></script>
    -  <script type="text/javascript">
    -  // bind javascript to all Processing instances
    -  function bindJavascript() {
    -    canvaslist = document.getElementsByTagName("canvas");
    -    for(c=0; c<canvaslist.length; c++) { 
    -      pjs = Processing.getInstanceById(canvaslist[c]);
    -      try { pjs.bindJavascript(this); }
    -      catch(e) { setTimeout(bindJavascript, 250); }
    -    }
    -  }
    -  bindJavascript();
    -  </script>
    -</head>
    -<body>
    -  <canvas id="first" data-processing-sources="sketch.pde"></canvas>
    -  <canvas id="second" data-processing-sources="bypass.pde sketch.pde"></canvas>
    -</body>
    -</html>
    -
    Description

    By default sketches loaded using Processing.js will only accept keyboard events when they have focus (i.e. after having tab-navigated to them, - or having clicked on them). Using this directive will allow a sketch to receive any keyboard event sent to the page, regardless of whether the canvas - it is loaded in has focus or not. Using this directive means that people who visit your page will not need to explicitly click on your sketch to - interact with it, but it also means that if you have multiple sketches on a page, any sketch that uses this directive will receive input that may not - have been intended for it.

    -
    Syntax -
    -         /* @pjs globalKeyEvents="true"; */  
    -    
    Parameters - - - - - - -
    globalKeyEvents"true" (implicitly false for any other value)
    UsageWeb & Application, Processing.js compatibility
    Related - @pjs directives -
    diff --git a/reference/greater than or equal to/index.html b/reference/greater than or equal to/index.html deleted file mode 100644 index 69a1177..0000000 --- a/reference/greater than or equal to/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: withcc -title: ">= (greater than or equal to) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    >= (greater than or equal to)

    Examples
    int a = 23;
    -
    -int b = 23;
    -
    -if(a >= b) {
    -
    -  println("variable a is greater or equal to variable b ")
    -
    -}
    DescriptionTests if the value on the left is larger than the value on the right or if the values are equivalent.
    Syntax
    value1 >= value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float
    UsageWeb & Application
    Related - - > (greater than)
    - - < (less than)
    - - - - <= (less than or equal to)
    - - == (equality)
    - - != (inequality)
    - - - -
    - diff --git a/reference/greater than/index.html b/reference/greater than/index.html deleted file mode 100644 index 03b5551..0000000 --- a/reference/greater than/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: withcc -title: "> (greater than) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    > (greater than)

    Examples
    int a = 5;
    -
    -int b = 13;
    -
    -if(b > a) {
    -
    -  println("variable b is larger the variable a");
    -
    -}
    DescriptionTests if the value on the left is larger than the value on the right.
    Syntax
    value1 > value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float
    UsageWeb & Application
    Related - - - - < (less than)
    - - >= (greater than or equal to)
    - - <= (less than or equal to)
    - - == (equality)
    - - != (inequality)
    - - - -
    - diff --git a/reference/green_.gif b/reference/green_.gif deleted file mode 100644 index ad1ef9c2f9c823da394ddc7c1ae75750e9937f04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 zcmV-S1+)4`Nk%w1VPpVg0J8u9+1c6r{QT_f?DX{X%*@OHe*fd+;Qzp&a7Zi~k4V)eC*mca(5UpdsxVPQ1Hi!TdcWYXcuX#L zx9H(g6g0cv@OU}>vy6W7ynaun`>YaMU;+jLhKGoWii?bmj*p3jVL?^|f?bfAnwy-B zl3sOIUY(?+rkW8#k|v+S%OO-reBe;^E}u};ED%)}eskAWN zwTa7KYwS4fVX{W24z}o^v**vCLwhFRfVAn-s86d-T@f)y?~ zcL4+p8YCD_ytwh>2@bR#%T}`2uM=(io<1G8aOBvJE2rohuUn+D-_f>>o4Wbj*0ZZ8 zzJ225=9%?wj(+?6`Sk16x0l#GF!=crNoSw`dHCgr-F`ta7g>B}0jL9c15#I@f!ek9 z*MhK323>#(L?~f!6dt(TQ}AW@9845J=wWXYhRB|UB&y_JYz~s3;)=Vq=wfms-ldpk zls(uXj=bsUB7!7z_v3#-+E^cvx)~WFk|Vr_;dc!-If8&tq6gxR#Zl>3jIUv-A&T^s z*QJycib;T#I03n#kZMB7rh#rM>D-C4r8s1lzkLbjaCs^ir+iw9aHE}q4w~nMWiG}T znj8Y^<#mJd$ep3yNgAGbe%49ko%uaVW~YKBTHBLrHVS5;r!JZ0oK9LAD5j3Wc-M?) z#uciiq^<|6k9+P_DX^~YXezM`_S$Fvn#kh%YLAE=IxD4gMw=<2x>g&NiF|@epRK{_ zM=fUH8k;SkA9d*rz#ni=lA>$WPbvfXO6=cnVb%ILrMZW?Q`HE#K* zzuRi+9;B!;Nvp%6;@GZ;3NxE-!-_t9aK!Hl-0Y;jLR&AwQ{sE2r|LSH@roNGS8~3d z66`0r_O{$HybPHoj}vr;W{?dFe|O-1AqrE_~3*CuEpVKAg*}g zb*OEvyi;Q&0R<&gPWk1N7Y1kf#n+}>8Cw0Zeevf^ZN9bHq=T-t=-8%SI;W?{>^e}P zm#y>cR+%33=(x|Mr|o|CF4n?j%Pzc3wS#;6@jmHZeDKVxwL0(zRd4 - - - - Name - -

    green()

    - - - - - - - - - - Examples - -
    example pic
    noStroke();
    -
    -color c = color(0, 126, 255);
    -
    -fill(c);
    -
    -rect(15, 20, 35, 60);
    -
    -float value = green(c);  // Sets "value" to "126"
    -
    -fill(value);
    -
    -rect(50, 20, 35, 60);
    - - - - - - - - Description - - - - Extracts the green value from a color, scaled to match current colorMode(). This value is always returned as a float so be careful not to assign it to an int value.

    The green() function is easy to use and undestand, but is slower than another technique. To achieve the same results when working in colorMode(RGB, 255), but with greater speed, use the >> (right shift) operator with a bit mask. For example, the following two lines of code are equivalent:
    float r1 = green(myColor);
    float r2 = myColor >> 8 & 0xFF;
    - - - - - - - - Syntax - -
    green(color)
    - - - - - - - - Parameters - - - - - - - - - - - - - -
    colorany value of the color datatype
    - - - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - red() - -
    blue() - -
    hue() - -
    saturation() - -
    brightness() - -
    >> (right shift)
    - - - - - - - diff --git a/reference/height.gif b/reference/height.gif deleted file mode 100644 index cb2b9d2e3d7767445706e7a5194d3f4978be595e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1972 zcmV;l2TS-zNk%w1VT1sL0K@FMdSv$KSR zgw4&({QUg%^z@vZoRgE2_V)Jj^77o=-0$!2*4Eb4)YRYK-@LrMdwY9~jEwN`@apR7 z00030|Ns8}{`&g*A^8LV00000EC2ui0E7U9000I5AR&%bX`X1Ru59bRaIB8vLM(W0 zizem&z@TtQEE41ejE#;KZd7|CIe=?}0GXPboSmMZprN9pq@|jJc>_Kb zlnVow7MlUHw6(UkxVgH!yuH4^0h@wrk`$~p5`vnv2+hvV(9zP<)YaD4*x3lQr;w6- zH_8CB%^L;h=;`X~?CtLF@bU8V1slz?nZv5aBeCNF2+W^Icpe;$O#)5gO>+$+M@= zpFo2O9ZIxlQIIZS;(BTJr4xpL&Vev=0F zMl*o9wTRz-U_iRG>C>oFt6t5zwd>cdKfv`nc0(`##P}gNci8QL(Wf~GA5Ofu@#Dye z!(QGxxpNK&`bN+|HW+7CyFoV)ZQ6tP=itK=_fEdN`Sa-0n-_2VE$srEXJS{I(|76h z?DHd6&%Zx^{lmQ_-B|H8m0f+m-PghYf*kj_wF4n;q^6 z=c1P$m#LilluqeqnxPsus*aoH+3A~={@JRiucjF5p>8IsDyX+Ym@A6Ap4w}w zeF7US2g4FuDxSQ0S}Uu|GTSWwlg~!_C8{(2YH78?U5o9Og>ot+vSWfvoVXPhyX~>v zCi^Y8>|U6yxs%45uDapYE1|o3((0|P>iYZdy|SLG@2dRvYcRq2t(kDXeD2Hd!}GEy zakK)<3vsm=e=Od{#!5RdwabQ#a(E=aYqG~H->Ndev-%2i!`5O9Ej>jxG z-y{3o_`-pQI=JMF8_qfZ;+IF>_vAb${dnRJAKkU;mV1sl%bJVsHR-aOo;m7BPmA;C zr-x4Y=&P6hXu~br4*Ty};+*{Ow-+C(f9W}2JM_yp%$#Y~^ZvT;$XnJ}_rj+RKEHd- zMgHB`pRev$SFMll_b20Qluz<=4R7?ZU&<0m`HLIz`o|~@81R4yOke^7__qP#j2`M> z;O6-EKnS8kg35CrxU>Nc47RU+4FiTPJZL@;^2-#QAYt!JsIEs8LWT6ZS;O$)1{m%y zd;AK+6>Ru2s8wqTLExd)I(I1Bc57f3)N7pcfbGLn&ooLjXLK*>s4@{*T~BoP^f$xe1sleoK-07gm5Qkv3~ zpj0BGPRUAErjmewYNaem`AVEQKmfPQB`$ZVOI_BoVGanUFo#J@V*Zj}#Y|>0kEt$Y zI#Za;1lI$mNzH0n)0)w&)-|`e&1^0!0}lYFIKxTKagNiQ!ODO-*U8RywiBJVa;H4y z3C~t3;GX!*r#|&r&rt32pa1OVr2tA$dH{9Gj73_~ReZ<)C=SOWyKkgB#nu2u6 - - - - Name - -

    height

    - - - - - - - - Examples - - - -
    example pic
    noStroke();
    -
    -background(0);
    -
    -rect(40, 0, 20, height);
    -
    -rect(60, 0, 20, height/2);
    - - - - - - - - Description - - System variable which stores the height of the display window. This value is set by the second parameter of the size() function. For example, the function call size(320, 240) sets the height variable to the value 240. The value of height is zero until size() is called. - - - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - width
    - - - - - - - diff --git a/reference/hex_/index.html b/reference/hex_/index.html deleted file mode 100644 index 0cd2631..0000000 --- a/reference/hex_/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: withcc -title: hex() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    hex()

    Examples
    color c = #ffcc00;
    -println(c);          // Prints -13312
    -println(hex(c));     // Prints FFFFCC00
    -println(hex(c, 6));  // Prints FFCC00
    -
    color c = color(255, 204, 0);
    -println(c);          // Prints -13312
    -println(hex(c));     // Prints FFFFCC00
    -println(hex(c, 6));  // Prints FFCC00
    DescriptionConverts a byte, char, int, or color to a String containing the equivalent hexadecimal notation. For example color(0, 102, 153, 255) will convert to the String "FF006699". - This function can help make your geeky debugging sessions much happier.
    Syntax
    hex(value)

    -
    hex(value,digits)
    -
    Parameters - - - - - - - - -
    valuebyte, char, int, color: value to convert
    digitsint: number of digits to return
    ReturnsString
    UsageWeb & Application
    Relatedunhex()
    - binary()
    - unbinary()
    diff --git a/reference/hint_/index.html b/reference/hint_/index.html deleted file mode 100644 index 50a14d0..0000000 --- a/reference/hint_/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: withcc -title: hint() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    hint()

    Examples
    void setup() {
    -  size(400, 400, OPENGL);
    -  // Enable 4x oversampling (if supported)
    -  hint(ENABLE_OPENGL_4X_SMOOTH);
    -}
    Description

    Set various hints and hacks for the renderer. This is used to handle obscure rendering features that cannot be implemented - in a consistent manner across renderers. Many options will often graduate to standard features instead of hints over time.

    -

    hint(ENABLE_OPENGL_4X_SMOOTH) - Enable 4x anti-aliasing for OpenGL. This can help force anti-aliasing if it has not been enabled by the user. - On some graphics cards, this can also be set by the graphics driver's control panel, however not all cards make this available. - This hint must be called immediately after the size() command because it resets the renderer, obliterating any settings and anything drawn (and like size(), - re-running the code that came before it again).

    -

    hint(DISABLE_OPENGL_2X_SMOOTH) - In Processing 1.0, Processing always enables 2x smoothing when the OpenGL renderer is used. - This hint disables the default 2x smoothing and returns the smoothing behavior found in earlier releases, where smooth() and noSmooth() - could be used to enable and disable smoothing, though the quality was inferior.

    -

    hint(DISABLE_DEPTH_TEST) - Disable the zbuffer, allowing you to draw on top of everything at will. When depth testing is disabled, - items will be drawn to the screen sequentially, like a painting. This hint is most often used to draw in 3D, then draw in 2D on top of it - (for instance, to draw GUI controls in 2D on top of a 3D interface). Starting in release 0149, this will also clear the depth buffer. - Restore the default with hint(ENABLE_DEPTH_TEST), but note that with the depth buffer cleared, any 3D drawing that happens later in draw() - will ignore existing shapes on the screen.

    -

    hint(ENABLE_DEPTH_SORT) - Enable primitive z-sorting of triangles and lines in P3D and OPENGL. - This can slow performance considerably, and the algorithm is not yet perfect. Restore the default with hint(DISABLE_DEPTH_SORT).

    -

    hint(DISABLE_OPENGL_ERROR_REPORT) - Speeds up the OPENGL renderer setting by not checking for errors while running. Undo with hint(ENABLE_OPENGL_ERROR_REPORT).

    -

    unhint() has been removed in favor of adding additional ENABLE/DISABLE constants to reset the default behavior. This prevents the double negatives, and also reinforces which hints can be enabled or disabled.

    Syntax
    hint(item)
    Parameters - - - - - -
    itemconstant: name of the hint to be enabled or disabled
    -
    UsageWeb & Application
    RelatedPGraphics
    - createGraphics()
    - size()
    - diff --git a/reference/hour_/index.html b/reference/hour_/index.html deleted file mode 100644 index 2232011..0000000 --- a/reference/hour_/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: withcc -title: hour() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    hour()

    Examples
    void draw() {
    -
    -  background(204);
    -
    -  int s = second();  // Values from 0 - 59
    -
    -  int m = minute();  // Values from 0 - 59
    -
    -  int h = hour();    // Values from 0 - 23
    -
    -  line(s, 0, s, 33);
    -
    -  line(m, 33, m, 66);
    -
    -  line(h, 66, h, 100);
    -
    -}
    DescriptionProcessing communicates with the clock on your computer. The hour() function returns the current hour as a value from 0 - 23.
    Syntax
    hour()
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - millis()
    - - second()
    - - minute()
    - - day()
    - - month()
    - - year() - -
    - diff --git a/reference/hue_.gif b/reference/hue_.gif deleted file mode 100644 index df2498dc937d3c519a756492802685dbb0eec92a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VPpVg0FeLy|AB$b%*+4)00000EC2ui0Av7U00092jE||y?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`ySqVb4KDwTq!^9hYgrJ|+v zx}0ja(<=6h<%-2#usJzScSGm)Q4N2V-RHP{P6ylL_8TmX=_ncndU;AkTKcvMl`07v+v?g$>m=Klt807P+q8=q zEHFG+eC(I}>&k3-i}d^vEgh_!H| - - Name -

    hue()

    - - - - - - Examples -
    example pic
    noStroke();
    -colorMode(HSB, 255);
    -color c = color(0, 126, 255);
    -fill(c);
    -rect(15, 20, 35, 60);
    -float value = hue(c);  // Sets "value" to "0"
    -fill(value);
    -rect(50, 20, 35, 60);
    - - - - Description - -

    Extracts the hue value from a color.

    - - - - Syntax - -
    hue(color)
    - - - - Parameters - - - - - - -
    colorany value of the color datatype
    - - - - Returns - float - - - Usage - Web & Application - - - - - Related - red()
    - green()
    - blue()
    - brightness()
    - saturation()
    - - diff --git a/reference/if_.gif b/reference/if_.gif deleted file mode 100644 index 02f3271277778bd88890204c3e6124b4759c7d72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2241 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 P*0&ahtM4I#5C8x>WvR7` diff --git a/reference/if_/index.html b/reference/if_/index.html deleted file mode 100644 index e8ad796..0000000 --- a/reference/if_/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: withcc -title: if() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    if()

    Examples
    example pic
    for (int i=5; i < height; i+=5) {
    -
    -  stroke(255);  //Set the color to white
    -
    -  if(i < 35) {  //When "i" is less than "35"...
    -
    -    stroke(0);  //...set the color to black
    -
    -  }
    -
    -  line(30, i, 80, i);
    -
    -}
    DescriptionAllows the program to make a decision about which code to execute. If the test evaluates to true, the statements enclosed within the block are executed and if the test evaluates to false the statements are not executed.
    Syntax
    if (test) { 
    -
    -  statements 
    -
    -}
    Parameters - - - - - - - - - - - - - - - - - - - -
    expressionany valid expression that evaluates to true or false
    statementsone or more statements to be executed
    UsageWeb & Application
    Relatedelse()
    - - - diff --git a/reference/imageMode_.jpg b/reference/imageMode_.jpg deleted file mode 100644 index 80e329cd8c134a338d05b5471f9b39735f405a58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8158 zcmcInby!qgw?9L7hk%rVyrh5v0@Bjbf~4dS!pu+u0xzH-VtmpJ-7qvt#|VgYOAd|F zl8S_sa}W5&_ul8b&%OWLb!P8<&WgR)UTdE-zlEE?eFA8-)HKxq2p$B`051TyMdhIH zjPOQyIV0S;Zit8ix0E$?@VCeepyPnVi-7WynkkpM8^X@k zjq9$9le4!A+=)vG?&JnNw;=!<$AumX-QRjjZr(25NQZxF;D0CA_jG}KbE&!6I(dP1 zq~{Zy6Xe1l0x~KUgu9>T`5G5GzeE=@J{krsTX$PH)C&q)9>(EJzSUF>R~Sq0&S z@Z{34b#wGaz@c15Q15e}&sWp{t~)w{`fgxPbYTSfgOin%{1-Vs>;({am zH|JudAAhWL&(jv}EZxA-zu2R^IZUVioY80 zE5;m@#)fyf5I#^(&p#B;Gx$r!N@V2bV*kq;2{M1}{#*j!-49s_J{lH*r z-r-V*!l9nF-e9toZN1J9+xcD~7jsZB>Oy_F?z_Mp5WZeq_neV1JGiZj8vu}D&UL`{ zher@006>a@{0!g{0KxsIw`UumQgT4pK>>%y=eD?M;3+^sLPA1HLP1JOK}$|XPRmG5 zK|#%UiJqR3p8gUo#RdH_{CfEBJ%o~+oRW%?hKh=Yfr^TX;k=___+>)-f0+RH9-t)w zH{pN}xdPzPLhxxJxLGg&#JDzy0_Y_n*sIwUJ^{%6`|Me#NKmI{gC4=$vkYl0Nt&8+B$+<{I13qmm5|U-!{6mmsj0B zw!ClR=<^JPuIU(GIgnDn@8lbvkYC%0T|J})@bExy2`+phCL)x$aDiKljsWz);|e{Y z_>*Xca}Qb!hrZt6vHR>95~E_oXzz9N8!yqh1H{)PJ`96SxS^U znUCbH$sG`R;i{d76+d%O*fEWQ6jH+7m35M!`E2S{F)FTNB%K+&XFdO_OPQg8V6L>M@)Uabm`VdW`a9UjB5=wc?@%7GZ3dLGYjbxre()(jD8~VM z6SK`Zmh4MHVSZL2m%bYLohe~7{f(0$+`W>r z4xYCkf}g4>f~ZqX-+}kf@3%c3yXu>-$rGD!o)|4no){zC(B?<~v}-@(qm7Uvr5|s1 z)?MWbEGc@snwU=P^@fr&HK%ts@@6<^ro*b!UeV7^r`&Z&*^mw4`*6A0shwP`2;GU* za8u=~qmyb#3J3N95DN=cv9Ld7v&2yJiIk2YY74wksIlMuCrUl2rlhCk=a+>}A0A8H z_rvgiPGE*V>f&P3ja;3yFTnxYM=#1_NL;)l3)zWF?N?@FQ=Gfe*t7KH2Q3Zd#`i@V z6O3V)!%2J2W7XlkH-&-t*(MeiC6DT>XAT|epTvQN>QRR6x*S-2H8vjMboB!N%xl~twvuac7)@L zf8kj(9!nY7=z>Gbs<(XBCv?Z7OB&<`yihTZCb_|5z#oho-W-MsQ}5e7Pl&>o`12}qFKhs`mY)&0S3~Oji5)#}_81LJTnk$Wcl`(>k5TRx&?{}Rd zx2PVhPT%e&<}28zkhRd2hem#Ir!LDkzspRWgE+N7VaKm=9xbjT%}vb-eIBsvu^Fka zo-|9_oH-WGyCV0u0;Rbur`ayc`lMLYB8H~-?mdB7c;z5D9?=N~$*WMf?68hoo;CMc;($@z2ud?K<%8(Ph@vc>yG;J+ z912aCl&{~!DpcXZLX}?pBHmG!of6f}C)VmXK%Pg7q%?J~h|~19bu+A;Wa`VZqNokR zGAbMH6OIXIC(PVz#HAx85` z0&WESu~b!+wgBzFPYSyQr&+aqFWYV#;Ja2a#F}d^FTXs zPH;=1@idR(RR-o`Hf1?aMs~}|VB{bUP-}l+EoL>e1nc~8+>J~ybKJ0GV7b%!i{Um9u@PqE%emGjXZX)mH3*4yK*eL zQ%!HsZU(<|L#&-OWlsrr_IJat5lU2@B%hWSo6dhNDct7FtwkI#{>!>J9wkqH)TD4$@jnwwRno{B~#rRlW?|?;D z^+`9jhL0eQy5kam8Z&~Q-1T7G=wGoEdplhTyCc!I{=IBywhyr?C$Le5b}La_igAdY z9Z*PJ<>yKCXiL#~cQ|fce5PJ3vB-2_=;P+Nddq9?aI0+aVTST?^~sIjtZhqPPMMk7 z@N7M+g3pYfpmsIB65OD6-uj@r#T9Z>fRwj|@d^|HeZ$p{0HWu;ys2=2)R!x{F-;TT=ocqGbS}29!XAhyd(Bkj@3@1J2;RH`u%`?!XcSp#NVqxBy8&1OVYN2$?T%H4%lD zzN$Kx0n+w-Nstc^gLMK3DIoyvZ=9@nZg7E<@%|!w@D85<>_J>da886ogcn3aL`+OV zOiV;dN=63a>3ECcN2rU1` z$&|P@AO>_C^yea0=UV}Zgp`mNLO_I%2Qopyzn3te;}AlkUjP~O3XhNg|J(v{0iFR` zVs1Kmu`47>;tU3iwjNKe-iXdpX0qd9{sm|8!Oi|T8H5%OAB3~?AfEMjGDK*bRW8o( zwdJ$&jVu3zo|Tlq$N&C=;67GTLSFbvFLp1?lcSp>b_DcA=r%ptg|c=ohbMVea}V0R z%()#qG7^k6tz2n@k%T7A^esy>(Z8NrqCuNUTyF8JYLA$Y-_Ih0=0zFK`|-qcTB)uy z`w{z8@k4eJ=ebP>M2d9Xdq+2|y5Iyi)pE{SJdA$Js+oFT;DQWlsc8$#c(A1dttA-9 zf0W9^&YZ$CZ!ZuZY2N2^d_zdqarF8A*XYZ2KKd4(GuqE5LSh^A9^{}qjo(emc6kW} zyqF0?wWmcI-B7F*zKpD%2+vc~vW6ZwJgWItlNnbCgUjlkDd>2m#lG_r3YzPY*7PI$ zBxR&W><@xLefGrs*cqNjJw4HvfAjuQ>oeuGGv}3LKk}`=$;|Ct&d(tcf{YL8(~Mh6 zYAw;9lv9=Cn=vz`9cO{T&#G-PRo!q|srpI@KbwoFLU2Q1B(k<#vb&z<-VxJtsi?-i(Jwv#`OdmryL;?GPp4aaoRik??&(WUqyruMp3~v}XKK z?aokBpCSr+g?h0L-G(}3uke+_q#YmsOnFEv8yj~ZNz5|bXt-itJ>6612z@2sc<=Fh zn5vk$poOL_i3XX##7;B1+WRc84x^J_%G;`V6JPNrF>V+PwRP%Qq!lJ zUyU?T!l9*M*R=+R%n3T4DaDusnl*hRgXb#q;HN{{AMV zF|5_6ZTGbJCNY@3_?L9o9;ir3uX38u+r4q?ZIMD9$v9r2;;Fc&Pex3tl853Zp1vFF zAKsQ`6IyVaekJy<{#fYQJtFk8B?VqO4pc48jKgE5vK>C>iM`{kVlmqaOP%<>E0-ON zSlT>`yAoIQH|nM?M{|@St|*>f+Tb^JxLJ)qr_kXeU#L)4RX9tdRexEDD@aT*%8yUWuBIA$MC&YS96nl^jorF)aa?@Qnu8kuiHAOEy35ylP5)W zI$3rdoEZn2`cRIRcha91dJwB4%HPI_Ff+z%4CIPvf|@L zz}P=tY6$nF66oWfklWElC$hQ$z8;)2%04sf-FixI(l_ig5ZAMXi{f11c->wRcNTh{ zgw0-y(7icQEd?{J3hRN6FKhV``J|0*E)i5a z&q;gOv%*cD(QtS!v`2202?mMYL+gJse5pY?!;#)Ft*v_BFKKL2St_6IckWLS$j*A@ z9f75dj*7mZV~;km9zhZc7K#4RmNa&Rm<&T9nY+wMzfj%+sak6R&%vx}LA2v-pN`BF z%llt3PaaW`e=CMg>A7-+8~Hg23dR$5vU_B&53wuJUgZ|%I+G1(IGf%dMZ`}Vp{$nZ zmx5#JgUGv2!=BoizLpyh){~e(vXF6g#Vr~rPolJzuDAxlJK5L(DNggi!nu8E(%Td+eMdi5r z)O?IV-X3)r2y_uja@uY$jYHDOKTm4`Nr)zqbThB=AEt zDVpU24v62~h!Ex_Cq0OsN^9ZBz}{cz+1}^VuIW!J?j?GR8wC?Tk>Em?ULU^l4&93R zd4ub>x?N1yrVIWKAFR0$+rN(kcEH5nTs+aRO0@mGv>jVJ6W==IpqAGi7aD6*?jTIp z<`bvYYc<Wh6gOS0~SzWo6Pr&nyTJ?2-o)CFy9X~Z? z5@hqMp(9s9&wRVN&Z(8kSH&-&SEO6Fmfp#3#vtukl#nc)BHmk<)}wtYGQ0L&Ak-`8 z{zNC?)0(%5hU#h6yrXF&ljZD68)YT#nSvii6HSx6`05vqAAMc%_-SBEnOuCiXuQbb zp*t&F3zZZh+S=vbKtr_6&vxQ#uE@5V7|=7P)z(Kh$eUAB@XDBuq33pth#aAqWi52o zUR^Q%8vPbZd777>NG6KvtT7O2T>N3m$<@C)Cl(`fFuv{}xhQ9B?P5Oqh9X|3P@b8Q z6Pjg}f|m)bk=2|bA1uwV{FE#0x&p-xm$`i&py&To+IHvVqNboo<3zJySxLb`XdU3H zr+4T_-(KH;23sr0ra=JQHaoKBz1;#N(^x{P3^;k{kn}T_3SuF2B zZNd<%*javbnuv+{Vzj_gndHr|1Jei94eaSk+yO~x0L8-uJxSGo;OJ#2pE$7J34W5&Nk zTe|DfJazhVK{oBM-b29LE23t|L1*PLp318soIcyJJ`|LFy%jcKUIC*H zx17cS1JdMz3&pATuPmQTI)}ZoJ3{kXtvpUX&J|u+lnJZp`ABmbZt}e|Xq6!wiRRUU zn&>}_j6WKrXgp|4)1=6D{uAbYeky45_r z_1Te1;%@2(D*opWT6@r@glH&5J))el;}YbKCelSw_;52IDo}j{jd7AqwNfB%VPf|~ zou;?js)ok9r?6}Y4q+*?6zH*Cvqi~@}*C0r)muPHx zQ85@d4kkac=IL^!nComD`XR);G)to4zG!euo(y9H>rDDyF8r;QR){8X|KQf?G{)o3 zsX|Q8QW%kvQdwKY2&HJNGYRx54?)&d8=5E?g2$3Tu!5CIW0^v2?-4am)L~*1Ps@s6 z*P(I+AiZavXv2qH^=L6}_h`Dw?;fFAkX*cu$*GB&z)E4a4n={h1^ZsFFWU{(iH zqwj3p&A%tu^B);r$$OjE9fA6o!D7_S{z6$%76<6~rI}C}55v9Z`(w+{**|&{=bJl6 z%H2eo7)!UW!sMIQDV{zGS9VM*`rjk?`?rsB!XBnqXH~vj^t0ktf!3NVgvLC$rMQ>PUVPo|s)W7r$!|rdS{ufi9>+{Z7-QLv zNl)VdT(3aw*a78GZ4)|aLj1Jl$iup`USe?Took0J3UTd6stRQhJ~=W@xCRsA>o-1W z02J50DXaPBp3T^pzEss(l)ZSrg1xYHW!grn`unm%jOa`(=i#A#M(3lvJ>Fct)|rsC zNx|v*0QTzSfdI|Gwlt5_;9Fe_wle|$8dEZF7LkkOz8SUm$Y3-Lt^VwL0r%mltG-F+ zTR5KVi&@48r#!{~N*KFUt;X_lWYOE;j?9#|1j{qE={>jYyeOh|lj+z~Btm)h>eoFX zSCusXTrj9$adlC1u{#wGIV_6k`FXnLY@=P`^uqKgF=^&X>`Qpj<+84=hcW}IpHC`I zEiO%OBspqkc7E(Vl)qV~vN8Xy*!+H#%%P2j2<)fi0UHkJMYkQTztw3ZA>MVOYyaBy z&Fx|FJ2Q&q9?$W~rj@0pA-AJh@0$@VbN6D0`0-&4`+O$kI+@wi@k8H^LvQzcy7|X4 zFUj61kF7h!Onix9H_}U+h75lb5p<;KIpBlU9Pf{xCM6GLGwJtcw*Qn?v@|a`+BOUB z5-p;6s#H{+*gPG*sN1daGK5a8bED}kMp`Bsv$Wv8UYK*wNZqdbIU>mM+M=_T5m^9N zDP`eR#8%0+B;Og5?O|@bB}Y2@@b&U86H=RwNAJv1Xsv(u6DH(ci9b#Faw@6tAo&cl z6T}gYD92*ont&)DET}G`$4NS99z`sWmeS;=2I z?%qu0)s_s_a7HM_5|dz|A7k`=ytD!m!_lihl3fTtEb64=fQPlR8TorVpO*uwaKHn| zdN*ojqLhcABGaJOW&-xnO}=6E(|lvlyQirlZoU?N2`s#|Eo20Ez6w@{?CK+XSOsF9 z?WUk`hh3UacSBw6PW1ASD4nW$ih>O8nD@V_U|==tFbkob(Ok~uVC~^~#@Q78k3O*y VrAy#}0}G@7ROEx0{XelM{|j95gl+%; diff --git a/reference/imageMode_/index.html b/reference/imageMode_/index.html deleted file mode 100644 index c3fe70b..0000000 --- a/reference/imageMode_/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: withcc -title: imageMode() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    imageMode()

    Examples
    example pic
    // @pjs preload must be used to preload the image
    -    /* @pjs preload="laDefense_crop.jpg"; */
    -    PImage b;
    -b = loadImage("laDefense_crop.jpg");
    -imageMode(CORNERS);
    -image(b, 10, 10, 60, 60);
    -imageMode(CORNER);
    -image(b, 35, 35, 50, 50);
    Description

    Modifies the location from which images draw. The default mode is imageMode(CORNER), which specifies the location to be the upper left - corner and uses the fourth and fifth parameters of image() to set the image's width and height. - The syntax imageMode(CORNERS) uses the second and third parameters of image() to set the location of one corner of the image and - uses the fourth and fifth parameters to set the opposite corner. Use imageMode(CENTER) to draw images centered at the given x and y position

    Syntax -
    imageMode(MODE)
    Parameters - - - - - -
    MODEEither CORNER, CORNERS, or CENTER
    -
    ReturnsNone
    UsageWeb & Application
    RelatedloadImage()
    - PImage
    - image()
    - background()
    diff --git a/reference/image_.jpg b/reference/image_.jpg deleted file mode 100644 index 30f34ff8197fb1cb8f82d8743d507f7c6cb6e9b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24126 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 V{$sd1oHfC5s`cxX9nHDT{{s{CE#v?I diff --git a/reference/image_/index.html b/reference/image_/index.html deleted file mode 100644 index 185fbd9..0000000 --- a/reference/image_/index.html +++ /dev/null @@ -1,192 +0,0 @@ ---- -layout: withcc -title: image() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    image()

    Examples
    example pic
    -
    -    // @pjs preload must be used to preload the image
    -
    -    /* @pjs preload="laDefense.jpg"; */
    -
    -    PImage b;
    -
    -    b = loadImage("laDefense.jpg");
    -
    -    image(b, 0, 0);
    example pic
    -
    -    // @pjs preload must be used to preload the image
    -
    -    /* @pjs preload="laDefense.jpg"; */
    -
    -    PImage b;
    -
    -    b = loadImage("laDefense.jpg");
    -
    -    image(b, 0, 0);
    -
    -    image(b, 0, 0, width/2, height/2);
    DescriptionDiplays images to the screen. The images must be preloaded using @pjs preload before it can be used. Processing currently works with GIF, JPEG, and Targa images. The color of an image may be modified with the tint() function and if a GIF has transparency, it will maintain its transparency. - - The img parameter specifies the image to display and the x and y parameters define the location of the image from its upper-left corner. - - The image is displayed at its original size unless the width and height parameters specify a different size. - - The imageMode() function changes the way the parameters work. - - A call to imageMode(CORNERS) will change the width and height parameters to define the x and y values of the opposite corner of the image. - - - -

    - - NOTE: DOM security will not allow you to load images file:/// URIs. This security can be overridden in Firefox in about:config, by changing security.fileuri.strict_origin_policy to false.
    Syntax
    image(img, x, y)
    -
    -image(img, x, y, width, height)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    imgPImage: the image to display
    xint or float: x-coordinate of the image
    yint or float: y-coordinate of the image
    widthint or float: width to display the image
    heightint or float: height to display the image
    UsageWeb & Application
    Related - - loadImage()
    - - PImage
    - - imageMode()
    - - tint()
    - - background()
    - - alpha()
    - -
    - diff --git a/reference/image_2.jpg b/reference/image_2.jpg deleted file mode 100644 index 02e4fe23e5c80e94e2709e71907a2125dfcab068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3917 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 a2i+UG*Pi>~QrByHbOB_-Os$a@#Qy`g3rr3G diff --git a/reference/implements/index.html b/reference/implements/index.html deleted file mode 100644 index 184a0a5..0000000 --- a/reference/implements/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: withcc -title: implements | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    implements

    DescriptionImplements an interface or group of interfaces. Interfaces are used to establish a protocol between classes, they establish the form for a class (method names, return types, etc.) but no implementation. After implementation, an interface can be used and extended like any other class. Because Java doesn't allow extending more than one class at a time, interfaces are created, which means specific methods and fields can be found in the class which implements it. A Thread is an example; it implements the "Runnable" interface, which means the class has a method called "public void run()" inside it.
    UsageWeb & Application
    - diff --git a/reference/import/index.html b/reference/import/index.html deleted file mode 100644 index ccc7676..0000000 --- a/reference/import/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: withcc -title: import | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    import

    Examples
    -
    import processing.opengl.*;    
    -void setup(){
    - size(screen.width, screen.height, OPENGL);
    -}
    -void draw() {
    - line(0, 0, width, height);
    - line(0, height, width, 0);
    -}
    Description

    The keyword import is used to load a library into a Processing sketch. A library is one or more classes that are grouped together - to extend the capabilities of Processing. The * character is often used at the end of the import line (see the code example above) to - load all of the related classes at once, without having to reference them individually.

    -

    The import statement will be created for you by selecting a library from the "Import Library..." item in the Sketch menu.

    Syntax
    import libraryName
    Parameters - - - - - - -
    libraryName the name of the library to load (e.g. "processing.pdf.*")
    UsageWeb & Application
    diff --git a/reference/increment/index.html b/reference/increment/index.html deleted file mode 100644 index dc08d2c..0000000 --- a/reference/increment/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: withcc -title: ++ (increment) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    ++ (increment)

    Examples
    int a = 1;   // Sets "a" to 1 
    -
    -int b = a++; // Sets "b" to 1, then increments "a" to 2
    -
    -int c = a;   // Sets "c" to 2
    DescriptionIncreases the value of an integer variable by 1. Equivalent to the operation i = i + 1. If the value of the variable i is five, then the expression i++ increases the value of i to 6.
    Syntax
    value++
    Parameters - - - - - - - - - - - -
    valueint
    UsageWeb & Application
    Related+ (add)
    - - += (add assign)
    - - -- (decrement)
    - diff --git a/reference/index.html b/reference/index.html deleted file mode 100644 index 9590788..0000000 --- a/reference/index.html +++ /dev/null @@ -1,472 +0,0 @@ ---- -layout: withcc -title: reference ---- -

    Reference

    - -

    This page references all the commands available to Processing.js. Regular Javascript commands will work in Processing.js script.

    -

    The Processing.js community is working towards a 100% compatible API, allowing all native Java code to run in Javascript. -Items highlighted in red are not yet implemented.

    -

    The original Processing reference can be found on the Processing website

    -

    If you encounter any problems with these commands or their documentation please file a bug - -

    -
    -
    - Processing.js instructions - @pjs directives - font - globalKeyEvents - pauseOnBlur - preload -
    - - - - - -
    - Data -
    Primitive
    - boolean - byte - char - color - double - float - int - long -
    Composite
    - Array - ArrayList - HashMap - Object - String - XMLElement -
    Conversion
    - binary() - boolean() - byte() - char() - float() - hex() - int() - str() - unbinary() - unhex() -
    String Functions
    - join() - match() - matchAll() - nf() - nfc() - nfp() - nfs() - split() - splitTokens() - trim() - -
    - - -
    - - -
    - - - - - - - - -
    - -
    - - - - -
    - Rendering - PGraphics - createGraphics() - hint() -
    - -
    - - Typography -
    - PFont -
    -
    Loading & Displaying
    - createFont() - loadFont() - text() - textFont() - -
    - - - -
    -
    diff --git a/reference/inequality/index.html b/reference/inequality/index.html deleted file mode 100644 index 7483660..0000000 --- a/reference/inequality/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: withcc -title: "!= (inequality) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    != (inequality)

    Examples
    int a = 22;
    -
    -int b = 23;
    -
    -if(a != b) {
    -
    -  println("variable a is not equal to variable b");
    -
    -}
    DescriptionDetermines if one expression is not equivalent to another.
    Syntax
    value1 != value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int, float, char, byte, boolean, String
    value2int, float, char, byte, boolean, String
    UsageWeb & Application
    Related - - > (greater than)
    - - < (less than)
    - - >= (greater than or equal to)
    - - <= (less than or equal to)
    - - == (equality)
    - - - - - -
    - diff --git a/reference/int/index.html b/reference/int/index.html deleted file mode 100644 index fae9316..0000000 --- a/reference/int/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: withcc -title: int | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    int

    Examples
    int a;          // Declare variable "a" of type int
    -
    -a = 23;         // Assign "a" the value 23
    -
    -int b = -256;   // Declare variable "b" and assign it the value -256
    -
    -int c = a + b;  // Declare variable "c" and assign it the sum of "a" and "b"
    DescriptionDatatype for integers, numbers without a decimal point. Integers can be as large as 2,147,483,647 and as low as -2,147,483,648. They are stored as 32 bits of information. The first time a variable is written, it must be declared with a statement expressing its datatype. Subsequent uses of this variable must not reference the datatype because Processing will think the variable is being declared again.
    Syntax
    int var
    -
    -int var = value
    Parameters - - - - - - - - - - - - - - - - - - - -
    varvariable name referencing the value
    valueany integer value
    UsageWeb & Application
    Relatedfloat
    - diff --git a/reference/int_/index.html b/reference/int_/index.html deleted file mode 100644 index 6c002db..0000000 --- a/reference/int_/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: withcc -title: int() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    int()

    Examples
    float f = 65.0;
    -
    -int i = int(f);
    -
    -println(f + " : " + i);  // Prints "65.0 : 65"
    -
    -
    -
    -char c = 'E';
    -
    -i = int(c);
    -
    -println(c + " : " + i);  // Prints "E : 69"
    DescriptionConverts a primitive datatype, string, or array to its integer representation.
    Syntax
    int(value)
    Parameters - - - - - - - - - -
    valuefloat, char, byte, String, float[], char[], byte[], String[]
    Returnsint
    UsageWeb & Application
    Relatedint
    - - float()
    - diff --git a/reference/join_/index.html b/reference/join_/index.html deleted file mode 100644 index 210adab..0000000 --- a/reference/join_/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: withcc -title: join() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    join()

    Examples
    String[] animals = new String[3]; 
    -animals[0] = "cat"; 
    -animals[1] = "seal"; 
    -animals[2] = "bear"; 
    -String joinedAnimals = join(animals, " : "); 
    -println(joinedAnimals); // Prints "cat : seal : bear" 
    -
    -// Joining an array of ints requires first
    -// converting to an array of Strings
    -int[] numbers = new int[3]; 
    -numbers[0] = 8; 
    -numbers[1] = 67; 
    -numbers[2] = 5; 
    -String joinedNumbers = join(nf(numbers, 0), ", "); 
    -println(joinedNumbers); // Prints "8, 67, 5"
    DescriptionCombines an array of Strings into one String, each separated by the character(s) used for the separator parameter. - To join arrays of ints or floats, it's necessary to first convert them to strings using nf() or nfs().
    Syntax
    join(stringArray,separator)
    Parameters - - - - - - - - -
    stringArrayarray of Strings
    separatorchar or String: char or String to be placed between each item
    ReturnsString
    UsageWeb & Application
    Relatedsplit()
    - trim()
    - nf()
    - nfs()
    diff --git a/reference/key/index.html b/reference/key/index.html deleted file mode 100644 index 35ac905..0000000 --- a/reference/key/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -layout: withcc -title: key | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    key

    Examples
    // Click on the window to give it focus
    -
    -// and press the 'B' key
    -
    -
    -
    -void draw() {
    -
    -  if(keyPressed) {
    -
    -    if (key == 'b' || key == 'B') {
    -
    -      fill(0);
    -
    -    }
    -
    -  } else {
    -
    -    fill(255);
    -
    -  }
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    DescriptionThe system variable key always contains the value of the most recently pressed key on the keyboard. For detecting the arrow keys, the keyCode variable is set to either UP, DOWN, LEFT, or RIGHT.
    Syntax
    key
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - - - keyCode
    - - keyPressed
    - - keyPressed()
    - - keyReleased()
    - -
    - - - diff --git a/reference/keyCode/index.html b/reference/keyCode/index.html deleted file mode 100644 index ffe5abd..0000000 --- a/reference/keyCode/index.html +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: withcc -title: keyCode | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    keyCode

    Examples
    int x = 90;
    -
    -
    -
    -void draw() {
    -
    -  noStroke();
    -
    -  rect(x, 10, 3, 80);
    -
    -}
    -
    -
    -
    -void keyPressed() {
    -
    -  if (keyCode == BACKSPACE) {
    -
    -    x = x - 5;
    -
    -  }
    -
    -}

    color fillVal = color(126);
    -
    -
    -
    -void draw() {
    -
    -  fill(fillVal);
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    -
    -
    -
    -void keyPressed() {
    -
    -  if (key == CODED) {
    -
    -    if (keyCode == UP) {
    -
    -      fillVal = 255;
    -
    -    } else if (keyCode == DOWN) {
    -
    -      fillVal = 0;
    -
    -    } 
    -
    -  } else {
    -
    -    fillVal = 126;
    -
    -  }
    -
    -}
    DescriptionThe system variable keyCode is used to detect special keys such as the UP, DOWN, LEFT, RIGHT arrow keys and ALT, CONTROL, SHIFT, BACKSPACE, TAB, ENTER, RETURN, ESC, and DELETE. When checking for UP, DOWN, LEFT, RIGHT, ALT, CONTROL, and SHIFT, it's first necessary to check and see if the key is coded. This is done with the conditional "if(key == CODED) {}" as shown in the second example. The keys included in the ASCII specification (BACKSPACE, TAB, ENTER, RETURN, ESC, and DELETE) do not require checking to see if they key is coded. If you're making cross-platform projects, note that the ENTER key is commonly used on PCs and Unix and the RETURN key is used instead on Macintosh. Check for both ENTER and RETURN to make sure your program will work for all platforms.
    Syntax
    keyCode
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - key
    - - keyPressed
    - - keyPressed()
    - - keyReleased()
    - -
    - diff --git a/reference/keyPressed/index.html b/reference/keyPressed/index.html deleted file mode 100644 index 4dd1e7b..0000000 --- a/reference/keyPressed/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -layout: withcc -title: keyPressed | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    keyPressed

    Examples
    // Click on the image to give it focus
    -
    -// and press any key
    -
    -
    -
    -// Note: the rectangle in this example may 
    -
    -// flicker as the operating system may 
    -
    -// register a long key press as a repetition
    -
    -// of key presses
    -
    -
    -
    -void draw() {
    -
    -  if (keyPressed == true) {
    -
    -    fill(0);
    -
    -  } else {
    -
    -    fill(255);
    -
    -  }
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    DescriptionThe boolean system variable keyPressed is true if any key is pressed and false if no keys are pressed.
    Syntax
    keyPressed
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - key
    - - keyCode
    - - keyPressed()
    - - keyReleased()
    - -
    - diff --git a/reference/keyPressed_/index.html b/reference/keyPressed_/index.html deleted file mode 100644 index cdb8462..0000000 --- a/reference/keyPressed_/index.html +++ /dev/null @@ -1,146 +0,0 @@ ---- -layout: withcc -title: keyPressed() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    keyPressed()

    Examples
    // Click on the image to give it focus,
    -
    -// and then press any key
    -
    -
    -
    -int value = 0;
    -
    -
    -
    -void draw() {
    -
    -  fill(value);
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    -
    -
    -
    -void keyPressed() 
    -
    -{
    -
    -  if(value == 0) {
    -
    -    value = 255;
    -
    -  } else {
    -
    -    value = 0;
    -
    -  }
    -
    -}
    DescriptionThe keyPressed() function is called once every time a key is pressed. Because of how operating systems handle key repeats, holding down a key will cause multiple calls to keyPressed(), the rate is set by the operating system and how each computer is configured.
    Syntax
    void keyPressed() { 
    -
    -  statements
    -
    -
    -
    -}
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - key
    - - keyCode
    - - keyPressed
    - - - - keyReleased()
    - -
    - - - diff --git a/reference/keyReleased_/index.html b/reference/keyReleased_/index.html deleted file mode 100644 index fddb658..0000000 --- a/reference/keyReleased_/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: withcc -title: keyReleased() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    keyReleased()

    Examples
    // Click on the image to give it focus,
    -
    -// and then press any key
    -
    -
    -
    -int value = 0;
    -
    -
    -
    -void draw() {
    -
    -  fill(value);
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    -
    -
    -
    -void keyReleased() 
    -
    -{
    -
    -  if(value == 0) {
    -
    -    value = 255;
    -
    -  } else {
    -
    -    value = 0;
    -
    -  }
    -
    -}
    DescriptionThe keyReleased() function is called once every time a key is released.
    Syntax
    void keyReleased() { 
    -
    -  statements
    -
    -
    -
    -}
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - key
    - - keyCode
    - - keyPressed
    - - keyPressed()
    - - - -
    - diff --git a/reference/keyTyped_/index.html b/reference/keyTyped_/index.html deleted file mode 100644 index f463c2f..0000000 --- a/reference/keyTyped_/index.html +++ /dev/null @@ -1,138 +0,0 @@ ---- -layout: withcc -title: keyTyped() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    keyTyped()

    Examples
    // Run this program to learn how each of these functions
    -
    -// relate to the others 
    -
    -
    -
    -void draw() { } // Empty draw() needed to keep the program running
    -
    -
    -
    -void keyPressed() {
    -
    -  println("pressed " + int(key) + " " + keyCode);
    -
    -}
    -
    -
    -
    -void keyTyped() {
    -
    -  println("typed " + int(key) + " " + keyCode);
    -
    -}
    -
    -
    -
    -void keyReleased() {
    -
    -  println("released " + int(key) + " " + keyCode);
    -
    -}
    DescriptionThe keyTyped() function is called once every time a key is pressed, but action keys such as Ctrl, Shift, and Alt are ignored. Because of how operating systems handle key repeats, holding down a key will cause multiple calls to keyTyped(), the rate is set by the operating system and how each computer is configured.
    Syntax
    void keyTyped() { 
    -
    -  statements
    -
    -
    -
    -}
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - key
    - - keyCode
    - - keyPressed
    - - keyReleased()
    - -
    - diff --git a/reference/left shift/index.html b/reference/left shift/index.html deleted file mode 100644 index c348ae2..0000000 --- a/reference/left shift/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: withcc -title: << (left shift) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    << (left shift)

    Examples
    int m = 1 << 3;   // In binary: 1 to 1000
    -
    -println(m);  // Prints "8"
    -
    -int n = 1 << 8;   // In binary: 1 to 100000000
    -
    -println(n);  // Prints "256"
    -
    -int o = 2 << 3;   // In binary: 10 to 10000
    -
    -println(o);  // Prints "16"
    -
    -int p = 13 << 1;  // In binary: 1101 to 11010
    -
    -println(p);  // Prints "26"

    // Packs four 8 bit numbers into one 32 bit number
    -
    -int a = 255;  // Binary: 00000000000000000000000011111111
    -
    -int r = 204;  // Binary: 00000000000000000000000011001100
    -
    -int g = 204;  // Binary: 00000000000000000000000011001100
    -
    -int b = 51;   // Binary: 00000000000000000000000000110011
    -
    -a = a << 24;  // Binary: 11111111000000000000000000000000
    -
    -r = r << 16;  // Binary: 00000000110011000000000000000000
    -
    -g = g << 8;   // Binary: 00000000000000001100110000000000
    -
    -
    -
    -// Equivalent to "color argb = color(r, g, b, a)" but faster
    -
    -color argb = a | r | g | b;
    -
    -fill(argb);
    -
    -rect(30, 20, 55, 55);
    DescriptionShifts bits to the left. The number to the left of the operator is shifted the number of places specified by the number to the right. Each shift to the left doubles the number, therefore each left shift multiplies the original number by 2. Use the left shift for fast multiplication or to pack a group of numbers together into one larger number. Left shifting only works with integers or numbers which automatically convert to an integer such at byte and char.
    Syntax
    value << n
    Parameters - - - - - - - - - - - - - - - - - - - - - - - -
    valueint: the value to shift
    nint: the number of places to shift left
    UsageWeb & Application
    Related>> (right shift)
    - diff --git a/reference/lerpColor.jpg b/reference/lerpColor.jpg deleted file mode 100644 index 8e7ac489062dcf6b9191153e3e7ce5559c8398df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmb_dc~H~W7QR1{Kms8U$U<3yvdF$AP}C6FK`Isrgs~)5*#Z#>l_eAqsx`{QNI@3S z2vT1PJP1%}C2VC;K`o6U+E_rMbpxq@ETU{RjZCp`I`iheH}k&x$364id+t5ooOA9~ z4k>>Hx*r7u1pr75fLPT4%1MCrOOHv+1Q37&0IXHiG{AVrCP&AC*d7%FDenV5KqHYz z6cUX>p|M(;T3Eae8m)sj(AUT7>l+aDa4P5#iAKgGVsmdOJ zMXCbf!yq%DhJ|2QNZAW60HCG@gCJF$>wqKF)nFPB5?aGL`))?SA(*a8It&KaMrxq` zbb?@Na0J#x-@7>N(ndYAJCv(;!})lI1~D{B{Jm?*&*~S*=BYS8w^M`BF;6UFzp*4> zA)s^8aMOClsBz!ONlV*^z4mcazUkVgm9p%5Q-XSf6u`Ite4&wa z;d))wltdIaXsGJjvE>?Q=g?|>Wbb7XEiC+U%}95dfJS|6^LIHSxx!5F(f*;8cGr82 z6NKcej~s)RDwEx-(+A?K5)LMY1*kKcS2W{AbO(0qG+W`ulXO*fIMAL;--M(y#j|~i z)hhG$>^g<%SB@{AS=ANyLnWa2U0WR+X;atxbz4S%FQ zX(XUgt_3eH?QZb2z7+M-wFSGy8<)Fw9ymDAmgAWidSa?OQyM`v7fx3!Gf$SXX=2 zmT;XlIF@_b*c^rOZ@Nxga{ArAm7m$I!*6qD=afG<7MHZYVysl)IdsOuL*j68`%;yh zMjcQ6a6-}?vX(ej_Il<0hs2$1-c`wlC!MWfa!n<0M}N%&jW-3F!zJM$wV|&3b<7sh z;?|Mc0XF5-OMZ{Wx_NYcE%<-fc4+OiJFjHDy&U7KO`SNK=IvrZG}D3cot!Zz^7=Oq z*xcbbU@_9B{if=CRD{@FEZArK=88KtlwvB^L5@!O$((G{?7ezn=NALU_iu{I+%=Pb z>*wGrb2UD_Xs<0V`CQ&V*u>KR>sGsNn^iIKr@cZcXHz#mFZJ_m7Oi`>FR3Ht(^auc ztMw}{yQTzE9575yE*v?R4S;)82LOuWlK{pux(Kv~xIKSS=;-^x4rxD7&#!1HSAEOF Fe*m - - - - Name - -

    lerpColor()

    - - - - - - - - - - Examples - -
    example pic
    stroke(255);
    -
    -background(51);
    -
    -color from = color(204, 102, 0);
    -
    -color to = color(0, 102, 153);
    -
    -color interA = lerpColor(from, to, .33);
    -
    -color interB = lerpColor(from, to, .66);
    -
    -fill(from);
    -
    -rect(10, 20, 20, 60);
    -
    -fill(interA);
    -
    -rect(30, 20, 20, 60);
    -
    -fill(interB);
    -
    -rect(50, 20, 20, 60);
    -
    -fill(to);
    -
    -rect(70, 20, 20, 60);
    - - - - - - - - Description - - - - Calculates a color or colors between two color at a specific increment. The amt parameter is the amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is very near the first point, 0.5 is half-way in between, etc. - - - - - - - - Syntax - -
    lerpColor(c1, c2, amt)
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    c1color: interpolate from this color
    c2color: interpolate to this color
    amtfloat: between 0.0 and 1.0
    - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - blendColor()
    - - color()
    - - - - - diff --git a/reference/lerp_.gif b/reference/lerp_.gif deleted file mode 100644 index 933c4143e4500cb45849c3e7ca21fed0a7b1b734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2160 zcmV-$2#@ziNk%w1VT1sL0K@l=)q{hB`uh6H%F1+f zbhERwtgNhTY;5W2>E`C<^78UyV`H0}n~I8x+1c65%*^8A;(L30($doG?CkjX`1JJj z_V)Jg@9+Hl{LjzNA^8LV00000EC2ui0E7U9000I5;P+uhz@TtQ6y9(L& zAA-xZ&Kc(C=;`X~?CtLF@bU5)&cl_jBA&L*=N0PICJX6dC_0V zTAm(e`aq7Q%MBcoDqYI7sne%Wqe`7hRqD&0KTmoa`hZ^ti!V877)!RS*|TWVs$I*r zty{Mou0rTQZ(ATtB)U@k`f@CSzkmY^9!$8f;lqd%D^@)As!zLtUg`Y`VT0erm@{kM z%z1EQi*&bX1@Ov&QKT9Gd+;!zb&uDuW6PdRySDAyxO3aq5O?m+yD3dmwye6faoxz1 zD__n$!Drugg&q@LS?pid#$7kx&b@nX1iUvuAB~qf>g(BC?^w^iz5Dm@9-&T{XOWRh%B~v;A{AmnBj>j{XM>!Q5&>g2DZ1}p54 z#HxDhvB-YfW2Cz-%WRIx+8XQsv^rJ`E2r2t+e3`cW~%J9-MXkPoZOaMq_cmDYi+vf zws`KQjmEp~w|+_qEwIwsnTl_J|2UE$B4I6%avuQV&?QfLFhlb>sA@Wc;qeDTO1uYB^%FYkQw&^y2T-93A5TmaZ-ul@Gickli8;D;~%_}}whebKFv zum1Y%x9`3H=68<%00IP1|NZvokN^Jq_s{?T{tF-g2PnV-{!ai1jGxS`*BS&m@PQDF zpadsK!3tXNf*7oz0-eS{`epEgAPk`hKezw^kZps8yByh8$if!7@P#mpp$un8!y3vE zg_a|g4R^@H9{P}n3|IgI7=Xjt0ceOwOrjE($iyZ(@rh83q7XiTFT*T}{;y77%?{9+l!=sPmP@s4=RqaOE2$EUSskAMuM zAnz!F0!W~b9h86~7s<#*I`WZ_jHDzdNy$n^5|Q(>q$W4X$xeFmkkpf(-UuK8Qkt@q zs63@AQ_0Fzy0Vq9e5EX7NlRA};Fg#ip;=uGDU#_6F0Ou(J+e5X9) zNzZxOv!3|8r#|z^&wct6p9csiI{_5Xf*SOo2u-L$7s}9vI`p9o9cX$WO3{j1^r9BM zzyU5G(d=CR;G-Z7sYpjk(vq6=q$o|PN=@2Prfor%KhTTJ@?}&8k+d+SCDT^{ZeFt60U_ z0H)fMgY#>ETGz_fwz~DLaE+^6=StVQ#?QueZyjeubzz}e1v_OqZ3t!PI}+R~c#w4&WCYFEqJ*1FcU zUG#nnF_L_P4+du5fX?Th86oKiC z#3ywD3X)VZjt2KbAyAI8l&4H(fG|WfCpi%;#IcWw%;U>o4zrlWTo0gVSp>>phBnsB m<~FDrS%^a)!pO6p_sr)$n_0(YSTGJk0029pQh#6o diff --git a/reference/lerp_/index.html b/reference/lerp_/index.html deleted file mode 100644 index ab91b92..0000000 --- a/reference/lerp_/index.html +++ /dev/null @@ -1,164 +0,0 @@ ---- -layout: withcc -title: lerp() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    lerp()

    Examples
    example pic
    float a = 20;
    -
    -float b = 80;
    -
    -float c = lerp(a, b, .2);
    -
    -float d = lerp(a, b, .5);
    -
    -float e = lerp(a, b, .8);
    -
    -beginShape(POINTS);
    -
    -vertex(a, 50);
    -
    -vertex(b, 50);
    -
    -vertex(c, 50);
    -
    -vertex(d, 50);
    -
    -vertex(e, 50);
    -
    -endShape();
    example pic
    int x1 = 15;
    -
    -int y1 = 10;
    -
    -int x2 = 80;
    -
    -int y2 = 90;
    -
    -line(x1, y1, x2, y2);
    -
    -for(int i=0; i<=10; i++) {
    -
    -  float x = lerp(x1, x2, i/10.0) + 10;
    -
    -  float y = lerp(y1, y2, i/10.0);
    -
    -  point(x, y);
    -
    -}
    DescriptionCalculates a number between two numbers at a specific increment. The amt parameter is the amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is very near the first point, 0.5 is half-way in between, etc. The lerp function is convenient for creating motion along a straight path and for drawing dotted lines.
    Syntax
    lerp(value1, value2, amt)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    value1float or int: first value
    value2float or int: second value
    amtfloat: between 0.0 and 1.0
    UsageWeb & Application
    Related - - curvePoint()
    - - bezierPoint()
    - diff --git a/reference/lerp_2.gif b/reference/lerp_2.gif deleted file mode 100644 index a35a5ac817584e656333873a8f8680d7ee534796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2253 zcmV;;2r~CaNk%w1VT1sL0K@l=)q{hB`uh6G$;oqb zbF;IvtgNhOXJ_f@>E`C<^78Tk005htn~I8x+1c65%*^8A;(UC3($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u0PIBizsH*yxI zhL=8wQ^|4zhoeZ7DqYI7sne%Wqe_L^a%azy+=4#P*MVY74jRIW9ZR;X*|TWVs$I*L zEr+TQI>^iR#}bLH61%nxi=eOHzkmY^9!$8f;lqd#hpoz!?w?k8yF%E&H?if*m@{h* zyqKcgY*+!bazNCm2EQIsr%u4Swd>cgW6PdRySDAyvo*Yp+q3RT(vm5oPA#DLk>kjd zD__pMx%21DUn9`4!Lz*34uMYw+n0E8*>2chqkNTbaxNm!Iz&;zy9;{ zx~r@AU93HK1n|WtfPDlOXdr9o>31Ffe;D|88h`>0XyAktnwLO=ywR0ae-dr?V1V&e zDB_69A(&r=>s{htcM+24qKhV`x8Q~icIY020=}qYg)u6q;TS5~_#cSh?Pz3yJ)+3q zia3S{T?ETPc_fS%p12>4OcE*Ib5c&}Ws+9{$)R3DwkTegUK$DJjAGVE=7(m6hh~~O zuK6Q-Lc*EjcyrQ8qMa#@=^=}I^66)tRmym0kZ%&|Bzb)vIw7D-=ILmW^F=Btfs|rt zX_J^{s+^{qI@f8NS;ko&sil^8DxQsky5*{^9+;?)fx0=UtPl^Ie6PkLyF4+8EFURz#w#a$bErnv-0{GRE-Nw4 zI+ANH(79?$bkXbX406xjI&JKfKL3eyrSQ&dGQC&7>+jM~BP;c$RZ}=N*}$HSc5-D~ zh#|kjGR*U#ZFAZ+s^PwzX5Go&UGUIzOUn0rYPUK#wtmMA_|t+*TDakkCoVL`ftPxC zc#qd=wAF7DtT^S2TTW;H=D=Rw9O;_3EcvvHPYtc<0(TxX>!7>-`jn_63%kOrEBzgA zzy}X}1i}~Zn(RsEEuittH=h9Uu|e-VYXKw>0PB0Q{c-14zID8nA!}G++b{$iM_9Z~zd* z-`{En!3tXNf*8!81~Kgz$tYOkoB;sKO2|U;qnPzz8Q-!Wi1{ zhB(Zj4tL1I9{Ml>J`AD{XGpsm3h{_YOrj2fs6-z!U;zwZ01y16Ir0*1Gn! zu#K&3XG`1K+V-`mZGZ>d>e)mJ;IzO+t#E@&+~FFxxX3-Oa+Ay4Hv zrm$-KLLKY8wKV_fuzXj{;ugF3#R7h?g4pDc$atkPo5`_`cbu8dpeRLm0ghfM!(kp9 z`N&6JjDGgh2fJWkE83ZiY1%^NDqH!=SRTt;s*|DFJsB?@@`_QWLgq4?`OIiO3S4+| zom_n&C3z`IPUcMKI@|fqT#k!e+WeC?y;&Tj$%|w_Lg+#p`p}5p2~XzY6B?l;98lg$ z2SO%I=}KGr(*95gXiCB$SAZiQ5s8PWM@{NdmwFyP>9h!tp$u%e`qi+GwXC(#=We*- b1F!%GK7hgNUi - - - - Name - -

    <= (less than or equal to)

    - - - - - - - - Examples - - - -
    int a = 22;
    -
    -int b = 23;
    -
    -if(a <= b) {
    -
    -  println("variable a is less or equal to variable b ");
    -
    -}
    - - - - - - - - Description - - Tests if the value on the left is less than the value on the right or if the values are equivalent. - - - - - - - - Syntax - -
    value1 <= value2
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float
    - - - - - - - - Usage - - - - - - - - - - - - Related - - - - > (greater than)
    - - < (less than)
    - - >= (greater than or equal to)
    - - - - == (equality)
    - - != (inequality)
    - - - - - - - - - - - - - diff --git a/reference/less than/index.html b/reference/less than/index.html deleted file mode 100644 index f83bf9e..0000000 --- a/reference/less than/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -layout: withcc -title: < (less than) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    < (less than)

    Examples
    int a = 22;
    -
    -int b = 23;
    -
    -if(a < b) {
    -
    -  println("variable a is less then variable b ");
    -
    -}
    DescriptionTests if the value on the left is smaller than the value on the right.
    Syntax
    value1 < value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float
    UsageWeb & Application
    Related - - > (greater than)
    - - - - >= (greater than or equal to)
    - - <= (less than or equal to)
    - - == (equality)
    - - != (inequality)
    - - - -
    - - - diff --git a/reference/lightFalloff_/index.html b/reference/lightFalloff_/index.html deleted file mode 100644 index b095ce5..0000000 --- a/reference/lightFalloff_/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: withcc -title: lightFalloff() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    lightFalloff()

    Description

    Sets the falloff rates for point lights, spot lights, and ambient lights. The parameters are used to determine the falloff with the following equation:

    -

    d = distance from light position to vertex position
    -falloff = 1 / (CONSTANT + d * LINEAR + (d*d) * QUADRATIC)

    Like fill(), it affects only the elements which are created after it in the code. -The default value if LightFalloff(1.0, 0.0, 0.0). Thinking about an ambient light with a falloff can be tricky. -It is used, for example, if you wanted a region of your scene to be lit ambiently one color and another region to be lit ambiently by another color, -you would use an ambient light with location and falloff. You can think of it as a point light that doesn't care which direction a surface is facing.

    Syntax
    lightFalloff(constant,linear,quadratic)
    Parameters - - - - - - - - - - - - -
    constantint or float: constant value for determining falloff
    linearint or float: linear value for determining falloff
    quadraticint or float: quadratic value for determining falloff
    ReturnsNone
    UsageWeb & Application
    Relatedlights()
    - ambientLight()
    - pointLight()
    - spotLight()
    - lightSpecular()
    diff --git a/reference/lightSpecular_.jpg b/reference/lightSpecular_.jpg deleted file mode 100644 index c725ce15c2135aca3a5838cddf816824fe016e38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3397 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 Kb+vMN=f405fx`>{ diff --git a/reference/lightSpecular_/index.html b/reference/lightSpecular_/index.html deleted file mode 100644 index 24f28d5..0000000 --- a/reference/lightSpecular_/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: withcc -title: lightSpecular() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    lightSpecular()

    Examples
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -directionalLight(102, 102, 102, 0, 0, -1);
    -lightSpecular(204, 204, 204);
    -directionalLight(102, 102, 102, 0, 1, -1);
    -lightSpecular(102, 102, 102);
    -translate(20, 50, 0);
    -specular(51, 51, 51);
    -sphere(30);
    -translate(60, 0, 0);
    -specular(102, 102, 102);
    -sphere(30);
    Description

    Sets the specular color for lights. Like fill(), it affects only the elements which are created after it in the code. - Specular refers to light which bounces off a surface in a perferred direction (rather than bouncing in all directions like a diffuse light) and is used for creating - highlights. The specular quality of a light interacts with the specular material qualities set through the specular() and shininess() functions.

    Syntax
    lightSpecular(v1,v2,v3)
    Parameters - - - - - - - - - - - - -
    v1int or float: red or hue value
    v2int or float: green or hue value
    v3 int or float: green or hue value
    ReturnsNone
    UsageWeb & Application
    Relatedlights()
    - ambientLight()
    - pointLight_()
    - spotLight()
    diff --git a/reference/lights_.jpg b/reference/lights_.jpg deleted file mode 100644 index a78b9c78c06da534a858a3d7643a102d5d403450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3609 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 - - Name -

    lights()

    - - - - - - Examples -
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -// Sets the default ambient 
    -// and directional light
    -lights();
    -translate(20, 50, 0);
    -sphere(30);
    -translate(60, 0, 0);
    -sphere(30);
    -
    example pic
    void setup() {
    -  size(100, 100, P3D);
    -  background(0);
    -  noStroke();
    -}
    -
    -void draw() {
    -  // Add lights at the beginning
    -  // of draw() to keep them persistent 
    -  lights();
    -  translate(20, 50, 0);
    -  sphere(30);
    -  translate(60, 0, 0);
    -  sphere(30);
    -}
    - - - - Description - -

    Sets the default ambient light, directional light, falloff, and specular values. - The defaults are are ambientLight(128, 128, 128) and directionalLight(128, 128, 128, 0, 0, -1), lightFalloff()(1, 0, 0), and lightSpecular(0, 0, 0). - Lights need to be included in the draw() to remain persistent in a looping program. Placing them in the setup() of a looping program will cause them to - only have an effect the first time through the loop.

    - - - - Syntax -
    lights()
    - - - Returns - None - - - Usage - Web & Application - - - - - Related - noLights()
    - directionalLights()
    - ambientLight()
    - pointLight()
    - spotLight()
    - - diff --git a/reference/lights_2.jpg b/reference/lights_2.jpg deleted file mode 100644 index a78b9c78c06da534a858a3d7643a102d5d403450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3609 zcmb`Jc|26>AIG0_W-%khSR$DkgGrJt$|bj9ED>dJ)1ta#Y-18;EU9kU!bsP0aU-&; zBqbVB*<~%1Znj)&i*O}dsr=4xyL$cp`2Bu={66!V=e*DN`99z8^L)>9mc`D+ejsLH zYHkW37yu{a2NuTw!Pu9{4ge590{{*ora_o$PNN;Ow%KQDZfOD_2mn~a(AdZX76ZWJ zgb&BY%!qX0;31MwE5HI2G71rc$@Q|bHMJA)3C|PGg5!5WV$A-5?OV}V2+&)4YAiEyvB8zI|S^w%)#Mh7TS>+A z<@o)520@Pj_;2ScF@o6um?HJYZeOw4C;)IR0D$!`R&35L7^~07&PX)o_}2aGb~mE0#0x@pdbQ(2@r|^E!KiMWZq~L5__eD7_1N;g~ka( z$P`zs%Y@t+LdZg4Eb3bi1f$T%2!cFLTtbXQ^^#mmmX;w1e9$N~7LQr>gCP`}fC2KF z;#v||L$ah4NrMrqu$D^q4l=UY_AFj(fTKha|MzrW5)eQNh13O^;Zh(75acxt#pn$0 zph6_sWNb!z)xcsm5J4fH1QY>T&4;hwrY1OI>WFa^IqH7ubD-B!L`&ZtI{4w4`LyXe zSEVan5l*GzqdaBKfzA#Pf@UaG^6{#H9FytLdC8Y)R#UNcEab5QMa{j<%1 z7VBx~klm8+2I<7Xw-3%n-U|MtPV*iX7v zLsQ(+F9h7q98N*y@6A1`a(cKcO)@zbB~1VMBW+=9G0JImXy=VsV6+o7h17reCc>xR0HdFVm;sB4iS#fHJs+L#yRcl&)7$+)<)pQiSn6v z`8FS-QAp5$>cZi)$>x3GI`deCuwcVASsjw;gEjBQHJ@}hyFK^qGZ_1w;ps4E6V=aR zsBFj>-7s%k^&*r<%y&^z8WvKz>okHH`~3Wo5Zm_VHJ)OW);z7IZ^I%uGtnJld(;mv zdSFv-8q4f*NaI=Bo>KL&9p2|c?+ktQZx{__Yb(bZkj7$Y3$FMDxmEZXn|B{e;@>%T zelSx$WP15W-;`U4(Y}R`gI|{)ln*HHe!FLM5iFG#7L<3vc8O8nF$`mO!JC)OD+ob| z^^@JfRMwfPmme#fL&-x8iceL@4V-ie<>4?@yP4c7?`TzE($#*`Wp@(ELG@j-35C{G z6XLS<=7MdGg{7lIu$SB2<~oV0wE02Hg183(!Pw*7&Jq04$Q?f!pV7~@FppD?bWI)! z-&%5?%Wu5-qF+x%KNe5(DhSn)%Ao9dqbXl{cAtyC`^VyJdf%$sdC$(6(e)ySw|p#= z>KSP|GCn(ZGK_Aj>dHRkfA|K^IQLif#G_v{Djt`9{i<}|vCQ&zqrYbu%g(vZJ^p2{ zH>NJn-rjeP*}U`kF7nXF-@MPJ>AUoqZPa%??J4BCO_piNx~MU>r4|bCi!(`%_>rua zAk8&1>3-NTtL|Yd#J(4;6RxtqCnjfoOt;_F4)gi&qOr^Z*-^FPlBn>sjWe@CRXACA z?~cm5I%84;<9~TYk_NOMU3w;aY6~y0gQ5TUfqBoiX{$GbE;lo;ui0yRf^8*Tgd3h8 zqO>|0pJG!YsPE3(vF=(mCeZho>>ZbOfNk-k_CmAFyo3Y4zDRnhXdoIB-y^EFhy7Ca zc&lRLmZ0iW3000m1BxY^svEqMb{0vDlu7ntN{se)RDQ~-T?j1+p#NNaqJa}xjI9sY zDr6u*v_Fw@vqa@JY2qRuX4#zK?@G?gA^6dCT1!x&GfG!hWvMlfAv(%nNHA)a^}g7Qz*T>fAv?+iv`I zDU6#!@}NmpW=VB$e`)XKp5P49!t@Q?gckajuAdWoF8i`B5tgh?SW<8O(PQ+*_eJ-_Ft6NwXolx!`{<`d>8t3d) z{hBHNNp8tVQ^6u|kxgT#%<#EV!&ZzM=eAyzRWuK}&9&l6TJ#@Ua;&oP&8zDZC)f_X z@jYP`r}_siM(3)sa?AsxrCJj2{UF7EY%uTV+r%uv-+Gq1b#C>GeQxPFyPyB$#@lD1 z(WRH@gq5E-Fi9U$t|`x}fSUOC;tH4rTBFau5-VmkmF~Z`vr3b7X_WwJnvsWPs}6~0V1%LSj4QZYw6x(a!}gul`m~!y ze2PZ0EtEkvybl%IN_ih&(<2#XXpt^|#7H|l;z;`GeUi6~-7y+7G~@0Re(?1v@59A% zw_AuArbz|ZoKtcqqeXD*-V`NnBTWgBiWG%s&92?ukXheWnxleG_83m|3(T{`G-(@j zy^%^yP3mWthuB-zXX8tyN_9$&TK2mWiem3&X|MXTyq5iHy%pW)AwVPPbvBL|THPggtaC{X8~=k)E5S zoOg~`rxr3^Hgs+7hPj(r)h{D%*!CZ>qJJ5B%02m9lZ4f>8+NB;y6@?0)8$9WLOlkfG;vmI1JX#Dw2O0u^e1v_|#((yS z*h2c4dR?6=^-`uqF45(Hj9SEz&f|ZU9w0$wHr=6B_SQljjpx&gj}C6%!+qIumeShx z{^;92GGha=Npu=7-jjcioW7B!&RgS9#EyEZHNl%tU2xd6z(?n&;Y2@B$RBF&(aII_ zjakWUqqTn$KYQ3dxZ{u@Iel*n{<=r@Lab3lus8;|g+%u2hTaK|<^Ot`W8 zeB-Y(^wjdd2v?cPL+PH9pxwrOfhq1y+M*Ma8_#N-mc%7|2ylwR!W zJmApFH%yy@rpB?GW$wL6_;Ss+RJ!$nYRU)Ah~8YEsfI8+j7qu#HB2&!aqw~t^^V-u z&`r!}u_F)VhcsAeykp&=;%B+&FTP1PPQSv7<^8#^O_)R#lkxj$(*5?}!HWv$_l=)q{hB`uh6G$;oqb zbF;IvtgNhOXJ_f@>E`C<^78Tk005htn~I8x+1c65%*^8A;(UC3($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u0PIBizsH*yxI zhL=8wQ^|4zhoeZ7DqYI7sne%Wqe_L^a%azy+=4#P*MVY74jRIW9ZR;X*|TWVs$I*L zEr+TQI>^iR#}bLH61%nxi=eOHzkmY^9!$8f;lqd#hpoz!?w?k8yF%E&H?if*m@{h* zyqKcgY*+!bazNCm2EQIsr%u4Swd>cgW6PdRySDAyvo*Yp+q3RT(vm5oPA#DLk>kjd zD__pMx%21DUn9`4!Lz*34uMYw+n0E8*>2chqkNTbaxNm!Iz&;zy9;{ zx~r@AU93HK1n|WtfPDlOXdr9o>31Ffe;D|88h`>0XyAktnwLO=ywR0ae-dr?V1V&e zDB_69A(&r=>s{htcM+24qKhV`x8Q~icIY020=}qYg)u6q;TS5~_#cSh?Pz3yJ)+3q zia3UNYw?ABH*Rn#q-!qL&`Bm?N8X z9^vMaXv*niops(xWu8qI$!DJzo;YQfHGY}qoP)CIC!$rV+31*$o~fvwf=)_lp)#5o zdcrL;;qBCyC-Fs!P@I{R$@v^q>1DWfk!i>tPP8oQ&nrGne5wZ{f)ZnNButFE$K zGFxrC?!vn6yn8-LE}!>;Nw1On(%J8#`9c}+nge4hs=<>c%qp7)XX&uGV@3?+#OPva z@sSw+o8`tkc3kk9AipSbrgfG~;>im`j4-^O66^2CbgIlF%&BfmbIoG1Y-^)7ABZ!a z=X#tnmOcj?w0%h{{bbWl8wqvPI!;YBj6?Iv?#`tyJ)YIbdL16vVPlQqva{lgGPV_n zO=i}RhMRHOB9e`*+soN~_swU=oA%6Wv%Le}$@U#HwSc!Qc-s@|EjZyjIQ}@2aLb$c z&x;=ix#Wuz?lW$nhc5d6Z4rzPo8dXjEuiVFw;p=wrU#Hf0H_na^>+c}uKVu1_wM`e zzy~k9@DU6jeC=ARU7YdEH}CxOx)%?900ST&chT_;K>haGchCLz-iHtV_~MsO{`uuc zVE+08v~RuT1b^55{Pfpv|NZ#qumAr1&#!*}^?Tpn;#V918t{M!OyB_i$G-&(U;zsd zpv(v;00>&}f*8!81~oc2FDOC8QE-GPOrZ)_Xh9KrkO2!|00T;>v+v08 zhB(Zj4tL1I9{TWyK-^&jf+#~8sxCf6OrjE($iy5Dv4;g8^4kOzCV)5E@s4-|qXY^dfio&k01^nK zAO}gvLK^arh)kp+7s*IO`tfp&jHDzdNy$p~F^-3;VQ~l`0Zw|dlc4;hC__ogQJS)p zs63@AQ^`tG65y4Oq~I%ONy}Q=@|L*Fr7m~L%UT15Ci2=sc%7)5*?ty0e||e5X9) zNzZxO6P^diCpiU_&wl#zp8yT0KnF_Df*SOo1l?zR4sZd6I<%n>eW*kuO3{g0w4xZj zs75o&(Tytq^g9;_sYpjk(vq6=q$o|PN>|EKlzy~0Esd#6XG+tWUf`tyP{0Lr%F~_t zw5LG*sZfJT)S()+s7O7kQjw|voGRd{P>rfor%KhTTJ@?}&8k+d>eQ`z^{ZeFt60O* zsnl6f03HylTGz@}uQosd4Zvvw=1SMP+V!q@&8uGb%GbX7^{#MjfCn&XRx}FWt%!xI zViU{Q#X7dJkbSIVBTL!IT9&eOmFr(O%h}F)_OqJ(tY}9|TF!>Hw5UyOYAI7z+x<~B zu#K&3XG`1K+V-}%&24S}LRi;cE<(T!u5gD-+~OMdxWV;6UwWIoA=L`G(2cHir%T+_ zEVs4%&Hd1GsmtB&dRMsCJ>z5^1R(Ex_q^!ku4?>39qVMWH2*2DZs$wi`r7xt%Dt|F zxa5$?c%?F%39x_%oSDv`C`ESxj$SB3UIIJ#!4F=He)iJ`yI^1|+L?@L+QQ)ud-%g3 z9?M&*lcB?17%v_2iczM*;ugF3#V|e!TzGSxRDB>Nc_~UxcFf}*`}oHsj*DDs{1Zgo zSRACui)28; - - - - Name - -

    line()

    - - - - - - - - - - Examples - -
    example pic
    line(30, 20, 85, 75);
    example pic
    line(30, 20, 85, 20);
    -
    -stroke(126);
    -
    -line(85, 20, 85, 75);
    -
    -stroke(255);
    -
    -line(85, 75, 30, 75);
    example pic
    // Drawing lines in 3D requires P3D
    -
    -// or OPENGL as a parameter to size()
    -
    -size(100, 100, P3D);
    -
    -line(30, 20, 0, 85, 20, 15);
    -
    -stroke(126);
    -
    -line(85, 20, 15, 85, 75, 0);
    -
    -stroke(255);
    -
    -line(85, 75, 0, 30, 75, -50);
    - - - - - - - - - - Description - - Draws a line (a direct path between two points) to the screen. The version of line() with four parameters draws the line in 2D. To color a line, use the stroke() function. A line cannot be filled, therefore the fill() method will not affect the color of a line. 2D lines are drawn with a width of one pixel by default, but this can be changed with the strokeWeight() function. The version with six parameters allows the line to be placed anywhere within XYZ space. Drawing this shape in 3D using the z parameter requires the P3D or OPENGL parameter in combination with size as shown in the above example. - - - - - - - - - - Syntax - -
    line(x1, y1, x2, y2)
    -
    -line(x1, y1, z1, x2, y2, z2)
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    x1int or float: x-coordinate of the first point
    y1int or float: y-coordinate of the first point
    z1int or float: z-coordinate of the first point
    x2int or float: x-coordinate of the second point
    y2int or float: y-coordinate of the second point
    z2int or float: z-coordinate of the second point
    - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - strokeWeight()
    - - strokeJoin()
    - - strokeCap()
    - - beginShape()
    - - - - - - - diff --git a/reference/line_2.gif b/reference/line_2.gif deleted file mode 100644 index 83ab9ac0cf46591dadf09af5fe9268cf84f4587b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2242 zcmV;z2tD^lNk%w1VT1sL0K@l=)q{hB`uh6G$;oqb zbF;IvXJ=>W>FMU?=6rm7^78Tk005hto2{*_ii(Qa+1bp@%;MtW($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u0PIBizsH*yxI zhL=8wQ^|4zhoeZ7DqYI7sne%Wqe_L^a%azy+=4pL*MVY74jRIW9ZR;X*|TWVs$I*L zEr+TQI>^iR#}bLH61%nxi=eOHzkmY^9!$8f;lqd#hpoz!?w?k8yF%E&H?if*m@{h* zyqKcgY*+)dYCzPe2EQIsr%u4Swd>cgW6PdRySDAyvo*Yp+q3RT(vm5oPA#DLk>kjd zD__pMx%21DUn9`4!Lz*34uMYw+n0E8*>2chqkNTbaxNm!Iz&;zy9;{ zx~r@AU93HK1n|WtfPDlOXdr9o>31Ffe;D|88h`>0XyAktnwLO=ywR0ae-dr?V1V&e zDB_69A(&r=>s{htcM+24qKhV`x8Q~icIY020=}qYg)u6q;TS5~_#cSh?Pz3yJ)+3q zia3UNYw?ABH*Rn#q-!qL&`Bm?N8X z9^vMaXv*niops(xWu8qI$!DJzo;YQfHGY}qoP)CIC!$rV+31*$o~fvwf=)_lp)#5o z#Y>#8Xc@k{t2qD zz~cHUhKE|(tE9;mDC}~(!g(YAve8aBZHdG-%j>n!W?SF3ZFbA0v*0o+u6^VpSM99n z?z!%`%Nly_w_vI}?|khZ_im*6?n_?3cAD#{wfV{`@WAzUDl5PWFDxFxJNyeMwh}X} ztHBRn9B#(XQLKZ-$9@cQb0S+n^0NV-jB>-V;#qRbE-#nz%JF7evvW6dEHldy@2p(U z%-)OeqCpFd9MSe33~$0ZD?K#K#X{;a%~J2cw8KB=ENa%rZ5^|*Kt~Ps5n@-3F4SM2 ztwY-09*t?+Zo_T#(@2}`wgq-O4YA&JQyn+nbN{;c+k)TyH{ECV-SNyxH=elPS4R%E z<6X0D_~Dq7?e*q+cWyQRmm1~;g|4s!5=9<<>9J~)69Hc)`@E1U^e$if!7@P#mpp$umj!w1mt zgj`Eut!~J}9{TWyEVLmE7chVYEWm--tCbO#$iyZ(@rh83q7p;=uD?N*U8Rwg7b6jjHf*3 zNl$rFfB^S=r{*ZY&wl#zp8yT0KnF_Df*SOo1J!5l5X#VoI`p9sJ%Brfor%KhTTJ@?}&8k+ndR3k1TGy)9wzBoDZjCEk=PK8_()F%(&FftiaMtfA;IDuUtY8OA*uon2u!v2p zVh!8Z;w<*Dkd3TlC#!(4Fa^M#P?#p+OL2IOyC0FH#PnZZ!*1O;08PR!TLooI4AQU05KTC7|yVPRpS@xSch_e zvaowcOyUxo_{9B9u!6YckjQwYGMkC9jAxvg&Y&nocL9!GC{tk?`}oH{UW|VB(+9g? zU@O|0jA`1!GryUtD9rB7%ro!bed-=;?J_=lTa~)ZIASHPzN>0|y z<~F&$PIr19KB=?_kf980nEKSHPPMAFQRi;B;sdY%2R?v7>ss6T Q*0>IJoyTBg9E1P>JAVzpmjD0& diff --git a/reference/line_3.gif b/reference/line_3.gif deleted file mode 100644 index 324bbd695742f810c46da272dc09a3ee7c87075c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2282 zcmVl=)q{hB`uh6G$;oqb zbF;IvXJ==utgPwj>3n>A=H}+|^6~%x0Gpeeii(Qa+1cXa;>^s<($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u0PIBizsH*yxI zhL=8wQ^|4zhoeZ7DqYI7sne%Wqe_L^a%azy+=4>T*MVY74jRIW9ZR;X*|TWVs$I*L zEr+TRI>^iR#}bLH61%nxi=eOHzkmY^9!$8f;lqd#hpoz!?w?k8yGGc+H?if*m@{h* zyqKcgY*+!bazNCm2EQIsr%u4Swd>cgW6PdRySDAyvo*Yp+q3RT(vm5oPA#DLk>kjd zD__pMx%21DUn9`4!Lz*34uMYw+n0E8*>2chqkNTbaxNm!Iz&;zy9;{ zx~r@AU93HK1n|WtfPDlOXdr9o>31Ffe;D|88h`>0XyAktnwLO=ywR0ae-dr?V1V&e zDB_69A(&r=>s{htcM+24qKhV`x8Q~icIY020=}qYg)u6q;TS5~_#cSh?Pz3yJ)+3q zia3UNYw?ABH(5mJ+nt<^#u-nWC2- zvY6wVBf6=lo5#UA{uFOt&$p~sgGWH>yf#>Dx;aZ*4e9s zzdji(hOw4vtd++7z;4_BJ7z{GkB zX1^5^7_q|h%Ic`S9b3#T$juVGF~ud<_c6xpj_h#D<-J^O#`~^}D$Vo(9PrICH_S25 zm4oM%lUn@&}|cbgyCEV&9>Q!_qp8RkMAA% z4vecUGUAY5u0!T=Z(jNT;GSbXdEy5*P8PC4wQBd0s+ zwx5c7C>&e!B50-yS>b(Ek8Xsc z-~dU;LK@PLuCe1E@z{U`G@t>3blxK;Ny$oD@{*X$q$W4X$p%#Lkq_u3B)?cb@QL!2 zs7$3QCpke)7N7wIC_p5^7t31O@|L*Fr7m~L%U=5Om$!svEoXTwU>ft7$V{d(Wl2f_ z3SgPgjHWbuIe`L9fSAylfHt?u&2D=0o8SzmILArOa)uL|5i+Mb*U8Ryy7QXNgy44w zFadhnv!3|8r#|z^&wcu{p8)-*Km$rpe-hxJ=oHXF7s}9vI`p9sji^K?O3{i+G@|F#mb&z%FlFgTixbnD+VrM4&FKMVDu4q} zz^6d{sZfJT)S()+s7O7kQj^Nmr8*U<2Z$<9qe|7PTJ@?}&8k+n%GIuVb*oc-zyZWc z*0GwktY|%}TGPtbwYs&faDA&>;mXqo*!8Y>&8uGb%GbX7^{;>pY+vgt*uon2u!v18 zPZjV0#yYmKkbSIVBTL!ITDG#7y{u+4%UR7TV6h4at!PI}+R~c#w5Uz3YFEqJ(}K3O zu#K&3XFJ=lxUPOy@&Ijj%iG?dbhja{jPY!OWyICm%POtE_Bz+-uAlpz3P3heCJDF_Qtoq_|0#A zDRbKr9!oU<4zPd+OyB|=_`nEGaDo3)-O)wp!4QtHgeOel3R@V$9_UMhu?4LQd-%g3 z4)KIjqv8I7(K{kev5Hr0VG=iSG7ka}idjtK8jDypexZ(ax>lP1$XLNZ4ziGkOymrg zSV3HJNMyWHnaw!)$xzNrXHb-)y8uTol!4RM`uodl0#x!k7vzph; z<~EPzE!D{o&d7|H4td2WQ^~WQ_sr)$9|bPFxlXx0kdnL&$PVa;#bMXm{P!f(Z?*k#IPPM96&1!!r1T-aKkSoBEkBG$M z*0|2Ku5~>RpU7GS$WR70hE42Z8~fPWkaRa(@c~$X10TSMwzQ{B?P~j4(i^mg2toh= EJ9*i~=l}o! diff --git a/reference/link_/index.html b/reference/link_/index.html deleted file mode 100644 index 8950270..0000000 --- a/reference/link_/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: withcc -title: link() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    link()

    Examples
    void draw() { 
    -
    -  rect(20, 20, 60, 60); 
    -
    -} 
    -
    - 
    -
    -void mousePressed() { 
    -
    -  link("http://processingjs.org"); 
    -
    -}

    void draw() { 
    -
    -  rect(20, 20, 60, 60); 
    -
    -} 
    -
    - 
    -
    -void mousePressed() { 
    -
    -  link("http://processingjs.org", "_new"); 
    -
    -}
    DescriptionLinks to a webpage either in the same window or in a new window. The complete URL must be specified.
    Syntax
    link(url)
    -
    -link(url, target)
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    urlString: complete url as a String in quotes
    targetString: name of the window to load the URL as a string in quotes
    UsageWeb & Application
    - - - diff --git a/reference/loadBytes_/index.html b/reference/loadBytes_/index.html deleted file mode 100644 index d489120..0000000 --- a/reference/loadBytes_/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: withcc -title: loadBytes() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    loadBytes()

    Examples
    // open a file and read its binary data 
    -byte b[] = loadBytes("something.dat"); 
    - 
    -// print each value, from 0 to 255 
    -for (int i = 0; i < b.length; i++) { 
    -  // every tenth number, start a new line 
    -  if ((i % 10) == 0) { 
    -    println(); 
    -  } 
    - 
    -  // bytes are from -128 to 127, this converts to 0 to 255 
    -  int a = b[i] & 0xff; 
    -  print(a + " "); 
    -} 
    -// print a blank line at the end 
    -println();
    -
    Description

    Reads the contents of a file or url and places it in a byte array. If a file is specified, it must be located in the sketch's "data" directory/folder.

    -

    The filename parameter can also be a URL to a file found online. For security reasons, a - Processing sketch found online can only download files from the same server from which it came.

    Syntax
    loadBytes(filename)
    Parameters - - - - - -
    filenameString: name of file in the data folder or a URL
    -
    Returnsbyte[]
    UsageWeb & Application
    RelatedloadStrings()
    - saveStrings()
    - saveBytes()
    diff --git a/reference/loadFont_.gif b/reference/loadFont_.gif deleted file mode 100644 index 044b0df8f8eaa501632aa8f2bdbd24d007017224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2606 zcmV+}3eojPNk%w1VT1sL0K@j*N^z@TtQB;t0wQz}x3IG@m{bV{vSuh^^>y1M0dD(GiSE}PHjw0g~MyWeE4iUe*( z%$~e{&+q&HfPsR8goPevPIF%sPGouzkdcy;l$Dm3n3oF ztgWuEu(7hUw6&_9haZWeIi?esj+}+;a z;Njxq5l zhA24*9ZIyQ(W6L{DqYI7=~9$7ae6#-5W@q7KZ9!6%C)Q4uVBN99ZR;XS+g9VI_RJd zn$Bug=hbt7a_fP+c=PJr%eSxJzkmY^7Q7YeO}8LLUG)jn?%>CeBTJsVw{SzY&>rME zIFE4#4jS-o*Z`n(kJG4At6t5zwd>cgW4qRnb}i1gqU1IfUAnjI-@t$EPMYq5E^_1J0i#8Be~v`Sa-0t6!fUwe{MVwR2wn{dsTp z`19-EpWprU?6`49-(B{V#@~SmCdi)ufAFazpK>O7M__>pR%l^`3}P2wfEaYg+yMmw zaN&p~;+G+SR6$7Bhar~e;)~>+xM7L{M#v(CFy`o@j1F?>VSPC2D5QlvA~&CnK-xFt zk_s02V2vv#DISwl?&qYB1A-W2m0YTKC5;_s*2WKfiQmq7t*W__i=Mf@ z_7JDF;SQUuyYF`EWxByaDlW13ng=hs@^-3jy;9yAaCrk$TQICo`fIPg=owQ$1;%)w z1GK|vjKl{Qgm!_)rivKpj<^u-$^TiOAPIF|tu3+SAR&*wUfz`Wqfny}30eNdXpNN7Mbc^*K$0|p?T zyhGI+Fpa?&(jHL20S<(AjSkXgus7deo44%5S+m#ncn_4u^bQ&HxI)Clt%Intpo6S)c`y|9tN(X9e8R?r(xluh)K3U!LSUJa9nlB+HHjve1`zLAO;K zj|Akp|30(zT?^~`eqsYawg$Z-n>@GUk(NAp=PO+L%0rswwJ%;y?u5}kP z*To#*wjGdWa^^!H0Muu}4NlK}=jmPcKv=rcVBiA(Bh3PEN4Cd-4O!|NAbFhjK?HK` zVAxv~3DJYQ+KKOY&+{I6I@dxZlqPi;^B{R>S415&%v`dvixTvq83jN9W=hkV+VrM4&8bdz%F~|u zRHqkJs1AQh)S?>os7Mt+P;(d}0R+IQP<^UYqe|7OTD7WJy{cBT%GIrU6{`XW>r$`T z)UcZMtY}TETGz_fwz~DLaAoUQCFZ-h+V!q@&FftiAOHm@V6F^&j$a2$*uon2u!v2p zVi(KU#wr%D(FA~FCrjDNT9&d5PyhoM09kss5o z)(sFfqsdyJ2Kf5dzz(*shfVBa8~fPEPIj^Btn6kx``OTrb_19#?P^>5+Q^mwoh88S zZhQON;10LA$4%~XoBQ13-Zr||&F*%)``zk(x4h>~Z+36Rq1E+Wi1y9ze*63101tS; z@v>{Wj!@tTPq@MtK5z(!hv5*9xWolMNrzAT;uz0(X)0cD-O%Mb;L*6qM^15qW5=3d z$`W`UPV$zMd^7}akQC#>n2&>;GC0q<&Ld--_;_R|CRof|>T>g)8~x};FN}t(;umzR z0L43JiMrIMPW7sHB`qh%Ot6B!n3~h&GfoM+*vC%xvI|8mwsDYVz$B8M%;o7ciM!nA zPWQT>d@XEIyH3#5_N#P;AsGq0;0I6m!armqZAry6;KIt0B&0Jw35et;Px;DQ{vHF# zjCT0W%6L2;^63b@=tocb(XS&Xix0`%PT}~^KjZbVkGYlHv*I|N=@od5s; diff --git a/reference/loadFont_/index.html b/reference/loadFont_/index.html deleted file mode 100644 index 863105f..0000000 --- a/reference/loadFont_/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -layout: withcc -title: loadFont() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    loadFont()

    Processing.js BehaviorFont support for the Canvas element varies across browsers. See Canvas Text, BurntToys Bauhaus. - -

    - -

    Please use the follwoing demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    - -
    Examples
    example pic
    PFont font;
    -font = loadFont("FFScala.ttf"); 
    -textFont(font, 32); 
    -text("word", 15, 50);
    DescriptionLoads a font into a variable of type PFont. To load correctly, fonts must be located in the current directory of the sketch. Instead of using loadFont, you should be using createFont(). - -
    Syntax
    loadFont(fontname)
    Parameters - - - - - - - - - - - -
    fontnamestring: name of the font to load
    UsageWeb & Application
    RelatedPFont
    - - textFont()
    - - text()
    - - createFont()
    - - - diff --git a/reference/loadImage_.jpg b/reference/loadImage_.jpg deleted file mode 100644 index e4fe699d6e043efe587d73a6ebf25433b62fa18b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24134 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 - - - - Name - -

    loadImage()

    - - - - - - - - - - Examples - -
    example pic
    -
    -    // @pjs preload must be used to preload the image 
    -
    -    /* @pjs preload="laDefense.jpg"; */
    -
    -    PImage b;
    -
    -    b = loadImage("laDefense.jpg");
    -
    -    image(b, 0, 0);
    -
    -
    example pic
    -
    -// @pjs preload must be used to preload the image
    -
    -/* @pjs preload="laDefense.jpg"; */
    -
    -PImage b;
    -
    -void setup() {
    -
    -  b = loadImage("laDefense.jpg");
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  image(b, 0, 0);
    -
    -}
    PImage online;
    -
    -
    -
    -void setup() {
    -
    -  String url = "http://mt0.google.com/mt?n=404&v=w2.61&x=9913&y=12119&zoom=2";
    -
    -  online = loadImage(url, "png");
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  image(b, 0, 0);
    -
    -}
    - - - - - - - - - - Description - - Loads an image into a variable of type PImage. Four types of images ( .gif, .jpg, .tga, .png) images may be loaded. To load correctly, images must be located in the data directory of the current sketch, the images must be preloaded using @pjs preload specifying the path to the image. In most cases, load all images in setup() to preload them at the start of the program. Loading images inside draw() will reduce the speed of a program. You can also load images from a data URI, such as "data:image/jpg;base64,{base 64 encoded data block}" which does not require any preloading. - - - -

    - -The filename parameter can also be a URL to a file found online. For security reasons, a Processing sketch found online can only download files from the same server from which it came. - -

    - -The extension of the filename parameter is used to determine the image type. In cases where the image filename does not end with a proper extension, specify the extension as the second parameter to loadImage(), as shown in the third example on this page. - -

    - -If an image is not loaded successfully, the null value is returned and an error message will be printed to the console. The error message does not halt the program, however the null value may cause a NullPointerException if your code does not check whether the value returned from loadImage() is null. - -

    - - NOTE: Some browers will not allow you to load images from file:// URIs. It is recommended that you use a webserver for your development and testing to avoid any problems with file:// URIs. - - - - - - - - - - Syntax - -
    loadImage(filename)
    - - - - - - - - Parameters - - - - - - - - - - - -
    filenamestring: name of file to load or data URI/td> - -
    - - - - - - - - Usage - - - - Web & Application - - - - - - - - Related - - PImage - -
    image() - -
    imageMode() - -
    background()
    - - - - - - - diff --git a/reference/loadPixels_.jpg b/reference/loadPixels_.jpg deleted file mode 100644 index 6eae5ef2cc1c2915fa6815fde4f063a7ace0ac91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4751 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 - - - - Name - -

    loadPixels()

    - - - - - - - - - - Examples - -
    example pic
    int halfImage = width*height/2;
    -
    -PImage myImage = loadImage("topanga.jpg");
    -
    -image(myImage, 0, 0);
    -
    -
    -
    -loadPixels();
    -
    -for (int i = 0; i < halfImage; i++) {
    -
    -  pixels[i+halfImage] = pixels[i];
    -
    -}
    -
    -updatePixels();
    - - - - - - - - - - Description - - Loads the pixel data for the display window (or an image) into the pixels[] array. This function must always be called before reading from or writing to pixels[]. - -

    - -Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must first call loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. - - - - - - - - - - Syntax - -
    loadPixels()
    - - - - - - - - Parameters - - - - - - - - - - - - - -
    - - - - - - - - Usage - - - - Web & Application - - - - - - - - Related - - pixels[]
    - - updatePixels()
    - - - - - - - diff --git a/reference/loadShape_/index.html b/reference/loadShape_/index.html deleted file mode 100644 index 2ad1e7e..0000000 --- a/reference/loadShape_/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: withcc -title: loadShape() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    loadShape()

    Examples
    example pic
    PShape s;
    -s = loadShape("bot.svg");
    -smooth();
    -shape(s, 10, 10, 80, 80);
    example pic
    // Loading a shape when using setup() and draw()
    -
    -PShape s;
    -
    -void setup() {
    -  s = loadShape("bot.svg");
    -  smooth();
    -  noLoop();
    -}
    -
    -void draw() {
    -  shape(s, 10, 10, 80, 80);
    -}
    -
    Description

    Loads vector shapes into a variable of type PShape. Currently, only SVG files may be loaded. To load correctly, the file must be located in - the data directory of the current sketch. In most cases, - loadShape() should be used inside setup() because loading shapes inside draw() will reduce the speed of a sketch.

    -

    If a shape is not loaded successfully, the null value is returned and an error message will be printed to the console. - The error message does not halt the program, however the null value may cause a - NullPointerException if your code does not check whether the value returned from loadShape() is null.

    Syntax
    loadShape(filename)
    Parameters - - - - -
    filenameString: name of file to load
    ReturnsPShape or null
    UsageWeb & Application
    RelatedPShape
    - shape()
    - shapeMode()
    diff --git a/reference/loadStrings_/index.html b/reference/loadStrings_/index.html deleted file mode 100644 index 2af738b..0000000 --- a/reference/loadStrings_/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: withcc -title: loadStrings() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    loadStrings()

    Examples
    String lines[] = loadStrings("list.txt");
    -
    -println("there are " + lines.length + " lines");
    -
    -for (int i=0; i < lines.length; i++) {
    -
    -  println(lines[i]);
    -
    -}
    DescriptionReads the contents of a file or url and creates a String array of its individual lines. If a file is specified, it must be located in the sketch's "data" directory/folder. - -

    - -The filename parameter can also be a URL to a file found online. For security reasons, a Processing sketch found online can only download files from the same server from which it came. Getting around this restriction requires a signed applet. - -

    - -If the file is not available or an error occurs, null will be returned and an error message will be printed to the console. The error message does not halt the program, however the null value may cause a NullPointerException if your code does not check whether the value returned is null. - -

    - -Starting with Processing release 0134, all files loaded and saved by the Processing API use UTF-8 encoding. In previous releases, the default encoding for your platform was used, which causes problems when files are moved to other platforms.
    Syntax
    loadStrings(filename)
    Parameters - - - - - - - - - -
    filenameString: name of the file or url to load
    UsageWeb & Application
    RelatedloadBytes()
    - - saveStrings()
    - - saveBytes()
    - - - diff --git a/reference/log_/index.html b/reference/log_/index.html deleted file mode 100644 index fe29a9f..0000000 --- a/reference/log_/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: withcc -title: log() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    log()

    Examples
    void setup() {
    -  int i = 12;
    -  println(log(i));
    -  println(log10(i));
    -}
    -
    -// Calculates the base-10 logarithm of a number
    -float log10 (int x) {
    -  return (log(x) / log(10));
    -}
    Description

    Calculates the natural logarithm (the base-e logarithm) of a number. This function expects the values greater than 0.0.

    Syntax
    log(value)
    Parameters - - - - - -
    value int or float: number must be greater then 0.0
    Returnsfloat
    UsageWeb & Application
    diff --git a/reference/logical AND/index.html b/reference/logical AND/index.html deleted file mode 100644 index 28d0a6d..0000000 --- a/reference/logical AND/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: withcc -title: "&& (logical AND) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    && (logical AND)

    Examples
    example pic
    for(int i=5; i<=95; i+=5) {
    -
    -  if((i > 35) && (i < 60)) {
    -
    -    stroke(0);    //Set color to black
    -
    -  } else {
    -
    -    stroke(255);  //Set color to white
    -
    -  }
    -
    -  line(30, i, 80, i);
    -
    -}
    DescriptionCompares two expressions and returns true only if both evaluate to true. Returns false if one or both evaluate to false. The following list shows all possible combinations:

    true && false // Evaluates false because the second is false
    false && true // Evaluates false because the first is false
    true && true // Evaluates true because both are true
    false && false // Evaluates false because both are false
    Syntax
    expression1 && expression2
    Parameters - - - - - - - - - - - - - - - - - - - -
    expression1any valid expression
    expression2any valid expression
    UsageWeb & Application
    Related - - - - || (logical OR)
    - - ! (logical NOT)
    - - if()
    - diff --git a/reference/logical NOT/index.html b/reference/logical NOT/index.html deleted file mode 100644 index 7361735..0000000 --- a/reference/logical NOT/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: withcc -title: "! (logical NOT) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    ! (logical NOT)

    Examples
    example pic
    boolean a = false;
    -
    -if (!a) {
    -
    -  rect(30, 20, 50, 50);
    -
    -}
    -
    -a = true;
    -
    -if (a) {
    -
    -  line(20, 10, 90, 80);
    -
    -  line(20, 80, 90, 10);
    -
    -}
    DescriptionInverts the Boolean value of an expression. Returns true if the expression is false and returns false if the expression is true. If the expression (a>b) evaluates to true, then !(a>b) evaluates to false.
    Syntax
    !expression
    Parameters - - - - - - - - - -
    expressionany valid expression
    UsageWeb & Application
    Related - - ! (logical AND)
    - - || (logical OR)
    - - - - if()
    - diff --git a/reference/logical OR/index.html b/reference/logical OR/index.html deleted file mode 100644 index ec51ffc..0000000 --- a/reference/logical OR/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -layout: withcc -title: "|| (logical OR) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    || (logical OR)

    Examples
    example pic
    for(int i=5 ; i<=95; i+=5) {
    -
    -  if((i < 35) || (i > 60)) {
    -
    -    line(30, i, 80, i);
    -
    -  }
    -
    -}
    DescriptionCompares two expressions and returns true if one or both evaluate to true. Returns false only if both expressions are false. The following list shows all possible combinations:

    true || false // Evaluates true because the first is true
    false || true // Evaluates true because the second is true
    true || true // Evaluates true because both are true
    false || false // Evaluates false because both are false
    Syntax
    expression1 || expression2
    Parameters - - - - - - - - - - - - - - - - - - - -
    expression1any valid expression
    expression2any valid expression
    UsageWeb & Application
    Related - - ! (logical AND)
    - - - - ! (logical NOT)
    - - if()
    - - - diff --git a/reference/logicalAND.gif b/reference/logicalAND.gif deleted file mode 100644 index debdd72248a6311791c98942a2d23e275ba0eb3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2237 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�Qc>8%J@3{cD#E_ZTR7k(;WELMiVY< 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 diff --git a/reference/long/index.html b/reference/long/index.html deleted file mode 100644 index 6a5737b..0000000 --- a/reference/long/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: withcc -title: long | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    long

    Examples
    long a;          // Declare variable "a" of type int
    -a = 23;          // Assign "a" the value 23
    -long b = -256;   // Declare variable "b" and assign it the value -256
    -long c = a + b;  // Declare variable "c" and assign it the sum of "a" and "b"
    -int i = (int)c;  // Converts the value of "c" from a long to a int
    DescriptionDatatype for large integers. While integers can be as large as 2,147,483,647 and as low as -2,147,483,648 (stored as 32 bits), - a long integer has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (stored as 64 bits). - Use this datatype when you need a number to have a greater magnitude than can be stored within an int. - Processing functions don't use this datatype, so while they work in the language, - you'll usually have to convert to a int using the (int) syntax before passing into a function.
    Syntax
    long var 

    -
    long var= value
    -
    Parameters - - - - - - - - - -
    varvariable name referencing the value
    valueany integer value
    -
    UsageWeb & Application
    Relatedint
    diff --git a/reference/lookat_.gif b/reference/lookat_.gif deleted file mode 100644 index 2dcc146b02b25ea67ddfd92b98c1d15e744f992c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 zcmV-?0fYWWNk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPSJ^7r<3`yN2&qJ1#TK;OH6Aez2Emv4tH6))#rqd-vDS=QmihC&vL+D02w0 zIMMd#5-1_*cwosANhz2Sm#Hbn33ssvx*|D8S}}NvTKVQmW``qNW)`t%i?XZMH9E_e z(;JNWmpbg{0F0Sjdb#X;2fe04oQZ7xjM%9?&0X!yN-Zo-(U_1e4SA~@ZJsM?`o2!i zH}*)(3k!)}Twm_ouX#Ky_3Cp*-@b0&MD@t$DO^E`+h|R+s0 - - - - Name - -

    loop()

    - - - - - - - - Examples - - - -
    void setup() {
    -
    -  size(200, 200);
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -float x = 0;
    -
    -
    -
    -void draw() {
    -
    -  background(204);
    -
    -  x = x + .1;
    -
    -  if (x > width) {
    -
    -    x = 0;
    -
    -  }
    -
    -  line(x, 0, x, height); 
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  loop();
    -
    -}
    -
    -
    -
    -void mouseReleased() {
    -
    -  noLoop();
    -
    -}
    - - - - - - - - Description - - Causes Processing to continuously execute the code within draw(). If noLoop() is called, the code in draw() stops executing. - - - - - - - - - - Syntax - -
    loop()
    -
    -redraw()
    -
    -draw()
    - - - - - - - - Returns - - - - None - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - noLoop()
    - - - - - - - diff --git a/reference/mag_.gif b/reference/mag_.gif deleted file mode 100644 index f70fe1d0a5ecf1bf7587a70eb09d2bbf56e65393..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmV-@0fPQVNk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0{;YpsmtvT zqnyncinHGOS`LPy^daSlrd@EdhYH6PYc8#fqsRN&R}KX6YK~vLWq(yE| zWbaC8R)g4t_CejkdQxvDEFO``Wz07nT0=Q#xZ5@tzU@i8KhDNS@~05EQ72fK=aYgc zXlU4`7MU1GNlCY72MLDb_!M~wq*=w;IZApI3W3>}>UqlK^g0%6%SEemJ5!n~#5ySE zyRyqGJe&m_42L|`m{{uyts6ZZ7t?C3T&;Zu+f9rO?)^Q!EYl2~EwT>Y{%c+=9&gM= zUq5Rq27P3>gsbN5e`5uj_afkO?1Ng?d%6MsL-KAiyA$OG^x_1Oq)7=3N@ - - Name -

    mag()

    - - - - - - Examples -
    example pic
    float x1 = 20;
    -float x2 = 80;
    -float y1 = 30;
    -float y2 = 70;
    -
    -line(0, 0, x1, y1);
    -println(mag(x1, y1));  // Prints 36.05551 
    -line(0, 0, x2, y1);
    -println(mag(x2, y1));  // Prints 85.44004
    -line(0, 0, x1, y2);
    -println(mag(x1, y2));  // Prints 72.8011
    -line(0, 0, x2, y2);
    -println(mag(x2, y2));  // Prints 106.30146
    - - - - Description - -

    Calculates the magnitude (or length) of a vector. A vector is a direction in space commonly used in computer graphics and linear algebra. - Because it has no "start" position, the magnitude of a vector can be thought of as the distance from coordinate (0,0) to its (x,y) value. - Therefore, mag() is a shortcut for writing "dist(0, 0, x, y)".

    - - - - Syntax - -
    mag(a,b)

    -
    mag(a,b,c)

    - - - - Parameters - - - - - - - - - - - - - -
    afloat or int: first value
    bfloat or int: second value
    cfloat or int: third value
    - - - - Returns - float - - - Usage - Web & Application - - - - - Related - dist()
    - - diff --git a/reference/map_/index.html b/reference/map_/index.html deleted file mode 100644 index cc54438..0000000 --- a/reference/map_/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: withcc -title: map() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    map()

    Examples
    size(400, 400);
    -float value = 25;
    -float m = map(value, 0, 100, 0, width);
    -ellipse(m, 200, 10, 10);
    Description

    Re-maps a number from one range to another. In the example above, the number '25' is converted from a value in the range 0..100 into a - value that ranges from the left edge (0) to the right edge (width) of the screen.

    -

    Numbers outside the range are not clamped to 0 and 1, because out-of-range values are often intentional and useful.

    Syntax -
    map(value,low1,high1,low2,high2)

    Parameters - - - - - - - - - - - - - - - - - - - - -
    valuefloat: The incoming value to be converted
    low1float: Lower bound of the value's current range
    high1float: Upper bound of the value's current range
    low2float: Lower bound of the value's target range
    high2float: Upper bound of the value's target range
    -
    Returnsfloat
    UsageWeb & Application
    Relatednorm()
    - lerp()
    diff --git a/reference/mask_.jpg b/reference/mask_.jpg deleted file mode 100644 index 537dac023b328b8ab05a6582d179ef4eae082428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5680 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 EADrDUs{jB1 diff --git a/reference/matchAll_/index.html b/reference/matchAll_/index.html deleted file mode 100644 index 59ba08e..0000000 --- a/reference/matchAll_/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: withcc -title: matchAll() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    matchAll()

    Description

    The matchAll() function is used to apply a regular expression to a piece of text, and return a list of matching groups - (elements found inside parentheses) as a two-dimensional String array. No matches will return null. If no groups are specified in the regexp, - but the sequence matches, a two dimensional array is still returned, but the second dimension is only of length one.

    -

    To use the function, first check to see if the result is null. If the result is null, then the sequence did not match at all. - If the sequence did match, a 2D array is returned. If there are groups (specified by sets of parentheses) in the regexp, then the contents of each will be returned in the array. Assuming, a loop with counter variable i, element [i][0] of a regexp match returns the entire matching string, - and the match groups start at element [i][1] (the first group is [i][1], the second [i][2], and so on).

    -

    The syntax can be found in the reference for Java's Pattern class. - For regular expression syntax, read the Java Tutorial on the topic.

    Syntax
    matchAll(str,regexp)
    Parameters - - - - - - - - -
    strthe String to be searched
    regexpregexp the regexp to be used for matching
    ReturnsString[][]
    UsageWeb & Application
    Relatedmatch()
    - split()
    - splitToken()
    - trim()
    - join()
    diff --git a/reference/match_/index.html b/reference/match_/index.html deleted file mode 100644 index d2f66b8..0000000 --- a/reference/match_/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: withcc -title: match() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    match()

    Examples
    String s = "Inside a tag, you will find content.";
    -String[] m = match(s, "(\\S+)");
    -println("Found " + m[1] + " inside the tag.");
    -// Prints "Found content inside the tag." to the console

    String s1 = "Have you ever heard of a thing called fluoridation. 
    -             Fluoridation of water?";
    -String s2 = "Uh? Yes, I-I have heard of that, Jack, yes. Yes.";
    -
    -String[] m1 = match(s1, "fluoridation");
    -if (m1 != null) {
    -  // This will print to the console.
    -  println("Found a match in '" + s1 + "'");  
    -} else {
    -  println("No match found in '" + s1 + "'");
    -}
    -
    -String[] m2 = match(s2, "fluoridation");
    -if (m2 != null) {
    -  println("Found a match in '" + s2 + "'");
    -} else {
    -  // This will print to the console.
    -  println("No match found in '" + s2 + "'");  
    -}
    Description

    The match() function is used to apply a regular expression to a piece of text, and return matching groups (elements found inside parentheses) as a String array. No match will return null. If no groups are specified in the regexp, but the sequence matches, an array of length one (with the matched text as the first element of the array) will be returned. -

    -

    To use the function, first check to see if the result is null. If the result is null, then the sequence did not match. If the sequence did match, an array is returned. If there are groups (specified by sets of parentheses) in the regexp, then the contents of each will be returned in the array. Element [0] of a regexp match returns the entire matching string, and the match groups start at element [1] (the first group is [1], the second [2], and so on).

    -

    The syntax can be found in the reference for Java's Pattern class. For regular expression syntax, read the Java Tutorial on the topic.

    Syntax
    match(str,regexp)
    Parameters - - - - - - - - -
    strthe String to be searched
    regexpregexp the regexp to be used for matching
    ReturnsString[]
    UsageWeb & Application
    RelatedmatchAll()
    - split()
    - splitToken()
    - trim()
    - join()
    diff --git a/reference/max_/index.html b/reference/max_/index.html deleted file mode 100644 index 098c40a..0000000 --- a/reference/max_/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: withcc -title: max() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    max()

    Examples
    int a = max(5, 9);            // Sets "a" to 9
    -
    -int b = max(-4, -12);         // Sets "b" to -4
    -
    -float c = max(12.3, 230.24);  // Sets "c" to 230.24

    int[] list = { 9, -4, 230.24 };
    -
    -int h = max(list);            // Sets "h" to 230.24
    DescriptionDetermines the largest value in a sequence of numbers.
    Syntax
    max(value1, value2)
    -
    -max(value1, value2, value 3)
    -
    -max(array)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float
    value3int or float
    arrayint or float array
    UsageWeb & Application
    Relatedmin()
    - - - diff --git a/reference/millis_/index.html b/reference/millis_/index.html deleted file mode 100644 index e69072c..0000000 --- a/reference/millis_/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: withcc -title: millis() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    millis()

    Examples
    void draw() {
    -
    -  float m = millis();
    -
    -  fill(m % 255);
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    DescriptionReturns the number of milliseconds (thousandths of a second) since starting an applet. This information is often used for timing animation sequences.
    Syntax
    millis()
    Parameters - - - - - - - - - -
    UsageWeb & Application
    Related - - second()
    - - minute()
    - - hour()
    - - day()
    - - month()
    - - year() - -
    - - - diff --git a/reference/min_/index.html b/reference/min_/index.html deleted file mode 100644 index 344ab25..0000000 --- a/reference/min_/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: withcc -title: min() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    min()

    Examples
    int d = min(5, 9);            // Sets "d" to 5
    -
    -int e = min(-4, -12);         // Sets "e" to -12
    -
    -float f = min(12.3, 230.24);  // Sets "f" to 12.3

    int[] list = { 5, 1, 2, -3 };
    -
    -int h = min(list);            // Sets "h" to -3
    DescriptionDetermines the smallest value in a sequence of numbers.
    Syntax
    min(value1, value2)
    -
    -min(value1, value2, value 3)
    -
    -min(array)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float
    value3int or float
    arrayint or float array
    UsageWeb & Application
    Relatedmax()
    - - - diff --git a/reference/minus/index.html b/reference/minus/index.html deleted file mode 100644 index dead6fc..0000000 --- a/reference/minus/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: withcc -title: "- (minus) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    - (minus)

    Examples
    int c = 50 - 5;  // Sets c to 45
    -
    -int d = c - 5;   // Sets d to 40
    -
    -int e = d - 60;  // Sets e to -20

    int a = 5;         // Sets "a" to 5 
    -
    -int b = -a;        // Sets "b" to -5 
    -
    -int c = -(5 + 3);  // Sets "c" to -8
    DescriptionSubtracts one value from another and may also be used to negate a value. As a subtraction operator, the value of the second parameter is subtracted from the first. For example, 5 - 3 yields the number 2. As a negation operator, it is equivalent to multiplying a number by -1. For example, -5 is the same as 5 * -1.
    Syntax
    -value1value1 - value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float
    UsageWeb & Application
    Related-- (decrement)
    - - -= (subtract assign)
    - - + (add)
    - diff --git a/reference/minute_/index.html b/reference/minute_/index.html deleted file mode 100644 index fe07606..0000000 --- a/reference/minute_/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: withcc -title: minute() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    minute()

    Examples
    void draw() {
    -
    -  background(204);
    -
    -  int s = second();  // Values from 0 - 59
    -
    -  int m = minute();  // Values from 0 - 59
    -
    -  int h = hour();    // Values from 0 - 23
    -
    -  line(s, 0, s, 33);
    -
    -  line(m, 33, m, 66);
    -
    -  line(h, 66, h, 100);
    -
    -}
    DescriptionProcessing communicates with the clock on your computer. The minute() function returns the current minute as a value from 0 - 59.
    Syntax
    minute()
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - millis()
    - - second()
    - - hour()
    - - day()
    - - month()
    - - year() - -
    - diff --git a/reference/modelX_/index.html b/reference/modelX_/index.html deleted file mode 100644 index 15d2787..0000000 --- a/reference/modelX_/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: withcc -title: modelX() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    modelX()

    Examples
    void setup() {
    -  size(500, 500, P3D);
    -  noFill();
    -}
    -
    -void draw() {
    -  background(0);
    - 
    -  pushMatrix();
    -  // start at the middle of the screen
    -  translate(width/2, height/2, -200);     
    -  // some random rotation to make things interesting
    -  rotateY(1.0); //yrot);
    -  rotateZ(2.0); //zrot);
    -  // rotate in X a little more each frame
    -  rotateX(frameCount / 100.0);
    -  // offset from center
    -  translate(0, 150, 0);
    - 
    -  // draw a white box outline at (0, 0, 0)
    -  stroke(255);
    -  box(50);
    - 
    -  // the box was drawn at (0, 0, 0), store that location
    -  float x = modelX(0, 0, 0);
    -  float y = modelY(0, 0, 0);
    -  float z = modelZ(0, 0, 0);
    -  // clear out all the transformations
    -  popMatrix();
    -
    -  // draw another box at the same (x, y, z) coordinate as the other
    -  pushMatrix();
    -  translate(x, y, z);
    -  stroke(255, 0, 0);
    -  box(50);
    -  popMatrix();
    -}
    -
    Description

    Returns the three-dimensional X, Y, Z position in model space. - This returns the X value for a given coordinate based on the current set of transformations (scale, rotate, translate, etc.) - The X value can be used to place an object in space relative to the location of the original point once the transformations are no longer in use.

    -

    In the example, the modelX(), modelY(), and modelZ() methods record the location of a box in space after being placed using a series of translate and - rotate commands. After popMatrix() is called, those transformations no longer apply, but the (x, y, z) - coordinate returned by the model functions is used to place another box in the same location.

    Syntax
    modelX(x,y,z)
    Parameters - - - - - - - - - - - - -
    xint or float: 3D x coordinate to be mapped
    yint or float: 3D y coordinate to be mapped
    zint or float: 3D z coordinate to be mapped
    Returnsfloat
    UsageWeb & Application
    RelatedmodelY()
    - modelZ()
    diff --git a/reference/modelY_/index.html b/reference/modelY_/index.html deleted file mode 100644 index 812ca63..0000000 --- a/reference/modelY_/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: withcc -title: modelY() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    modelY()

    Examples
    void setup() {
    -  size(500, 500, P3D);
    -  noFill();
    -}
    -
    -void draw() {
    -  background(0);
    - 
    -  pushMatrix();
    -  // start at the middle of the screen
    -  translate(width/2, height/2, -200);     
    -  // some random rotation to make things interesting
    -  rotateY(1.0); //yrot);
    -  rotateZ(2.0); //zrot);
    -  // rotate in X a little more each frame
    -  rotateX(frameCount / 100.0);
    -  // offset from center
    -  translate(0, 150, 0);
    - 
    -  // draw a white box outline at (0, 0, 0)
    -  stroke(255);
    -  box(50);
    - 
    -  // the box was drawn at (0, 0, 0), store that location
    -  float x = modelX(0, 0, 0);
    -  float y = modelY(0, 0, 0);
    -  float z = modelZ(0, 0, 0);
    -  // clear out all the transformations
    -  popMatrix();
    -
    -  // draw another box at the same (x, y, z) coordinate as the other
    -  pushMatrix();
    -  translate(x, y, z);
    -  stroke(255, 0, 0);
    -  box(50);
    -  popMatrix();
    -}
    -
    Description

    Returns the three-dimensional X, Y, Z position in model space. This returns the X value for a given coordinate based on the current set of - transformations (scale, rotate, translate, etc.) The X value can be used to place an object in space relative to the location of the original point once - the transformations are no longer in use.

    -

    In the example, the modelX(), modelY(), and modelZ() methods record the location of a box in space after being placed using a series of - translate and rotate commands. After popMatrix() is called, those transformations no longer apply, but the (x, y, z) coordinate returned by the model - functions is used to place another box in the same location.

    Syntax
    modelY(x,y,z)
    Parameters - - - - - - - - - - - - -
    xint or float: 3D x coordinate to be mapped
    yint or float: 3D y coordinate to be mapped
    zint or float: 3D z coordinate to be mapped
    Returnsfloat
    UsageWeb & Application
    RelatedmodelX()
    - modelZ()
    diff --git a/reference/modelZ_/index.html b/reference/modelZ_/index.html deleted file mode 100644 index 2a97e5e..0000000 --- a/reference/modelZ_/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: withcc -title: modelZ() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    modelZ()

    Examples
    void setup() {
    -  size(500, 500, P3D);
    -  noFill();
    -}
    -
    -void draw() {
    -  background(0);
    - 
    -  pushMatrix();
    -  // start at the middle of the screen
    -  translate(width/2, height/2, -200);     
    -  // some random rotation to make things interesting
    -  rotateY(1.0); //yrot);
    -  rotateZ(2.0); //zrot);
    -  // rotate in X a little more each frame
    -  rotateX(frameCount / 100.0);
    -  // offset from center
    -  translate(0, 150, 0);
    - 
    -  // draw a white box outline at (0, 0, 0)
    -  stroke(255);
    -  box(50);
    - 
    -  // the box was drawn at (0, 0, 0), store that location
    -  float x = modelX(0, 0, 0);
    -  float y = modelY(0, 0, 0);
    -  float z = modelZ(0, 0, 0);
    -  // clear out all the transformations
    -  popMatrix();
    -
    -  // draw another box at the same (x, y, z) coordinate as the other
    -  pushMatrix();
    -  translate(x, y, z);
    -  stroke(255, 0, 0);
    -  box(50);
    -  popMatrix();
    -}
    -
    Description

    Returns the three-dimensional X, Y, Z position in model space. This returns the X value for a given coordinate based on the current set of - transformations (scale, rotate, translate, etc.) The X value can be used to place an object in space relative to the location of the original point once - the transformations are no longer in use.

    -

    In the example, the modelX(), modelY(), and modelZ() methods record the location of a box in space after being placed using a series of - translate and rotate commands. After popMatrix() is called, those transformations no longer apply, but the (x, y, z) coordinate returned by the model - functions is used to place another box in the same location.

    Syntax
    modelZ(x,y,z)
    Parameters - - - - - - - - - - - - -
    xint or float: 3D x coordinate to be mapped
    yint or float: 3D y coordinate to be mapped
    zint or float: 3D z coordinate to be mapped
    Returnsfloat
    UsageWeb & Application
    RelatedmodelX()
    - modelY()
    diff --git a/reference/modulo/index.html b/reference/modulo/index.html deleted file mode 100644 index bdf0f08..0000000 --- a/reference/modulo/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: withcc -title: "% (modulo) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    % (modulo)

    Examples
    int a = 20%100;         // Sets a to 20
    -
    -int b = 20%100;         // Sets b to 20
    -
    -float c = 75.0%100.0;   // Sets c to 75.0
    -
    -float d = 275.0%100.0;  // Sets d to 75.0

    float a = 0.0;
    -
    -void draw() {
    -
    -  background(204);
    -
    -  a = (a + 0.5)%width;
    -
    -  line(a, 0, a, height);
    -
    -}
    DescriptionCalculates the remainer when one number is divided by another. It is extremely useful for keeping numbers within a boundary such as keeping a shape on the screen.
    Syntax
    value1%value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float
    UsageWeb & Application
    Related/ (divide)
    - diff --git a/reference/month_/index.html b/reference/month_/index.html deleted file mode 100644 index 244c8c1..0000000 --- a/reference/month_/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: withcc -title: month() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    month()

    Examples
    void setup() {
    -
    -  PFont metaBold;
    -
    -  metaBold = loadFont("fonts/Meta-Bold.ttf"); 
    -
    -  setFont(metaBold, 44); 
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  int d = day();    // Values from 1 - 31
    -
    -  int m = month();  // Values from 1 - 12
    -
    -  int y = year();   // 2003, 2004, 2005, etc.
    -
    -  String s = String.valueOf(d);
    -
    -  text(s, 10, 28);
    -
    -  s = String.valueOf(m);
    -
    -  text(s, 10, 56); 
    -
    -  s = String.valueOf(y);
    -
    -  text(s, 10, 84);
    -
    -}
    DescriptionProcessing communicates with the clock on your computer. The month() function returns the current month as a value from 1 - 12.
    Syntax
    month()
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - millis()
    - - second()
    - - minute()
    - - hour()
    - - day()
    - - year() - -
    - diff --git a/reference/mouseButton/index.html b/reference/mouseButton/index.html deleted file mode 100644 index 219b196..0000000 --- a/reference/mouseButton/index.html +++ /dev/null @@ -1,152 +0,0 @@ ---- -layout: withcc -title: mouseButton | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mouseButton

    Examples
    // Click within the image and press
    -
    -// the left and right mouse buttons to 
    -
    -// change the value of the rectangle
    -
    -void draw() {
    -
    -  if (mousePressed && (mouseButton == LEFT)) {
    -
    -    fill(0);
    -
    -  } else if (mousePressed && (mouseButton == RIGHT)) {
    -
    -    fill(255);
    -
    -  } else {
    -
    -    fill(126);
    -
    -  }
    -
    -  rect(25, 25, 50, 50);
    -
    -}

    // Click within the image and press
    -
    -// the left and right mouse buttons to 
    -
    -// change the value of the rectangle
    -
    -void draw() {
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  if (mouseButton == LEFT) {
    -
    -    fill(0);
    -
    -  } else if (mouseButton == RIGHT) {
    -
    -    fill(255);
    -
    -  } else {
    -
    -    fill(126);
    -
    -  }
    -
    -}
    DescriptionProcessing automatically tracks if the mouse button is pressed and which button is pressed. The value of the system variable mouseButton is either LEFT, RIGHT, or CENTER depending on which button is pressed.
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - mouseX
    - - mouseY
    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - - mouseDragged()
    - -
    - diff --git a/reference/mouseClicked_/index.html b/reference/mouseClicked_/index.html deleted file mode 100644 index ade3c7b..0000000 --- a/reference/mouseClicked_/index.html +++ /dev/null @@ -1,146 +0,0 @@ ---- -layout: withcc -title: mouseClicked() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mouseClicked()

    Examples
    // Click within the image to change 
    -
    -// the value of the rectangle after
    -
    -// after the mouse has been clicked
    -
    -
    -
    -int value = 0;
    -
    -
    -
    -void draw() {
    -
    -  fill(value);
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    -
    -
    -
    -void mouseClicked() {
    -
    -  if(value == 0) {
    -
    -    value = 255;
    -
    -  } else {
    -
    -    value = 0;
    -
    -  }
    -
    -}
    DescriptionThe mouseClicked() function is called once after a mouse button has been pressed and then released.
    Syntax
    mouseClicked()
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - mouseX
    - - mouseY
    - - mouseButton
    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - - mouseDragged()
    - -
    - diff --git a/reference/mouseDragged_/index.html b/reference/mouseDragged_/index.html deleted file mode 100644 index 1bece91..0000000 --- a/reference/mouseDragged_/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: withcc -title: mouseDragged() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mouseDragged()

    Examples
    // Drag (click and hold) your mouse across the 
    -
    -// image to change the value of the rectangle
    -
    -
    -
    -int value = 0;
    -
    -
    -
    -void draw() {
    -
    -  fill(value);
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    -
    -
    -
    -void mouseDragged() 
    -
    -{
    -
    -  value = value + 5;
    -
    -  if (value > 255) {
    -
    -    value = 0;
    -
    -  }
    -
    -}
    DescriptionThe mouseDragged() function is called once every time the mouse moves and a mouse button is pressed.
    Syntax
    void mouseDragged() {
    -
    -  statements
    -
    -
    -
    -}
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - mouseX
    - - mouseY
    - - mouseButton
    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - -
    - diff --git a/reference/mouseMoved_/index.html b/reference/mouseMoved_/index.html deleted file mode 100644 index a127e10..0000000 --- a/reference/mouseMoved_/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: withcc -title: mouseMoved() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mouseMoved()

    Examples
    // Move the mouse across the image
    -
    -// to change its value
    -
    -
    -
    -int value = 0;
    -
    -
    -
    -void draw() {
    -
    -  fill(value);
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    -
    -
    -
    -void mouseMoved() {
    -
    -  value = value + 5;
    -
    -  if (value > 255) {
    -
    -    value = 0;
    -
    -  }
    -
    -}
    DescriptionThe mouseMoved() function is called every time the mouse moves and a mouse button is not pressed.
    Syntax
    void mouseMoved() {
    -
    -  statements
    -
    -
    -
    -}
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    RelatedmouseX
    - - mouseY
    - - mouseButton
    - - mousePressed()
    - - mouseReleased()
    - - mouseDragged()
    - - - diff --git a/reference/mouseOut_/index.html b/reference/mouseOut_/index.html deleted file mode 100644 index eed59cf..0000000 --- a/reference/mouseOut_/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -layout: withcc -title: mouseOut() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mouseOut()

    Examples
    // Moving the mouse into and out of the canvas
    -
    -// changes the background color
    -
    -
    -
    -void setup() {
    -
    -  size(200,200);
    -
    -  background(10);
    -
    -}
    -
    -
    -
    -void draw() {}
    -
    -
    -
    -void mouseOver() {
    -
    -  background(50,80,140);
    -
    -}
    -
    -
    -
    -void mouseOut() {
    -
    -  background(140,50,80);
    -
    -}
    DescriptionThe mouseOut() function is called when the mouse pointer leaves a sketch.
    Syntax
    mouseOut(){ // statements }
    Parameters - - - - - - - - - - - -
    UsageWeb
    Related - - mouseX
    - - mouseY
    - - mouseButton
    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - - mouseOver()
    - - mouseScrolled()
    - - mouseScroll()
    - - mouseDragged()
    - -
    - diff --git a/reference/mouseOver_/index.html b/reference/mouseOver_/index.html deleted file mode 100644 index f41603d..0000000 --- a/reference/mouseOver_/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -layout: withcc -title: mouseOver() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mouseOver()

    Examples
    // Moving the mouse into and out of the canvas
    -
    -// changes the background color
    -
    -
    -
    -void setup() {
    -
    -  size(200,200);
    -
    -  background(10);
    -
    -}
    -
    -
    -
    -void draw() {}
    -
    -
    -
    -void mouseOver() {
    -
    -  background(50,80,140);
    -
    -}
    -
    -
    -
    -void mouseOut() {
    -
    -  background(140,50,80);
    -
    -}
    DescriptionThe mouseOver() function is called when the mouse pointer moves over the sketch.
    Syntax
    mouseOver() { //statements }
    Parameters - - - - - - - - - - - -
    UsageWeb
    Related - - mouseX
    - - mouseY
    - - mouseButton
    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - - mouseOut()
    - - mouseScrolled()
    - - mouseScroll()
    - - mouseDragged()
    - -
    - diff --git a/reference/mousePressed/index.html b/reference/mousePressed/index.html deleted file mode 100644 index 3e5361c..0000000 --- a/reference/mousePressed/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: withcc -title: mousePressed | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mousePressed

    Examples
    // Click within the image to change 
    -
    -// the value of the rectangle
    -
    -void draw() {
    -
    -  if (mousePressed == true) {
    -
    -    fill(0);
    -
    -  } else {
    -
    -    fill(255);
    -
    -  }
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    DescriptionVariable storing if a mouse button is pressed. The value of the system variable mousePressed is true if a mouse button is pressed and false if a button is not pressed.
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - mouseX
    - - mouseY
    - - mouseButton

    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - - mouseDragged()
    - -
    - diff --git a/reference/mousePressed_/index.html b/reference/mousePressed_/index.html deleted file mode 100644 index 8be13b7..0000000 --- a/reference/mousePressed_/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -layout: withcc -title: mousePressed() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mousePressed()

    Examples
    // Click within the image to change 
    -
    -// the value of the rectangle
    -
    -
    -
    -int value = 0;
    -
    -
    -
    -void draw() {
    -
    -  fill(value);
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  if(value == 0) {
    -
    -    value = 255;
    -
    -  } else {
    -
    -    value = 0;
    -
    -  }
    -
    -}
    DescriptionThe mousePressed() function is called once after every time a mouse button is pressed. The mouseButton variable (see the related reference entry) can be used used to determine which button has been pressed.
    Syntax
    void mousePressed() { 
    -
    -  statements
    -
    -}
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - mouseX
    - - mouseY
    - - mouseButton
    - - mouseReleased()
    - - mouseMoved()
    - - mouseDragged()
    - -
    - - - diff --git a/reference/mouseReleased_/index.html b/reference/mouseReleased_/index.html deleted file mode 100644 index 8ab4c14..0000000 --- a/reference/mouseReleased_/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: withcc -title: mouseReleased() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mouseReleased()

    Examples
    // Click within the image to change 
    -
    -// the value of the rectangle
    -
    -
    -
    -int value = 0;
    -
    -
    -
    -void draw() {
    -
    -  fill(value);
    -
    -  rect(25, 25, 50, 50);
    -
    -}
    -
    -
    -
    -void mouseReleased() {
    -
    -  if(value == 0) {
    -
    -    value = 255;
    -
    -  } else {
    -
    -    value = 0;
    -
    -  }
    -
    -}
    DescriptionThe mouseReleased() function is called every time a mouse button is released.
    Syntax
    void mouseReleased() {
    -
    -  statements
    -
    -
    -
    -}
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - mouseX
    - - mouseY
    - - mouseButton
    - - mousePressed()
    - - mouseMoved()
    - - mouseDragged()
    - -
    - diff --git a/reference/mouseX/index.html b/reference/mouseX/index.html deleted file mode 100644 index dd8fb6c..0000000 --- a/reference/mouseX/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: withcc -title: mouseX | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mouseX

    Examples
    void draw()
    -
    -{
    -
    -  background(204);
    -
    -  line(mouseX, 20, mouseX, 80);
    -
    -}
    DescriptionThe system variable mouseX always contains the current horizontal coordinate of the mouse.
    Syntax
    mouseX
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - mouseY
    - - mouseButton
    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - - mouseDragged()
    - -
    - diff --git a/reference/mouseY/index.html b/reference/mouseY/index.html deleted file mode 100644 index 6e2aa17..0000000 --- a/reference/mouseY/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: withcc -title: mouseY | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    mouseY

    Examples
    void draw()
    -
    -{
    -
    -  background(204);
    -
    -  line(20, mouseY, 80, mouseY);
    -
    -}
    DescriptionThe system variable mouseY always contains the current vertical coordinate of the mouse.
    Syntax
    mouseY
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - mouseX
    - - mouseButton
    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - - mouseDragged()
    - -
    - - - diff --git a/reference/multiline comment/index.html b/reference/multiline comment/index.html deleted file mode 100644 index 59fd702..0000000 --- a/reference/multiline comment/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: withcc -title: /* */ (multiline comment) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    /* */ (multiline comment)

    Examples
    /*
    -
    -   Draws two lines which divides the window 
    -
    -   into four quadrants. First draws a horizontal
    -
    -   line and then the vertical line 
    -
    -*/ 
    -
    -line(0, 50, 100, 50);
    -
    -line(50, 0, 50, 100);
    DescriptionExplanatory notes embedded within the code. Comments are used to remind yourself and to inform others about the function of your program. Multiline comments are used for large text descriptions of code or to comment out chunks of code while debugging applications. Comments are ignored by the compiler
    Syntax
    /*
    -
    -  comment
    -
    -*/
    Parameters - - - - - - - - - -
    commentany sequence of characters
    UsageWeb & Application
    Related// (comment) - -
    /** */ (doc comment)
    - diff --git a/reference/multiply assign/index.html b/reference/multiply assign/index.html deleted file mode 100644 index 42f3906..0000000 --- a/reference/multiply assign/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: withcc -title: "*= (multiply assign) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    *= (multiply assign)

    Examples
    int a = 5;
    -
    -int b = 2;
    -
    -a *= b; // sets "a" to 10
    DescriptionCombines multiplication with assignment. The expression a *= b is equivalent to a = a * b.
    Syntax
    value1 *= value2
    Parameters - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2any numerical value the same datatype as value1
    UsageWeb & Application
    Related - - = (assign)
    - - * (multiply)
    - -
    - diff --git a/reference/multiply/index.html b/reference/multiply/index.html deleted file mode 100644 index be1a852..0000000 --- a/reference/multiply/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: withcc -title: "* (multiply) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    * (multiply)

    Examples
    int e = 50 * 5;  // Sets e to 250
    -
    -int f = e * 5;   // Sets f to 1250
    DescriptionMultiplies the values of the two parameters. Multiplication is equivalent to a sequence of addition. For example 5 * 4 is equivalent to 5 + 5 + 5 + 5.
    Syntax
    value1 * value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int, float, byte, or char
    value2int, float, byte, or char
    UsageWeb & Application
    Related+ (add)
    - - / (divide)
    - diff --git a/reference/new/index.html b/reference/new/index.html deleted file mode 100644 index f972113..0000000 --- a/reference/new/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: withcc -title: new | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    new

    Examples
    HLine h1 = new HLine();
    -
    -float[] speeds = new float[3];
    -
    -float ypos;
    -
    -
    -
    -void setup() { 
    -
    -  size(200, 200);
    -
    -  speeds[0] = 0.1; 
    -
    -  speeds[1] = 2.0;
    -
    -  speeds[2] = 0.5;
    -
    -} 
    -
    - 
    -
    -void draw() {
    -
    -  ypos += speeds[int(random(3))]; 
    -
    -  if (ypos > width) { 
    -
    -    ypos = 0; 
    -
    -  } 
    -
    -  h1.update(ypos); 
    -
    -} 
    -
    - 
    -
    -class HLine { 
    -
    -  void update(float y) { 
    -
    -    line(0, y, width, y); 
    -
    -  } 
    -
    -}
    DescriptionCreates a "new" object. The keyword new is typically used similarly to the applications in the above example. In this example, a new object "h1" of the datatype "HLine" is created. On the following line, a new array of floats called "speeds" is created.
    UsageWeb & Application
    - - - diff --git a/reference/nf_/index.html b/reference/nf_/index.html deleted file mode 100644 index ab98f43..0000000 --- a/reference/nf_/index.html +++ /dev/null @@ -1,182 +0,0 @@ ---- -layout: withcc -title: nf() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    nf()

    Examples
    int a=200, b=40, c=90;
    -
    -String sa = nf(a, 10);
    -
    -println(sa); // prints "0000000200"
    -
    -String sb = nf(b, 5);
    -
    -println(sb); // prints "00040"
    -
    -String sc = nf(c, 3);
    -
    -println(sc); // prints "090"
    -
    -
    -
    -float d = 200.94, e = 40.2, f = 9.012;
    -
    -String sd = nf(d, 10, 4);
    -
    -println(sd);  // prints "0000000200.9400"
    -
    -String se = nf(e, 5, 3);
    -
    -println(se);  // prints "00040.200"
    -
    -String sf = nf(f, 3, 5);
    -
    -println(sf);  // prints "009.01200"
    DescriptionUtility function for formatting numbers into strings. There are two versions, one for formatting floats and one for formatting ints. The values for the digits, left, and right parameters should always be positive integers.

    As shown in the above example, nf() is used to add zeros to the left and/or right of a number. This is typically for aligning a list of numbers. To remove digits from a floating-point number, use the int(), ceil(), floor(), or round() functions.
    Syntax
    nf(intValue, digits)
    -
    -nf(floatValue, left, right)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    intValueint or int[]: the number(s) to format
    digitsint: number of digits to pad with zeroes
    floatValuefloat or float[]: the number(s) to format
    leftint: number of digits to the left of the decimal point
    rightint: number of digits to the right of the decimal point
    ReturnsString or String[]
    UsageWeb & Application
    Related - - nfs()
    - - nfp()
    - - nfc()
    - diff --git a/reference/nfc_/index.html b/reference/nfc_/index.html deleted file mode 100644 index c026157..0000000 --- a/reference/nfc_/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: withcc -title: nfc() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    nfc()

    Examples
    int i = 500000; 
    -String si = nfc(i);
    -println(si);  // Prints "500,000"
    -float f = 42525.34343; 
    -String fi = nfc(f, 2);
    -println(fi);  // Prints "42,525.34"
    Description Utility function for formatting numbers into strings and placing appropriate commas to mark units of 1000. - There are two versions, one for formatting ints and one for formatting an array of ints. - The value for the digits parameter should always be a positive integer.
    Syntax
    nfc(intValue)

    -
    nfc(floatValue, right)
    Parameters - - - - - - - - - - - - - - - - -
    intValueint or int[]: the number(s) to format
    floatValuefloat or float[]: the number(s) to format
    rightint: number of digits to the right of the decimal point
    ReturnsString or String[]
    UsageWeb & Application
    Related - nf()
    - nfs()
    - nfp()
    diff --git a/reference/nfp_/index.html b/reference/nfp_/index.html deleted file mode 100644 index 9b80b7d..0000000 --- a/reference/nfp_/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: withcc -title: nfp() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    nfp()

    Examples
    	
    -int a=200, b=-40, c=90; 
    -String sa = nfp(a, 10); 
    -println(sa); // prints "+0000000200" 
    -String sb = nfp(b, 5); 
    -println(sb); // prints "-00040" 
    -String sc = nfp(c, 3); 
    -println(sc); // prints "+090" 
    - 
    -float d = -200.94, e = 40.2, f = -9.012; 
    -String sd = nfp(d, 10, 4); 
    -println(sd);  // prints "-0000000200.9400" 
    -String se = nfp(e, 5, 3); 
    -println(se);  // prints "+00040.200" 
    -String sf = nfp(f, 3, 5); 
    -println(sf);  // prints "-009.01200""
    DescriptionUtility function for formatting numbers into strings. Similar to nf() but puts a "+" in front of positive numbers and a "-" in front of negative numbers. - There are two versions, one for formatting floats and one for formatting ints. - The values for the digits, left, and right parameters should always be positive integers.
    Syntax
    nfp(intValue, digits)

    -
    nfp(floatValue, left, right)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - -
    intValueint or int[]: the number(s) to format
    digitsint: number of digits to pad with zeroes
    floatValuefloat or float[]: the number(s) to format
    leftint: number of digits to the left of the decimal point
    rightint: number of digits to the right of the decimal point
    ReturnsString or String[]
    UsageWeb & Application
    Related - nf()
    - nfs()
    - nfc()
    diff --git a/reference/nfs_/index.html b/reference/nfs_/index.html deleted file mode 100644 index 282cae1..0000000 --- a/reference/nfs_/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: withcc -title: nfs() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    nfs()

    Examples
    int a=200, b=-40, c=90; 
    -String sa = nfs(a, 10); 
    -println(sa); // prints " 0000000200" 
    -String sb = nfs(b, 5); 
    -println(sb); // prints "-00040" 
    -String sc = nfs(c, 3); 
    -println(sc); // prints " 090" 
    - 
    -float d = -200.94, e = 40.2, f = -9.012; 
    -String sd = nfs(d, 10, 4); 
    -println(sd);  // prints "-0000000200.9400" 
    -String se = nfs(e, 5, 3); 
    -println(se);  // prints " 00040.200" 
    -String sf = nfs(f, 3, 5); 
    -println(sf);  // prints "-009.01200"
    Description Utility function for formatting numbers into strings. Similar to nf() but leaves a blank space in front of positive numbers so they align with negative numbers in spite of the minus symbol. - There are two versions, one for formatting floats and one for formatting ints. The values for the digits, left, and right parameters should always be positive integers.
    Syntax
    nfs(intValue, digits)

    -
    nfs(floatValue, left, right)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - -
    intValueint or int[]: the number(s) to format
    digitsint: number of digits to pad with zeroes
    floatValuefloat or float[]: the number(s) to format
    leftint: number of digits to the left of the decimal point
    rightint: number of digits to the right of the decimal point
    ReturnsString or String[]
    UsageWeb & Application
    Related - nf()
    - nfp()
    - nfc()
    diff --git a/reference/noCursor_/index.html b/reference/noCursor_/index.html deleted file mode 100644 index c428c82..0000000 --- a/reference/noCursor_/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: withcc -title: noCursor() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    noCursor()

    Examples
    -
    // Move the mouse left and right across the image
    -// to see the cursor change from a cross to a hand
    -void draw() 
    -{
    - if(mousePressed == true) {
    -  noCursor();
    - } else {
    -  cursor(HAND);
    - }
    -}
    DescriptionHides the cursor from view. Will not work when running the program in a web browser.
    Syntax
    noCursor()
    ReturnsNone
    UsageWeb & Application
    Relatedcursor()
    diff --git a/reference/noFill_.gif b/reference/noFill_.gif deleted file mode 100644 index 0e861e63f50accdbaffbe62aa9301f3d34c77c35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2504 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 SPWQUo!WY>{_%Hwv0suSw - - - - Name - -

    noFill()

    - - - - - - - - - - Examples - -
    example pic
    rect(15, 10, 55, 55);
    -
    -noFill();
    -
    -rect(30, 20, 55, 55);
    - - - - - - - - Description - - - - Disables filling geometry. If both noStroke() and noFill() are called, nothing will be drawn to the screen. - - - - - - - - Syntax - - - -
    noFill()
    - - - - - - - - Parameters - - - - - - - - - - - - - -
    - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - fill()
    - - - - - diff --git a/reference/noLights_/index.html b/reference/noLights_/index.html deleted file mode 100644 index 182c14f..0000000 --- a/reference/noLights_/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: withcc -title: noLights() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    noLights()

    Description

    Disable all lighting. Lighting is turned off by default and enabled with the lights() method. - This function can be used to disable lighting so that 2D geometry (which does not require lighting) can be drawn after a set of lighted 3D geometry.

    Syntax
    noLights()
    ReturnsNone
    UsageWeb & Application
    Relatedlights()
    diff --git a/reference/noLoop_/index.html b/reference/noLoop_/index.html deleted file mode 100644 index 9d6ac3c..0000000 --- a/reference/noLoop_/index.html +++ /dev/null @@ -1,156 +0,0 @@ ---- -layout: withcc -title: noLoop() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    noLoop()

    Examples
    void setup() {
    -
    -  size(200, 200);
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  line(10, 10, 190, 190);
    -
    -}

    void setup() {
    -
    -  size(200, 200);
    -
    -}
    -
    -
    -
    -float x = 0.0;
    -
    -
    -
    -void draw() {
    -
    -  background(204);
    -
    -  x = x + 0.1;
    -
    -  if (x > width) {
    -
    -    x = 0;
    -
    -  }
    -
    -  line(x, 0, x, height); 
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void mouseReleased() {
    -
    -  loop();
    -
    -}
    DescriptionStops Processing from continuously executing the code within draw(). If loop() is called, the code in draw() begin to run continuously again. If using noLoop() in setup(), it should be the last line inside the block. - - - -

    - -When noLoop() is used, it's not possible to manipulate or access the screen inside event handling functions such as mousePressed() or keyPressed(). Instead, use those functions to call redraw() or loop(), which will run draw(), which can update the screen properly. This means that when noLoop() has been called, no drawing can happen, and functions like saveFrame() or loadPixels() may not be used. - - - -

    - -Note that if the sketch is resized, redraw() will be called to update the sketch, even after noLoop() has been specified. Otherwise, the sketch would enter an odd state until loop() was called.
    Syntax
    noLoop()
    ReturnsNone
    UsageWeb & Application
    Relatedloop() - -
    redraw() - -
    draw()
    - diff --git a/reference/noSmooth_.gif b/reference/noSmooth_.gif deleted file mode 100644 index dba7ae12a13a494627a817be7ab77dda8e45cc6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 640 zcmZ?wbhEHbOkqf2xXQrr|NsBrzkh%K{{8dk&yOEJzJC4s<;$1PpFe;6`0>Ms5AWZ< zfA{X)+qZ9DzkdDV#f#_9pFex{?CH~|_xJaAcX!v<*H>3pmzS5Pr>93pM~8=p2L}iH z`}^D5+gn>(8yg$z>+5T4Ys<^aOG`_Oi;Ht}b2BqDGf)-ifJ_7Vg@NtA!{h=F9jX2k zONvhBSk1q%qQq-$)cPB1%1*zn+W%lfg^%9s^Dnkkoz2^Q|HFJ-u~`l0uveQy92~rIqui&Y2r6!#j5oBcFWsq7_raW!YD*kBJ_Qy*wU%Iz|bL8K?3`?rPb&!Q((DYX+Cer-a2! zOXvRU3AwT2?I|~9S+k^qh|e62olJd9`3+G)^;S*EK_%7PnG3_7I z2j$iMove*4d$;5+x+vG2QS{bQQ}C25)5_a-92GB$$1wRO9|+vJpdgBYtKzi9ZYHIa zP0XTKHBNsz$ha$AMn+L`W8xtuKTeet4#iztUtiyle0rYm?rm>x? - - Name -

    noSmooth()

    - - - - Processing.js Behavior - Processing.js always renders in smooth mode. This is a limitation of the HTML5 Canvas element. - - - Examples -
    example pic
    background(0);
    -smooth();
    -ellipse(70, 48, 36, 36);
    -noSmooth();
    -ellipse(30, 48, 36, 36);
    -
    - - - - Description - - Draws all geometry with jagged (aliased) edges. - - - - Syntax -
    noSmooth()
    - - - - - - Returns - None - - - - Usage - Web & Application - - - - Related - smooth()
    - - - diff --git a/reference/noStroke_.gif b/reference/noStroke_.gif deleted file mode 100644 index 44b0f091fbf4d91a21c5adcbc89499eaa5738b3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2351 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 VJxK6^8~oti@Wwav;eikU06P=(+Moac diff --git a/reference/noStroke_/index.html b/reference/noStroke_/index.html deleted file mode 100644 index 8bfebc2..0000000 --- a/reference/noStroke_/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: withcc -title: noStroke() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    noStroke()

    Examples
    example pic
    noStroke();
    -
    -rect(30, 20, 55, 55);
    DescriptionDisables drawing the stroke (outline). If both noStroke() and noFill() are called, nothing will be drawn to the screen.
    Syntax
    noStroke()
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Relatedstroke()
    - diff --git a/reference/noTint_.jpg b/reference/noTint_.jpg deleted file mode 100644 index 4673358028d80187715023c4298274b9b0a2d2dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8027 zcmY+JbyO6<*Y}t1SdfsGQffhBNkL@klI|{vU0Avil5`7!B?JYeK{|G61W7?k zK;ZHBJnwnV`+Vn|nYs5)eC|JU&Yb(O_^=M3R8vw_0$^bS0QUbH;NcJeg!tIG1^}=C zxBvj)^*`4!fLz|*-PQqM-}}#l^?(Mv2VnoNaQ@A3aR2oDH4V}l207pBHP2``>{^(eLJ%SJQDsje+8 zfoDWoiGo*)D9yt%fD{MoUlKS#fE)mKSrBVap7G;{Yy1{98>Z$HVaR6d$+wmEm1M3w zWv1*@@gRj=mpNegDLIy>%i%$%J)^qDf{59y!7Qcx`U;;eTqr)M*|)CjPeAZ=WgBqi zGcxG`Ap0V|_4d;)f86@gHrt-)PPN4JQ#`5$9CP0L9VgfgIZlLPVqFu`UC366AZI;8 zBiGyGsAE1gVOrC{hxldMoJ&jw&?FsYX)`efXc1{d0|Dmiz!?FVe8=LWIr6kF$whSD0~c ztfonau=9r`8t+kU(3kgkSqsNd_o}DhE{v*$(nDZEstIMYx`YcBn|O%%LHo8Lo}kdj z61uw`%WTQKY=fqE{*sz}CgVzOBDZ-#>A~-PeKE>O!Q$LF(LATGp7BT6n~LdwED!aE zaK*iOOl9)w=JR?;=L4W)NlLD>HPA9j)921r{7fqDM+589`yL;0!<{DCLEnJ(r>%2^ zUe_=x6p5Y2U|xJ~f5~;z=Ob}WY+TNu!RYY-y`Z*)aw-_ak7Mwi$2M|#*Icb{M%+GR z_GL&W+`?W*reChVt8pd%?ADi3GU1h%m+g1VzBr(F-Je`lI^CW8NR6z#$wpw$1n-F? zq1Om|4=LMfhwmzb^JX?9n4{}7dm*YYc*IOf^JEL1xR|n-l(tdt?LUM>KKmd#v-J+; zy9eY1FgZ;&iP)}U)U4GYdszzMI~{RrahgLMa(ETr)E0CQWG)~1`o`p#_^&H;?U(|} zirRtUDX9XfI3hz;XPTDDP>I57X5_}>bHk_?209`JycNi3`W3K@e9n*C>fZ(7oy=dg ziY+WYWOW5eW6};gDV&6|7{9Hja<~rZ`ZD=Kn3R59;VD8j*A?ZJn;XXI9w%4XE8TBp zpF9BQ>wZlMv;M6$RUjyM{s5@va^Md_z>_Z5)L9W%Moc+#&B~C&7|j%RVNFLaGh~CHvns?F9MJOro5bFs;2#XY-)A ziA#-=qu7fLr7UBy*C&;6O%yQ>RB4N$W2E$ylmBoC(;cx!bwanK13C{@i z-UuRQx(Gh2fk^51&NXv%$jT1!7LE?LM$TL`CgTj;_k4@xZAp@6ef0AzXhIF{(yJ=>>9~5{nYRtR>+J}^ zJvNA~*G_y8>>DyyFQF{|N^v7Yx9d3-{wcZ<=qRI~ z{|?H$l`dc!CEvVbv=kr2CnHHQ9F+>RDO6e(lX3x9?-&Vrodq|ll4+ol-h8@4_B`uX zHwvO+#7XB$QtbF}o2>1tGG1F!hTU6JQ$@j$mc=ZDbmC4oif|Nni}#p=j>2WMZIhaa zofpf}R_)`hF=czbrjXyYnOl{X67h_lV2a?~z9KF=>G^N#6d=%PU4WPA*%9a>xXt&r z`3`?EKk#Y${CZN~E;pYl*9*689<0a3uOI!cQ*HgECO;YDY_c9wj$_80 zahybUc^B%qjgJQFkefdqUv)Vmpv`@l8U7b-e14=;d_8OT75mn}H#0q-w)ovcu#QRKTO*7I75 z>85F~$Vg95yRzJM@Y4EohRLUpW($xJ5p|{66GbpAK_PESnyq=;r-*mf%yf>Laee_F zxLy7XFb&x1_Z8%I_nrUrO$fy!Lt3h`Lk8zD$Q8#g|IujX1rfnK1?tQc(}#Q9NWi}w z-EZvR7tx8%pB?2bNlkiq&{Hp`q1i1zG^yCbbe5glvZf-G4J`3Dc@50XMI7lgOT_T& zExKkp^V{*)nQ;sEPCc2@h$xS_+Hz9-(!tmwM5mLiH zUeB;x!FR@44fgB@luJaQH2bxAsh%>uOw74<7@idAua!Km515*vU(lYGAYF3RZWWmH z$X=cpeubt*8WH%`-X;xj4b$P!@CZKuE)=OD&R>baCk-@KNh0JODyx%PWUN~>T{jwI z=Lejps0Tor%TnrxtOoVkT# zgpcvh9K^};aF+~k&7(8(y(aMWm6vIlRb>eYd0imSVkw{*PzxGm$5QAEDYhdx5(x zA*YqK`<`dsH;-Eus{WkT_N(W8hE-f)$F~ zM;Vws(#9@#j=%McM5&g?ZVY>5+wqvaLz7}*{TRFCo+@&FM;zGglgq#;T%;<9su+4A zu~}1+9wEA^->>6|VYh?;)YqTO%%YmK(aLqt#ac_Lw2848!_%@c z8+1bD0!SizdujW!@vP-4-QnV0zdSpm?Un`Gf3Bby{bA@nCH5_i(L`5ULaE-;h%U`3 zoRQB=@Is$NYRrgtRT91bD@?bTqhW^+QuPbI|JGI-#w_C}2zJ-$?-j&mj!*NIU*-GJ zx4;tnFKKLZ%Rl4?_*-SmzkkrBgV7oy62B^A{C;-$X#q__nq0l`u3Q}$cd)a!YEOFNI8>6$3T{65Q`08;r4iAkv9JvxgfOU zTgT^$f0&=K^FdKRWP617Sgq=86N#fYh0Akidz4-8z2>#}l6rlx2WYFt1JCp1D#F|}GuaEx2v@sHe7t1o<5ZFqEGv0dHU0DzX~cyNnocWFaB^zY+ah6-PjqBv0t){9a?48 z+RBZ7#QHsDX~CjjnGru3Z&`myUh`?OsJub#$N1+?)0fok4odgu4m@C!<{ZQ#rRNMW zbTc@ceB5o1(V^0i*TMROm+(hKPNqsmTKQ-+zuE%;)ZN7Q{>m03E5+M#nor38o*^WVpsFJ)&@S_{A0`>Im3 zT(nn>>3j^pG{=FCeTP^lvmU(`K=)?xmWTW zzW-^#y}R6Z&;iQX-nV=?dVaD({c$X_Bg^7XbUAdLHeY!Szn4;nZ(Hq5zn($FBX&iP z)la(c;%F`C=#81M>_Fon#!xv?6Fkr^V`v_8Qvx!e@yPU=u2R1h^6l(@uLOz?tG*k! z$E*~Vp&{%?WlGE9b<;p ztj^4ELE%VF$v86XtgvyWa(zYf5|ivKY38hDOj74u3~r9g3@>?D3J5t-J_j?4&TK!P zfI!Tr>dDo`y^-tNLIZNgAhZc6y$-rmF}%3zOXii>2{fk76Vi2?I>n`#P)!B$otdj+ z&hw3)0^RaWYZjjM@wWRvW0so@il^OihgeaTF8-3lFI5$k*E=Dm@i|iV1os_xvh=YZ z_w&COca{3|O3m1|p_YIfV2W9{?(ceyMZx5GF|JEuVU; zbg}gskcltxI7PtMcC%JQW=`kR^`S@U&23 z5ElXL#!Jt{)071UuA^q^)Z}xl$+K)1C9a|rUz9Fa-bPAs8aC)$7Or}5h$dOUqTLy5 za-zD7-P5%jiAi#KFJCjvT){OzqX<{nJXljK=pYH>;XIqa?-f6@#TWvB`G!h5kc%Jn-{W?#0BON%(V&O0E zHV*lEqeZ^N5b@pkRjq`lybb$D;70+^Ci(4`PjEyCJ9{K6+ci-Wv+EVreJ zypx@g7JgBE`EH_*&+=1%OT{m$p%qoTZ zsLv|%F!DCCl4FhW&9Vm*#CiZlMqKYMRPw~SPQL7QLayO`(w7^axgD#|pEpKl13F$X z80pOj8|ewAgEO7KW}I2)?7O8N{NlkJ6(K-SMo*|lXxJG|@yoii?gEz&*KIljynTd`=7S?64wQJJh_^R_hfqJ_V#`d$?~8O8T` zdi#Ab%%U$wat__(O&fSo>xuBaXh-6a8asQ~)g<_M3=&tpZx^?mhsWBmY_uf~*P(p8 z+}gt_%CXFcfJ9nSxgbl<>aCdj&@Jc_b}r(D(G$e8KNe=Dg_EJAM3LXwA;Ftxvzjd4 z`NZqjpkxcXRo3J;$fZp`x>BuQN}lYQp7_{I=c46vTR)W0evf(_K9j zx*hF$=PJ;udEm#@{@sqM7Zbi!*6+&jvO2@G7}9BHcQm#{=jwRbW>zQe4}Tm% z>%3dBmBgO@OO@frrpqQFJDl>7hVmXQI6b2nnPA5Tu#4Yx_~pw4F#KG;dZDg^@N$rx zz?3=EKk0pxU=9E1l>U7vEgykP)?|ys*g!+Bp1P-lrkU$iGpfo6+262}$7PD}{;8+O zD9xcpz%Y8lx3j_e1(A2F`?F6`Xr-;VAwT;In&$%VJj~h-dk{fJ-nS-48Qn|mQ0n6( zL;!XXt+0?iON+F|z?b6dcf6z#I=kdwsPU&RX*9(;j;>_Te ze;AGY%vcWRcQRXlO^DCEpi*c+xxel0P-?&tpb|}zfH4rKQ0?$GkQ(;+Jj)`U97%F% zSq)-b(V8(`;p3iC$rfmH&RU&0CUBoZhg|v$oajC_iuG{u)H82;#N>cSReD|m;!+4= zbB%!gh{_*!)5xwoCjskV# z3H3@I_9Ge1Yj6sl5>XOG2HTezZ&jbX<9Pst200yhA*AEbUPsy9j=t8grZQENTiflk zcDpQe9SKB3Mo>s0wXX#HDn}3uTec7@pR->$#xF9tscR0!><3!SC%?4Pn@rb!)e#ub z8a!7C66?Fs`oQ;vHb+)$y&{{49Dtw|yk6?b8u)Lz(M9M8BTHbx-VbX4C5P%*< zXq0axYRg)lH;ejiD!YiNZaY8A-07jQ%G(&#p#6Wi!se+=% zdzua2_jI@4*};`^eyinXI^=wgn2vpxYfqyws>Sr2vCJ6#^Gvf_4;OW6Sh(IH_uBpH zrYk&1v6Ql}S9CrJ=L61sl>lZ)r@>;GyV3{z=Ij-(bj`90_Vm<30r9`U5XT8r{XOUyr_!`0B&VoLCv4hK)?t(r} z`bc%5v{Mo(mRGlD~CX*74 z(QD3>dHw|AFcur2hpYCQh^J8s-;Q z@|O<8!x3mkGL3SRA(u%;4Ev_EkvFwR#!t`q%2IhH|GJ)2bf1@487z>xrd21IZyhsA zV%Epd9%Q{Bf4@vsuBw)4`t)m^RSQe8hzIaBo@9v3zyGyu%i=Gmsk(3d;m2u8pK$KH z%ksH>t2fc%ho!JlyT*dX)=_Lm&=_B*;pteJaCzOl?S5J|gD`LGJ?|Fy0Bt20;< zIcxFl6Ib-YQL(VWms;t(3GH?jZq<^kPZII7>Cb4O4CA{x4F$M{-^3qDDpj#Q02~Co zSz$LH3SNYDwB4j1_=uc`zzU(Hxna^pw+6p$4%?pWgfR6O;Ev>=>Cy^9bb95dO@!$a zR!fiVSyVS`daxjywNXw_D1S)9Fcqd8=sY_Q&Pl7A_r@vl8Q!K6yMKmdGw%0oc@i4z zyLt7qW#6*!Y9ZCXP!+X|{+hM-Yb#(W5Id+sPr zRHs?Qun;tjnqh}H=62s(@A;_OcUML87jN3A#c3@=+x_$|I*O{rix9tW!Zc^a^0k%g z_byO-`}Z*O*#;Kl<}-qwDU z0g)w}yW-m~cG3k#oIFxxoX<-_e^%o5Cg297$6o&7(%M5Ry|l*1*&WNvw3HtA^k6Im z{=oHPSE5Z9+8Jvm!qcJgC%#TklALJq*k_})xxQC_dG5PNP5lfh9QH?f5F0VLC?f$6 zDfi9eq;Xyxi~MOEP_C!|`K(<%Cl~92oV-cFfwM`5%DWbDZy!TTd622XexqH^$A++7 zWQjrmbn0dO6^uCRXH22Iex0RPy4}{!fOpx*nBol8auEtig&-N%6-n!7=PCCEqnctg7vIOv3es2sd3az{waJ{`cW;MSsA9oEa_`c^Y z7hU%EZxK0tLH$nmQvt%G z&iC2zMe%o-9^y*i%+P9qX!UiV_o#NJjL^DUhUc*ri!;+iWqDBX@Z2`2$P^{=$Fa{y z%vlP)Q`lB&ys$CeWFNIK?G5u@&bx_UaD4#e%$FFM?VeN;hsc`R)Jl2JFs;$;9xXxc z4=kIibE{UFBi^Z(Gl}B*2sAVHXs)lW`Ex4OO0$#O%7I0T8T>qHw|8p zSwcPLESb6+O$RGQL#n5jTWJUNLNv4Y5s0Pe+OTCmryDYDglI!(@!sRW<(nU0QC{%T z$!kkDIJ42ex7?iP8n4_NYURpoeAV;-cvBnj<{T6mLZDtUdA%$;J9~HJb{~9E=LH|| zaLdec_R1Au787~xdg0l?V#&(HS)L(<4hY@q3>kd*S83_~?%1Hc7g$=kSNPa-rn<7| zh1a!cBanw - - Name -

    noTint()

    - - - - - - Examples -
    example pic
    // @pjs preload must be used to preload the image
    -    /* @pjs preload="laDefense.jpg"; */
    -    PImage b;
    -b = loadImage("laDefense.jpg");
    -tint(0, 153, 204); // Tint blue
    -image(b, 0, 0);
    -noTint(); // Disable tint
    -image(b, 50, 0);
    - - - - Description - -

    Removes the current fill value for displaying images and reverts to displaying images with their original hues.

    - - - - Syntax - -
    noTint()
    - - - Returns - None - - - Usage - Web & Application - - - - - Related - tint()
    - image()
    - - diff --git a/reference/noiseDetail_/index.html b/reference/noiseDetail_/index.html deleted file mode 100644 index 63c7dbe..0000000 --- a/reference/noiseDetail_/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: withcc -title: noiseDetail() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    noiseDetail()

    Examples
    float noiseVal;
    -float noiseScale=0.02;
    -void draw() {
    -  for(int y = 0; y < height; y++) {
    -    for(int x = 0; x < width/2; x++) {
    -      noiseDetail(3,0.5);
    -      noiseVal = noise(
    -        (mouseX+x) * noiseScale,
    -        (mouseY+y) * noiseScale
    -      );
    -      stroke(noiseVal*255);
    -      point(x,y);
    -      noiseDetail(8,0.65);
    -      noiseVal=noise(
    -        (mouseX + x + width/2) * noiseScale,
    -        (mouseY + y) * noiseScale
    -      );
    -      stroke(noiseVal * 255);
    -      point(x + width/2, y);
    -    }
    -  }
    -}
    Description

    Adjusts the character and level of detail produced by the Perlin noise function. Similar to harmonics in physics, - noise is computed over several octaves. Lower octaves contribute more to the output signal and as such define the overal intensity of the noise, whereas higher - octaves create finer grained details in the noise sequence. By default, noise is computed over 4 octaves with each octave contributing exactly half than its predecessor, - starting at 50% strength for the 1st octave. This falloff amount can be changed by adding an additional function parameter. Eg. a falloff factor of 0.75 means each octave - will now have 75% impact (25% less) of the previous lower octave. Any value between 0.0 and 1.0 is valid, however note that values greater than 0.5 might result - in greater than 1.0 values returned by noise().

    -

    By changing these parameters, the signal created by the noise() function can be adapted to fit very specific needs and characteristics.

    Syntax
    noiseDetail(octaves);

    -
    noiseDetail(octaves,falloff);
    Parameters - - - - - - - - -
    octavesint: number of octaves to be used by the noise() function
    fallofffloat: falloff factor for each octave
    UsageWeb & Application
    Relatednoise()
    - diff --git a/reference/noiseSeed_/index.html b/reference/noiseSeed_/index.html deleted file mode 100644 index 9b8db03..0000000 --- a/reference/noiseSeed_/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: withcc -title: noiseSeed() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    noiseSeed()

    Examples
    float xoff = 0.0;
    -
    -void setup() {
    -  noiseSeed(0);
    -  stroke(0, 10);
    -}
    -
    -void draw() 
    -{
    -  xoff = xoff + .01;
    -  float n = noise(xoff) * width;
    -  line(n, 0, n, height);
    -}
    Description

    Sets the seed value for noise(). By default, noise() produces different results each time the program is run. - Set the value parameter to a constant to return the same pseudo-random numbers each time the software is run.

    Syntax
    noiseSeed(value);
    Parameters - - - - -
    valueint:
    Returnsfloat
    UsageWeb & Application
    Relatednoise()
    - noiseDetail()
    - random()
    - diff --git a/reference/noise_/index.html b/reference/noise_/index.html deleted file mode 100644 index 248d367..0000000 --- a/reference/noise_/index.html +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: withcc -title: noise() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    noise()

    Examples
    float xoff = 0.0;
    -
    -void draw() 
    -
    -{
    -
    -  background(204);
    -
    -  xoff = xoff + .01;
    -
    -  float n = noise(xoff) * width;
    -
    -  line(n, 0, n, height);
    -
    -}

    float noiseScale=0.02;
    -
    -void draw() {
    -
    -  background(0);
    -
    -  for(int x=0; x < width; x++) {
    -
    -    float noiseVal = noise((mouseX+x)*noiseScale, 
    -
    -                            mouseY*noiseScale);
    -
    -    stroke(noiseVal*255);
    -
    -    line(x, mouseY+noiseVal*80, x, height);
    -
    -  }
    -
    -}
    DescriptionReturns the Perlin noise value at specified coordinates. Perlin noise is a random sequence generator producing a more natural ordered, harmonic succession of numbers compared to the standard random() function. It was invented by Ken Perlin in the 1980s and been used since in graphical applications to produce procedural textures, natural motion, shapes, terrains etc.

    The main difference to the random() function is that Perlin noise is defined in an infinite n-dimensional space where each pair of coordinates corresponds to a fixed semi-random value (fixed only for the lifespan of the program). The resulting value will always be between 0.0 and 1.0. Processing can compute 1D, 2D and 3D noise, depending on the number of coordinates given. The noise value can be animated by moving through the noise space as demonstrated in the example above. The 2nd and 3rd dimension can also be interpreted as time.

    The actual noise is structured similar to an audio signal, in respect to the function's use of frequencies. Similar to the concept of harmonics in physics, perlin noise is computed over several octaves which are added together for the final result.

    Another way to adjust the character of the resulting sequence is the scale of the input coordinates. As the function works within an infinite space the value of the coordinates doesn't matter as such, only the distance between successive coordinates does (eg. when using noise() within a loop). As a general rule the smaller the difference between coordinates, the smoother the resulting noise sequence will be. Steps of 0.005-0.03 work best for most applications, but this will differ depending on use.
    Syntax
    noise(x)
    -
    -noise(x, y)
    -
    -noise(x, y, z)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xfloat: x coordinate in noise space
    yfloat: y coordinate in noise space
    zfloat: z coordinate in noise space
    UsageWeb & Application
    Related - - noiseDetail()
    - - random()
    - - - diff --git a/reference/norm_/index.html b/reference/norm_/index.html deleted file mode 100644 index aea9afc..0000000 --- a/reference/norm_/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -layout: withcc -title: norm() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    norm()

    Examples
    float value = 20;
    -
    -float n = norm(value, 0, 50);
    -
    -println(n);  // prints "0.4"
    DescriptionNormalizes a number from another range into a value between 0 and 1. - -

    - -Identical to map(value, low, high, 0, 1); - -

    - -Numbers outside the range are not clamped to 0 and 1, because - -out-of-range values are often intentional and useful.
    Syntax
    norm(value, low, high)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    valuefloat: The incoming value to be converted
    lowfloat: Lower bound of the value's current range
    highfloat: Upper bound of the value's current range
    UsageWeb & Application
    Relatedmap()
    - - lerp()
    - diff --git a/reference/normal_/index.html b/reference/normal_/index.html deleted file mode 100644 index c172be5..0000000 --- a/reference/normal_/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: withcc -title: normal() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    normal()

    Description

    Sets the current normal vector. This is for drawing three dimensional shapes and surfaces and specifies a vector perpendicular to the surface of - the shape which determines how lighting affects it. Processing attempts to automatically assign normals to shapes, but since that's imperfect, - this is a better option when you want more control. This function is identical to glNormal3f() in OpenGL.

    Syntax
    normal(nx,ny,nz)
    Parameters - - - - - - - - - - - - - -
    nxfloat: x direction
    nyfloat: y direction
    nzfloat: z direction
    ReturnsNone
    UsageWeb & Application
    Relatedlights()
    - beginShape()
    - endShape()
    diff --git a/reference/null/index.html b/reference/null/index.html deleted file mode 100644 index 090722f..0000000 --- a/reference/null/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: withcc -title: null | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    null

    DescriptionSpecial value used to signify the target is not a valid data element. In Processing, you may run across the keyword null when trying to access data which is not there.
    UsageWeb & Application
    - - - diff --git a/reference/online/index.html b/reference/online/index.html deleted file mode 100644 index d4cc211..0000000 --- a/reference/online/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: withcc -title: online | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    online

    Examples
    -
    if(online) {  // of "if (online == true)"
    -  ellipse(50, 50, 60, 60);
    -} else {
    -  line(0, 0, 100, 100);
    -  line(100, 0, 0, 100);
    -}
    DescriptionConfirms if a Processing program is running inside a web browser. This variable is "true" if the program is online and "false" if not.
    Syntax
    online
    UsageWeb
    diff --git a/reference/ortho_.gif b/reference/ortho_.gif deleted file mode 100644 index 093ed018d995190c75af7309232aaa28443cd785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmV;%0XhChNk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lUK10N?WUd_SP+S3D4nAz_a}OfoT2 zDbzWoSgnp|7Q*F5yx)Xati@*0XbTzGZfBM`wL-pm%kWQ>Jvf%~x58&onAhiWm^k9J z2=e$?Q57U9IkClZ$@mdQNF{QnG8hO6H9ACk+S#yqv89UOdM7tKd8KNr1cv%RC(BW& zi-}36dpInysduZ~`Nr@)&{s0fYuu;@XHz(Or$Y6#?{ zqb#Y`)YoeyBCM#a?&PS*>(`+$w8~@|Bc%sCVnsT|28U+AsAc48AzEglx3PI?nWcNR wFHk;|1b3u3#IVs!ZH;*OtGHO?$&@QwzKl7u=FOZtd;SbMwCK^KnG^s3J6!48egFUf diff --git a/reference/ortho_/index.html b/reference/ortho_/index.html deleted file mode 100644 index c76ce3f..0000000 --- a/reference/ortho_/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: withcc -title: ortho() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    ortho()

    Examples
    example pic
    size(100, 100, P3D);
    -noFill();
    -ortho(0, width, 0, height, -10, 10);
    -translate(100, 100, 0);
    -rotateX(-PI/6);
    -rotateY(PI/3);
    -box(45);
    Description

    Sets an orthographic projection and defines a parallel clipping volume. - All objects with the same dimension appear the same size, regardless of whether they are near or far from the camera. - The parameters to this function specify the clipping volume where left and right are the minimum and maximum x values, - top and bottom are the minimum and maximum y values, and near and far are the minimum and maximum z values. - If no parameters are given, the default is used: ortho(0, width, 0, height, -10, 10).

    Syntax
    ortho()
    -
    ortho(left, right, bottom,top, near,far)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - -
    leftfloat: left plane of the clipping volume
    rightfloat: right plane of the clipping volume
    bottomfloat: bottom plane of the clipping volume
    topfloat: top plane of the clipping volume
    nearfloat: near plane of the clipping volume
    farfloat: far plane of the clipping volume
    ReturnsNone
    UsageWeb & Application
    diff --git a/reference/parentheses/index.html b/reference/parentheses/index.html deleted file mode 100644 index a4331ea..0000000 --- a/reference/parentheses/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: withcc -title: () (parentheses) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    () (parentheses)

    Examples
    int a;
    -
    -a = (4 + 3) * 2;       // Grouping expressions
    -
    -if (a > 10) {          // Containing expressions
    -
    -  line(a, 0, a, 100);  // Containing a list of parameters
    -
    -}
    DescriptionGrouping and containing expressions and parameters. Parentheses have multiple functions relating to functions and structures. They are used to contain a list of parameters passed to functions and control structures and they are used to group expressions to control the order of execution. Some functions have no parameters and in this case, the space between parentheses is blank.
    Syntax
    function()
    -
    -function(p1, ..., pN)
    -
    -structure(expression)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    functionany function
    p1...pNlist of parameters specific to the function
    structureControl structure such as if, for, while
    expressionsany valid expression or group of expression
    UsageWeb & Application
    Related, (comma)
    - diff --git a/reference/pauseOnBlur/index.html b/reference/pauseOnBlur/index.html deleted file mode 100644 index ab3ffe8..0000000 --- a/reference/pauseOnBlur/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: withcc -title: /* @pjs pauseOnBlur */ directive | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    /* @pjs pauseOnBlur */ directive

    Examples
    /* @pjs pauseOnBlur="true"; */
    -        
    -void setup()
    -{
    -  size(200,200);
    -  background(255);
    -  frameRate(45);
    -}
    -
    -float value = 0;
    -boolean forward = true;
    -
    -/**
    - * This animation draws a sinewave, but only when the page this sketch
    - * is loaded on has focus. If the user alt-tabs to some other program,
    - * or they look at a different browser instance or tab, this sketch will
    - * be paused until the page it is loaded on regains focus.
    - */
    -void draw()
    -{
    -    value += forward ? 2*PI/25 : -2*PI/25;
    -    if (forward && value>=2*PI) { forward=false; }
    -    else if(!forward && value<=0) { forward=true; }
    -
    -    noStroke();
    -    fill(255,75);
    -    rect(0,0,width,height);
    -
    -    stroke(100,100,200);
    -    noFill();
    -  float c = value - PI;
    -  bezier(0,100, 33,100+(50*c*PI/6), 66,100+(50*c*PI/6), 100,100);
    -  bezier(100,100, 133,100+(50*-c*PI/6), 166,100+(50*-c*PI/6), 200,100);
    -}
    -
    Description

    Animated sketches that are loaded with Processing.js will always be running, irrespective of whether the user is looking at the page that the - sketch is running on. Using this directive makes an animated sketch pause when the user is not looking at the page that the sketch is loaded on, to - free up resources. The sketch is resumed only when the user focusses on the page again.

    -
    Syntax -
    -         /* @pjs pauseOnBlur="true"; */  
    -    
    Parameters - - - - - - -
    pauseOnBlur"true" (implicitly false for any other value)
    UsageWeb & Application, Processing.js compatibility
    Related - @pjs directives -
    \ No newline at end of file diff --git a/reference/perspective_.gif b/reference/perspective_.gif deleted file mode 100644 index f56c5284d4099d4ce5e5c027083be9f83ce2e968..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw`QNk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahaP~@NCX`NfWz_GOiG@J zXal;G8nOy21&i!)8Qu-J+@eO%A$4jzeY4x)%UsDMxij}-p5A8>Xtt$P_c6%lgvSJ@ zIO3H!fd=*1mLNIlu(u{smZ`bMxc~}rSa>Puh}tn%+Nn{w$Z_`y+d3+^2??2N`e6I( zS+z#p(=x%CsG^xIDy|qamV+3GU%qa% z8o6QtiXnzbheVG2r%+iFmoJUcQ|6*0zHMpj-8|Tn49$KpQQACrG$&A`OM}ibQAjkCCN(2U7ulz?B$tP z%HO(uwOsx9)$1!OiKV6tY#1l3#x~AIp^Rhe<;bdxVdimaCTECFKHHsXI>_MBtXsQ& N4Li2%*)j?M06QFJ - - Name -

    perspective()

    - - - - - - Examples -
    example pic
    // Re-creates the default perspective
    -size(100, 100, P3D);
    -noFill();
    -float fov = PI/3.0;
    -float cameraZ = (height/2.0) / tan(fov/2.0);
    -perspective(fov, float(width)/float(height), 
    -            cameraZ/10.0, cameraZ*10.0);
    -translate(50, 50, 0);
    -rotateX(-PI/6);
    -rotateY(PI/3);
    -box(45);
    - - - - Description - -

    Sets a perspective projection applying foreshortening, making distant objects appear smaller than closer ones. - The parameters define a viewing volume with the shape of truncated pyramid. Objects near to the front of the volume appear their actual size, - while farther objects appear smaller. This projection simulates the perspective of the world more accurately than orthographic projection. - The version of perspective without parameters sets the default perspective and the version with four parameters allows the programmer to set the area precisely. - The default values are: perspective(PI/3.0, width/height, cameraZ/10.0, cameraZ*10.0) where cameraZ is ((height/2.0) / tan(PI*60.0/360.0));.

    - - - - Syntax -
    perspective()
    -
    perspective(fov, aspect, zNear,zFar)
    - - - Parameters - - - - - - - - - - - - - - - - - - -
    fovfloat: field-of-view angle (in radians) for vertical direction
    aspectfloat: ratio of width to height
    zNearfloat: z-position of nearest clipping plane
    zFarfloat: z-position of nearest farthest plane
    - - - - Returns - None - - - - Usage - Web & Application - - - diff --git a/reference/pgraphics.jpg b/reference/pgraphics.jpg deleted file mode 100644 index f7721027dc18b698b073788b8d1b53c0b6200b3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1414 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 U;>bu&vXYnl3v38^8zBGyJ7FzmQUCw| diff --git a/reference/pixels_/index.html b/reference/pixels_/index.html deleted file mode 100644 index cf02b73..0000000 --- a/reference/pixels_/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: withcc -title: pixels[] | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    pixels[]

    Examples
    example pic
    color pink = color(255, 102, 204);
    -
    -loadPixels();
    -
    -for (int i = 0; i < (width*height/2)-width/2; i++) {
    -
    -  pixels[i] = pink;
    -
    -}
    -
    -updatePixels();
    DescriptionArray containing the values for all the pixels in the display window. These values are of the color datatype. This array is the size of the display window. For example, if the image is 100x100 pixels, there will be 10000 values and if the window is 200x300 pixels, there will be 60000 values. The index value defines the position of a value within the array. For example, the statment color b = pixels[230] will set the variable b to be equal to the value at that location in the array.

    Before accessing this array, the data must loaded with the loadPixels() functions. After the array data has been modified, the updatePixels() function must be loaded to update the changes. Without loadPixels(), running the code may (or will in future releases) result in a NullPointerException.
    Syntax
    pixels[index]
    Parameters - - - - - - - - - -
    indexint: must not exceed the size of the array
    UsageWeb & Application
    Related - - loadPixels()
    - - updatePixels()
    - - get()
    - - set()
    - -
    - - - diff --git a/reference/pjs directive/index.html b/reference/pjs directive/index.html deleted file mode 100644 index 7e392d9..0000000 --- a/reference/pjs directive/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: withcc -title: /* @pjs */ directives | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    /* @pjs */ directives

    Examples
    A single directive:
    -/* @pjs preload="image1.jpg"; */
    -Multiple directives on a single line:
    -/* @pjs preload="image1.jpg,image2.jpg"; crisp="true"; */
    -Multiple directives over multiple lines:
    -/* - @pjs preload="image1.jpg,image2.jpg"; - crisp="true"; -*/ - - - -Note: You can only have one directives block in a sketch, which should -be the first line of your sketch. If you wish to use multiple directives, -see the examples. -
    Description

    As Processing.js offers a tighter integration between Processing sketches and webpages than the traditional applet approach, certain - functions that are normally regulated by Processing are left to be handled by the browser. This approach means that certain behaviour that is - expected from a sketch may not work without additional "outside the sketch" instructions, for which /* @pjs */ directives must be used. There - are two types of directives: directives that tell Processing.js to buffer data that must be available to a sketch when it is run (preload, - font), and directives that tell Processing.js how to behave once the sketch is running (crisp, - globalKeyEvents, pauseOnBlur).

    -

    These directives are in block comment syntax so that they do not interfere with a sketch when it runs as native Processing, but if you do not wish - to pollute your source with @pjs directives, you can also store your directives in a separate file, and only call this file on your page:

    -

    directives.pde:

    -

    /* @pjs crisp="true"; pauseOnBlur="true"; */

    -

    html:

    -

    <canvas id="sketchcanvas" data-processing-sources="directives.pde mysketch.pde"></canvas>

    -
    Syntax -
    -        
    -/* @pjs directive="value"; */ 

    -Multiple directives can be on one line or on multiple lines. -Both ways require semi-colons between directives. -
    
    -/* @pjs directive_1="value"; directive_2="value"; ... */
    -
    -/* @pjs directive_1="value";
    -        directive_2="value";
    -        ...
    -*/

    -In Javascript-only Processing.js code you cannot use these directives. You must change the options directly on the Processing.Sketch object. See the examples below for changing these properties on variables bound to a Processing or Processing.Sketch instance: -
    
    -var mySketch = new Processing.Sketch(
    -  function(p) { p.draw = function(){...}; ... }
    -);
    -mySketch.options.crispLines = true;
    -var myProcessing = new Processing("myCanvas", mySketch);
    -
    -var pi = new Processing("myCanvas");
    -pi.externals.sketch.options.crispLines = true;
    -

    - NOTE: all @pjs directives, including the "@pjs" instruction, are case-sensitive. - -
    UsageWeb & Application, Processing.js compatibility
    Relatedfont -
    crisp -
    pauseOnBlur -
    globalKeyEvents -
    preload -
    diff --git a/reference/pmouseX/index.html b/reference/pmouseX/index.html deleted file mode 100644 index 045a3f6..0000000 --- a/reference/pmouseX/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: withcc -title: pmouseX | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    pmouseX

    Examples
    // Move the mouse quickly to see the difference 
    -
    -// between the current and previous position 
    -
    -void draw() 
    -
    -{ 
    -
    -  background(204); 
    -
    -  line(mouseX, 20, pmouseX, 80); 
    -
    -}
    DescriptionThe system variable pmouseX always contains the previous horizontal coordinate of the mouse. This is the horizontal position of the mouse in the frame previous to the current frame.
    Syntax
    pmouseX
    Parameters - - - - - - - - - -
    UsageWeb & Application
    Related - - pmouseY
    - - mouseX
    - - mouseY
    - - mouseButton
    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - - mouseDragged()
    - -
    - diff --git a/reference/pmouseY/index.html b/reference/pmouseY/index.html deleted file mode 100644 index da1eb93..0000000 --- a/reference/pmouseY/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: withcc -title: pmouseY | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    pmouseY

    Examples
    // Move the mouse quickly to see the difference 
    -
    -// between the current and previous position 
    -
    -void draw() 
    -
    -{ 
    -
    -  background(204); 
    -
    -  line(20, mouseY, 80, pmouseY); 
    -
    -}
    DescriptionThe system variable pmouseY always contains the previous vertical coordinate of the mouse. This is the vertical position of the mouse in the frame previous to the current frame.
    Syntax
    pmouseY
    Parameters - - - - - - - - - -
    UsageWeb & Application
    Related - - pmouseX
    - - mouseX
    - - mouseY
    - - mouseButton
    - - mousePressed()
    - - mouseReleased()
    - - mouseMoved()
    - - mouseDragged()
    - -
    - diff --git a/reference/pointLight_.jpg b/reference/pointLight_.jpg deleted file mode 100644 index b6cc71cd5d01fd6a50cda8576f88208644c1de7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2470 zcmb_dX;@QN8b0^lToMCH!uCW#n?PAcga!~SxUfVJRAe2DiXsU}kR>4mg(m}ov|3zf ziz5sjC?YsYE1PzdQYfJXL6J>Jl|`tsDhdiHi%aI*q=3IV^JCuo+;iXaoo_qech9|w z2a4YTZM&O?8$eJ1Lf{1y&j5XE96urfAb9CD!IDr|Q=rO^umYMKVWd#(87$!on6PY0+5dGQ`k-?7y7!OzIxNYSLh<9o zNB)>0NHYNcZNB8=cmx1$u-hGGzKAQ8ZDCCCIQiy*9_HjZI9 z87JW%tSqYhIZ^xq=oI2KUFg8yBE`u&=4)tO{z%ac zG+>%29izi8yj6hY#fSi4_O_9O@|RX#sV5p5(q#Zty{;N+Dot5gEGBQ;{!{+WTQ zj1%5}wl)%|bZ>R$igG!{jSnfF8Aeie)lb2i%U}`cWB1p zXY)bF(oD;Vl~*%uGOe>GqlK?t@fsh9{U_VcuNohYaFb#oz5V^g`!jgs&c!>=WrX>f z3h#ye{r!Y8GgO(Gaf9`dG|zRm>7*-d>jeSzxAQ$xPUyQFf1|?iVey9PQl%SA>BgjqcC_*Kr9+P%>edA_`b&nR)h*Yh87|8o z((iR9X>%G&<#k*wJVjzT(EI$W<5$Yo33f(r!EU%v|JA+!ddkg9$5c6?YL4jY`!y=h z$_YEyT{%M#xb)2Irsdd{P@Y6^-d!GXZN6r+{iD80|F7Nhi|nm$?Q(s8qAg z!?t+ER4hySv~6=UuH$p%$LcR73G+o4PnmTddXko$WD?()e>fLkbz+!ZdpAR`r|K_7 z1%K81hi-JO_8=I#p-KnA5J%P=4a`<*X=FEZ)$1q>vnR1RwVVq6v)bhNleo-aPpiLy<8Os&v|XdoPaX;` zAHH$mq#)L{LT_qgQKxCpw_SI7drB)9Jm-q*lGeLVM}Ms|x9=QQ0E-US(8z4ExblUB zx%UA(K(@t3RVZaZOy>^;1lTwF z7oF7kW_`sM&Q~?hK+~ne3xB*zz=~x6uv+0?xyJV(AdObZfTlp246xRZ0dNR*1Aq!Y z!vKhqiBXA(B|k~bgdyf-)D9#ulNb~{&(alo8|kKA2VTGU{u!b{%3!pPDUyg zRb3|4AE6zTvAum(FwN`g9T`&HSZ<#9d8>QISj!44vq)5%<+?_LmVs8eBz6=Y&9$j2 zxxcSO+Kh{x6OGj6{<%)49`<1~E=OnDNbAwDip`%*I61axyvbiS!z|f9QqZ4kaor8a z9L7KQ(%4>*KG~V%*O(Oi^D`Z)*PH6O(d_C^LJpUmwNd~BvOxdLkC`>>pe}Mz^~K8Q zsvXiwq;2)KV^^*Fy=!|o9qppdU4MI=@IyQ54>~sKREoy!ZDh0FJ1IIwkpq^2Z^IUw zNSo7hw_4lBVzl#jx4o~WJsRys9KM_+nRhfA6$edq(0}n6mHAzJdbNIFEIathtnIDA zPlM`9vo55jBi!^0_tifl8bg5}d7_khx>3*9iJVeBX-5)+MrQ7vjz4oitwm}ZVDx%^ zLW}a`PDKeeInUgkMlp_+*NEiS^D!NoV>4! - - Name -

    pointLight()

    - - - - - - Examples -
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -pointLight(51, 102, 126, 35, 40, 36);
    -translate(80, 50, 0);
    -sphere(30);
    - - - - Description - -

    Adds a point light. Lights need to be included in the draw() to remain persistent in a looping program. - Placing them in the setup() of a looping program will cause them to only have an effect the first time through the loop. - The affect of the v1, v2, and v3 parameters is determined by the current color mode. The x, y, and z - parameters set the position of the light.

    - - - - Syntax -
    pointLight(v1,v2,v3,nx,ny,nz)
    - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - -
    v1int or float: red or hue value
    v2int or float: green or hue value
    v3 int or float: green or hue value
    nxint or float: x coordinate of the light
    nyint or float: y coordinate of the light
    nzint or float: z coordinate of the light
    - - - - Returns - None - - - Usage - Web & Application - - - - - Related - lights()
    - ambientLight()
    - directionalLight()
    - spotLight()
    - - diff --git a/reference/point_.gif b/reference/point_.gif deleted file mode 100644 index a5c127480b90ef3874d7bb1c19d5d661591e9a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2160 zcmV-$2#@ziNk%w1VT1sL0K@l=)q{hB`uh6H%F1+f zbhERwtgNhTY;5W2>E`C<^78UzWMrG0n~I8x+1c65%*^8A;(L30($doG?CkjX`1JJj z_V)Jg@9+Hl{LjzNA^8LV00000EC2ui0E7U9000I5;P+uhz@TtQ6y9(L& zAA-xZ&Kc(C=;`X~?CtLF@bU5)&cl_jBA&L*=N0PICJX6dC_0V zTAm(e`aq7Q%MBcoDqYI7sne%Wqe`7hRqD&0KTmoa`hZ^ti!V877)!RS*|TWVs$I*r zty{Mou0rTQZ(ATtB)U@k`f@CSzkmY^9!$8f;lqd%D^@)As!zLtUg`Y`VT0erm@{kM z%z1EQi*&bX1@Ov&QKT9Gd+;!zb&uDuW6PdRySDAyxO3aq5O?m+yD3dmwye6faoxz1 zD__n$!Drugg&q@LS?pid#$7kx&b@nX1iUvuAB~qf>g(BC?^w^iz5Dm@9-&T{XOWRh%B~v;A{AmnBj>j{L;7Rha>z{1ICxI|t%YPRUQs4lX? zwkvKAF}ixJv+>H?;=A~stFOD`mN{*{|AxqKu>KY-;=$%Ns_?!6ySXm74@=1KrVdwZ zaKv^_Ot8iVUQ8;;8`JA&xA!8PG078(%r46Vx=b<5^vV1&%{6oEt;Y%D{G!Q-3jFQO zKC=oms6z9+a?uv*oN~jJGTrpi_UhX2(o)N3bI)1h>a^7=N8Pp23Dj#W*ie@`w$@*l zi?P^iySFvgaq~&_*=~ z0Ssv2-$;eS9{TWyKn$V~he*UC8u5rk)S>JEgv2H?AOZ()q7~kAMth z9VJiz3Gh*At&xBt7s<#*I`WZ_jHDzdNy$n^@{k_1q$W4X$xeFGkjVSr`367$36%1b zrc5O&SEp;=uGDU#!0FJOu(J+e5X9) zNzZxOv!3|8r#|z^&wct6p9csiJ3SQ8f*SOo2u-L$7s}9vI`p9o9VmbxO3{j1^r9BM zzyU5G(ezyZ;G-Z7sYpjk(vq6=q$o|PN=@3)?5y;qFpa59XUfq~LU5D{xIj*Ks?(nG z^rt=zDo}?i)S?pgs76idQ5Dcq<0#;%P>rfor%KhTTJ@?}&8k+d+SJx;^{ZeFt60U_ z0H)fsgQIMKTGz_fwz~DLaE+^6=StVQ# z#3ywD3X)VZjt2KbAyAI8l&4H(fG|WfCpi%;#IcWw%;U>o4zrlWTo0gVSp>>phBnsB m<~FDrS%^a)!pO6p_sr)$n_0(YSTGJk0029yJcGjk diff --git a/reference/point_/index.html b/reference/point_/index.html deleted file mode 100644 index 98e0de2..0000000 --- a/reference/point_/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -layout: withcc -title: point() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    point()

    Examples
    example pic
    point(30, 20);
    -
    -point(85, 20);
    -
    -point(85, 75);
    -
    -point(30, 75);
    example pic
    size(100, 100, P3D);
    -
    -point(30, 20, -50);
    -
    -point(85, 20, -50);
    -
    -point(85, 75, -50);
    -
    -point(30, 75, -50);
    DescriptionDraws a point, a coordinate in space at the dimension of one pixel. The first parameter is the horizontal value for the point, the second value is the vertical value for the point, and the optional third value is the depth value. Drawing this shape in 3D using the z parameter requires the P3D or OPENGL parameter in combination with size as shown in the above example.
    Syntax
    point(x, y)
    -
    -point(x, y, z)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint or float: x-coordinate of the point
    yint or float: y-coordinate of the point
    zint or float: z-coordinate of the point
    UsageWeb & Application
    RelatedbeginShape()
    - diff --git a/reference/point_2.gif b/reference/point_2.gif deleted file mode 100644 index 6627105c396f4b259298192f3c5cf757b4cf5502..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2149 zcmV-r2%7gtNk%w1VT1sL0K@l=)q{hB`uh6H%F1+f zbhERwtgNhTY;5W2>E`C<^78UzWMrG0n~I8x+1c65%*^8A;(L30($doG?CkjX`1JJj z_V)Jg@9+Hl{LjzNA^8LV00000EC2ui0E7U9000I5;P+uhz@TtQ6y9(L& zAA-xZ&Kc(C=;`X~?CtLF@bU5)&cl_jBA&L*=N0PICJX6dC_0V zTAm(e`aq7Q%MBcoDqYI7sne%Wqe`7hRqD&0KTmoa`hZ^ti!V877)!RS*|TWVs$I*r zty{Mou0rTQZ(ATtB)U@k`f@CSzkmY^9!$8f;lqd%D^@)As!zLtUg`Y`VT0erm@{kM z%z1EQi*&bX1@Ov&QKT9Gd+;!zb&uDuW6PdRySDAyxO3aq5O?m+yD3dmwye6faoxz1 zD__n$!Drugg&q@LS?pid#$7kx&b@nX1iUvuAB~qf>g(BC?^w^iz5Dm@9-&T{XOWRh%B~v;A{AmnBj>j{XM>!Q5&>g2DZ1}p54 z#HxDhvB-YfW2Cz-%WRIx+8XQsv^rJ`E2l&j5W$e%X6fvonJRm&jteX>WV#e;3n#bO zW;?Ew&;l!Myim>?>Z|WIim$vq#Q1Ev*24R5i|%gf@4+r6Oe(`g>RV>C=Rz!Qz<$z8 z@U{zE9HPUU5ia8()B7Gw%PWf zy)oCNvOTujTPs|)-0hJaH{NY$y)(ad@6C7KbOZkI;C<(u@xHZ2EjZ#y6y7-8kh`aM z<%IkFwBaEmemUmreGa<+4tjf+TLcA|P8;f`2jDd06lWJe0<+gn`|Y;pj{EMqGr$1v z!0RqN@V*Cc{O|#|zWC7Q%AWl5&_^%*^wd{x{q@*qU;XRM_uQKH;D;~%_~Z+~eap=o zCqMw}x6l6j?#B=R{PNdN|NZvokN^Jl3*i6xNlRaA{71k78t{M!OrQc6$iN0VaDf0! zn*ay!zzSOMf*7>m0tAq*2)-?F=?b9;M@YgFn(%}uOrZ)_h(Zt6jZ`d*p$un8Lm4t) z0lsq~=K$op9{TWyKn$V~he*UC8u5rk)Zyd;hr}j2@rh7$VgVRXfC4BncE+iq7PrX7 zE_(5cU<{)e$4Ey1E>cm8SFBlf%E-nxy77&0wBqv6=e+^M@s4=RqZlPn012c~ZLN`j zAO}gvLK^arh)kp+7s<#*Ci0IHbfhFFNy$oD(vNctU>yk{0Zw|dlc4;hC__ogQJS)p zs63@AQ^`tG65y4P+~g}~Ny}Q=@|L*Fr7m~L%U-$q$o|PN>@tJOiHkh3b;T_XDZX0()6Y_%_&ZIs?(nG z^rt=z>Q5C=QsXG#s7Ot!QkTlqraJYhP>rfoom$k^O!cZ*&8k+l+5n=u^n;{ofLO;$ z*0P%QtY}TETGz_fwx+eJ18}Qc=StVQ+O+|2y{lgL%2&6-H3AI)tY8C6*ufgMu!udZ zViU{Q#X7dJkacVX{u+VGTK2M-&8%iO%h}F)_OqbfEM-GW+R~c#w5NruhgQql*1Gn! zu#IhOJ@A*WzEHNf&8=>C%i96ec4l<+4|aM>+~OMdwX`MYaF5H}<`y@(w*66M9)y79 zI`_Kb*mZ4k!6P26F=$cMwQhFDi`~@#CS&x1$Yj8Bna;TPz3|=4bM&*Hya - - - - Name - -

    popMatrix()

    - - - - - - - - - - Examples - -
    example pic
    rect(0, 0, 50, 50);   //White rectangle
    -
    -pushMatrix();
    -
    -translate(30, 20);
    -
    -fill(0);  
    -
    -rect(0, 0, 50, 50);   //Black rectangle
    -
    -popMatrix();
    -
    -fill(102);  
    -
    -rect(15, 10, 50, 50); //Gray rectangle
    - - - - - - - - Description - - - - Pops the current transformation matrix off the matrix stack. Understanding pushing and popping requires understanding the concept of a matrix stack. The pushMatrix() function saves the current coordinate system to the stack and popMatrix() restores the prior coordinate system. pushMatrix() and popMatrix() are used in conjuction with the other transformation methods and may be embedded to control the scope of the transformations. - - - - - - - - Syntax - -
    popMatrix()
    - - - - - - - - Parameters - - - - - - - - - - - - - -
    - - - - - - - - Usage - - - - Web & Application - - - - - - - - Related - - pushMatrix()
    - - - - - - - diff --git a/reference/popStyle_/index.html b/reference/popStyle_/index.html deleted file mode 100644 index 040ce54..0000000 --- a/reference/popStyle_/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: withcc -title: popStyle() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    popStyle()

    Examples
    example pic
    smooth();
    -ellipse(0, 50, 33, 33);    // Left
    -pushStyle();               // Start a new style
    -strokeWeight(10);
    -fill(204, 153, 0);
    -ellipse(50, 50, 33, 33);   // Middle
    -popStyle();                // Restore original style
    -ellipse(100, 50, 33, 33);  // Right
    example pic
    smooth();
    -ellipse(0, 50, 33, 33);    // Left
    -pushStyle();               // Start a new style
    -strokeWeight(10);
    -fill(204, 153, 0);
    -ellipse(33, 50, 33, 33);   // Left-Middle
    -pushStyle();               // Start another new style
    -stroke(0, 102, 153);
    -ellipse(66, 50, 33, 33);   // Right-Middle
    -popStyle();                // Restore the previous style
    -popStyle();                // Restore original style
    -ellipse(100, 50, 33, 33);  // Right
    DescriptionThe pushStyle() function saves the current style settings and popStyle() restores the prior settings; these functions are always used together. - They allow you to change the style settings and later return to what you had. When a new style is started with pushStyle(), it builds on the current style information. - The pushStyle() and popStyle() functions can be embedded to provide more control (see the second example above for a demonstration.)
    Syntax
    popStyle()
    Returns None
    UsageWeb & Application
    RelatedpushStyle()
    - - diff --git a/reference/pop_.gif b/reference/pop_.gif deleted file mode 100644 index b65f27cfcb282c06bca671397bd0eee11958e0a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2375 zcmV-N3Apx0Nk%w1VT1sL0K@8oSmMZprN9pq@|{vXib$~ zV|<$su(7hUw6(UkxVgH!ys?~Sswj4@6|xV<$jQpf%+1cv(9zP<53-wO!6p|3e#NlJ z7~$gMC%)pbB4s$^BxC?DK});%C)Q4uVBN99ZR;XS+g6UM&R(S zS|3U#AUtq*HRVUmV#}UQySDAyxMycbyEf-rVRNrK7LB)b=?}(} zD__pMx$_T4qD!AnojPp<88l>m$JsMzt;LlicTT>%dDGR?t6wi0J8#XLDP0Ke7(9Z~ z9`bwmpufNW{{RLkAb`-VXW)T5w6~l8cJTdX0)3%{*Fk^$4QSzo80J?Xf*h(Bn|lm$ z=iq$b5r?0C6=ta7iW+w4Vs#%b*qd8aJy@cI6tbveh8w=KSR;vb*>|FbOJ@0BlTNw_Wr#G2QDl`SB8j4wXtvnpk6#WsB7|0&i6w@w z)oJIQs;wzqn+;A0XPFb8Nhbh=7Ha6Bh$gD&qK0y*C!bP^X(O393VPuOjAp9oriD7X zCZu7?_h+SZUdrjIs5Yu+bf6MBX?=huX=#vO7>SV5d?kZ=m zg95AUp~A8mq>Oz^N+qnMB0KBc%S~flwAh() z4Wro&fBo{wY%l7zb#Uvt@!UJto#@@ud3~?bYy15-*(>L*an5{)ZFr-I|E&1BgR33j z#E(OcXU))7jrP?M7oK_lr;#UZ^Vvazo^RHp6AJjAljH32&~&#B!0W8WZgsUpUv4|; zo0olh+?9v!`|r1xKK1Z=GfsQot>dmR^NY_;`0>9>&x7E5KkxYH+RxiL>T-MUarDY} zt^4P^*N%ShiBnH`_tz7MeDd&1F2C$)8*e}I;nM;4oL9ds-7kOy7@+k~)UN}k?``|r z9mG6vAk4k*PMqr&@#v?Y3OX=|F#mb%oWA0??s@%7T0+VrM4&1p!X$v@C_ zK&Lrfor%KhTMir^~>3~(Y%GIuV^{YqasRVf? z011@!tY%FsTGy)9wzBoDZjCEk=PK8_zEuEt#cF==%GbX7^{;>ptY8OA*uoliuzK~t zVHeBT#yXa<6A(aT6FY&*TK2M-&8%iO%h}F)_OqbnEM-GW+R~c#w5K&dVhu0>*1EQ} zuzjs;V@uoF+P1d1y{&F@%UjzT;J2&&t#F4++~OMdxX4Yea+k|ofr%T=G zTEGDR7D%iGw#(h_diT5F4X=2|OWyLDSG>gAh8KZu!0xN;08PR!4QtHgeOd42qU<{7|yVUH>}|X95}v! zJXQlnOyUxo_{1nqv5HsB;ugDD#fg2fjAu;a8r!%5F$Tbhb=&|R`*_Dd?s1TREaV~+ z`N%^~vXPaHsosy zEr{04+2X>O#yBP@P6@WKhfVBa3q>ux;ZDOy((998r6$mhwzQ{BZDiv_**lRIvm5dd zj(Gdq;10LACE}5`=%hy4sK+-xLzjZM``z%4x4g@3Zk>!s1l_PlL)^jde*631|AvRX t(LDlU7=s!JPq@Mt&TwmFI~zG@MK{#li;7$P;uz0(NUnhmR_7oD06Wzx@Y4VQ diff --git a/reference/pow_/index.html b/reference/pow_/index.html deleted file mode 100644 index 1622247..0000000 --- a/reference/pow_/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -layout: withcc -title: pow() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    pow()

    Examples
    float a = pow( 1, 3);  // Sets "a" to 1*1*1 = 1
    -
    -float b = pow( 3, 5);  // Sets "b" to 3*3*3*3*3 = 243
    -
    -float c = pow( 3,-5);  // Sets "c" to 1 / 3*3*3*3*3 = 1 / 243 = .0041
    -
    -float d = pow(-3, 5);  // Sets "d" to -3*-3*-3*-3*-3 = -243
    DescriptionFacilitates exponential expressions. The pow() function is an efficient way of multiplying numbers by themselves (or their reciprocal) in large quantities. For example, pow(3, 5) is equivalent to the expression 3*3*3*3*3 and pow(3, -5) is equivalent to 1 / 3*3*3*3*3.
    Syntax
    pow(num, exponent)
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    numint or float: base of the exponential expression
    exponentint or float: power of which to raise the base
    UsageWeb & Application
    Relatedsqrt()
    - diff --git a/reference/preload/index.html b/reference/preload/index.html deleted file mode 100644 index cd30749..0000000 --- a/reference/preload/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: withcc -title: /* @pjs preload */ directive | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    /* @pjs preload */ directive

    Examples
    /* @pjs preload="myimage.jpg"; */
    -        
    -void setup()
    -{
    -  size(200,200);
    -  noLoop();
    -}
    -
    -void draw()
    -{
    -  background(255);
    -  PImage im = loadImage("myimage.jpg");
    -  image(im, 50,50, 100,100);
    -}
    -
    Description

    This directive regulates image preloading, which is required when using loadImage() or requestImage() in a sketch. - Using this directive will preload all images indicated between quotes, and comma separated if multiple images are used, so that they will be ready - for use when the sketch begins running. As resources are loaded via the AJAX approach, not using this directive will result in the sketch loading - an image, and then immediately trying to use this image in some way, even though the browser has not finished downloading and caching it. Images - can be preloaded from URL, such as "image1.jpg". While - all browser-supported image formats are supported by processing.js, it is best to stick to "gif", "jpg" and "png" formats if you intend your - sketch to be cross-platform compatible with native Processing.

    -

    NOTE: remote images can be drawn, but their pixels cannot be manipulated due to browser security restrictions.

    -

    NOTE: this directive is for images only. For preloading fonts, use the font directive listed below.

    -
    Syntax -
    -         /* @pjs preload="imageURL"; */  
    - /* @pjs preload="data:image/imagetype,base64, {base 64 encoded data block}"; */ -
    Syntax for multiple images -
    -         /* @pjs preload="image1,image2,..."; */ 
    -    
    Parameters - - - - - - -
    preloadcomma separated list of URLs or data-URIs (may be mixed), all inside a single set of double quotes
    UsageWeb & Application, Processing.js compatibility
    Related - @pjs directives -
    loadImage() -
    requestImage() -
    \ No newline at end of file diff --git a/reference/printCamera_/index.html b/reference/printCamera_/index.html deleted file mode 100644 index ba1b836..0000000 --- a/reference/printCamera_/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: withcc -title: printCamera() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    printCamera()

    Examples
    size(100, 100, P3D);
    -printCamera();
    -
    -// The program above prints this data:
    -
    -// 01.0000  00.0000  00.0000 -50.0000
    -// 00.0000  01.0000  00.0000 -50.0000
    -// 00.0000  00.0000  01.0000 -86.6025
    -// 00.0000  00.0000  00.0000  01.0000
    Description

    Prints the current camera matrix to the text window.

    Syntax
    printCamera()
    ReturnsNone
    UsageWeb & Application
    Relatedcamera()
    diff --git a/reference/printMatrix_/index.html b/reference/printMatrix_/index.html deleted file mode 100644 index 77be96f..0000000 --- a/reference/printMatrix_/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: withcc -title: printMatrix() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    printMatrix()

    Examples
    size(100, 100, P3D);
    -printMatrix();
    -// Prints:
    -// 01.0000  00.0000  00.0000 -50.0000
    -// 00.0000  01.0000  00.0000 -50.0000
    -// 00.0000  00.0000  01.0000 -86.6025
    -// 00.0000  00.0000  00.0000  01.0000
    -
    -resetMatrix();
    -printMatrix();
    -// Prints:
    -// 1.0000  0.0000  0.0000  0.0000
    -// 0.0000  1.0000  0.0000  0.0000
    -// 0.0000  0.0000  1.0000  0.0000
    -// 0.0000  0.0000  0.0000  1.0000
    Description

    Prints the current matrix to the text window.

    Syntax
    printMatrix()
    ReturnsNone
    UsageWeb & Application
    RelatedpushMatrix()
    - popMatrix()
    - resetMatrix()
    - applyMatrix()
    diff --git a/reference/printProjection_/index.html b/reference/printProjection_/index.html deleted file mode 100644 index b2e9ab6..0000000 --- a/reference/printProjection_/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: withcc -title: printProjection() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    printProjection()

    Examples
    size(100, 100, P3D);
    -printProjection();
    -
    -// The program above prints this data:
    -// 01.7321  00.0000  00.0000  00.0000
    -// 00.0000  01.7321  00.0000  00.0000
    -// 00.0000  00.0000 -01.0202 -17.4955
    -// 00.0000  00.0000 -01.0000  00.0000
    Description

    Prints the current projection matrix to the text window.

    Syntax
    printProjection()
    ReturnsNone
    UsageWeb & Application
    Relatedcamera()
    diff --git a/reference/print_/index.html b/reference/print_/index.html deleted file mode 100644 index efd1575..0000000 --- a/reference/print_/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: withcc -title: print() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    print()

    Examples
    print("begin- ");
    -
    -float f = 0.3;
    -
    -int i = 1024;
    -
    -print("f is " + f + " and i is " + 1024);
    -
    -String s = " -end";
    -
    -println(s);
    -
    -
    -
    -// The above code prints:
    -
    -// begin- f is 0.3 and i is 1024 -end
    DescriptionWrites to the console area of the Processing environment. This is often helpful for looking at the data a program is producing. The companion function println() works like print(), but creates a new line of text for each call to the function. Individual elements can be separated with quotes ("") and joined with the addition operator (+). - -

    - -Beginning with release 0125, to print the contents of an array, use println().
    Syntax
    print(data)
    Parameters - - - - - - - - - - - -
    databoolean, byte, char, color, int, float, String, boolean[], byte[], char[], color[], int[], float[], String[]
    UsageIDE
    Relatedprintln()
    - - - diff --git a/reference/println_/index.html b/reference/println_/index.html deleted file mode 100644 index 8b4eb68..0000000 --- a/reference/println_/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: withcc -title: println() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    println()

    Examples
    println("begin");
    -
    -float f = 0.3;
    -
    -println("f is equal to " + f + " and i is equal to " + 1024);
    -
    -String s = "end";
    -
    -println(s);
    -
    -
    -
    -// The above code prints the following lines:
    -
    -// begin
    -
    -// f is equal to 0.3 and i is equal to 1024
    -
    -// end

    float[] f = { 0.3, 0.4, 0.5 };
    -
    -println(f);
    -
    -
    -
    -// The above code prints:
    -
    -// 0.3
    -
    -// 0.4
    -
    -// 0.5
    DescriptionWrites to the text area of the Processing environment's console. This is often helpful for looking at the data a program is producing. Each call to this function creates a new line of output. Individual elements can be separated with quotes ("") and joined with the string concatenation operator (+). Also writes the content of an array to the text area of the Processing environment. This is often helpful for looking at the data a program is producing. A new line is put between each element of the array. This function can only print 1D arrays, but can test to see if the content are null or not null for 2+ dimensional arrays.
    Syntax
    println(data)
    Parameters - - - - - - - - - - - -
    databoolean, byte, char, color, int, float, String
    UsageIDE
    Relatedprint()
    - - - diff --git a/reference/private/index.html b/reference/private/index.html deleted file mode 100644 index db15223..0000000 --- a/reference/private/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: withcc -title: private | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    private

    Description

    Keyword used to disallow other classes access the fields and methods within a class. - The private keyword is used before a field or method that you want to be available only within the class. - In Processing, all fields and methods are public unless otherwise specified by the private keyword. -

    This keyword is an essential part of Java programming and is not usually used with Processing. Consult a Java language reference or tutorial for more information.

    Returns None
    UsageWeb & Application
    Relatedpublic
    - - diff --git a/reference/public/index.html b/reference/public/index.html deleted file mode 100644 index a596526..0000000 --- a/reference/public/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: withcc -title: public | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    public

    DescriptionKeyword used to provide other classes access the fields and methods within a class. The public keyword is used before a field or method that you want to make available. In Processing, all fields and methods are public unless otherwise specified by the private keyword.

    - -This keyword is an essential part of Java programming and is not usually used with Processing. Consult a Java language reference or tutorial for more information.
    UsageWeb & Application
    Relatedprivate
    - diff --git a/reference/pushMatrix_.gif b/reference/pushMatrix_.gif deleted file mode 100644 index b65f27cfcb282c06bca671397bd0eee11958e0a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2375 zcmV-N3Apx0Nk%w1VT1sL0K@8oSmMZprN9pq@|{vXib$~ zV|<$su(7hUw6(UkxVgH!ys?~Sswj4@6|xV<$jQpf%+1cv(9zP<53-wO!6p|3e#NlJ z7~$gMC%)pbB4s$^BxC?DK});%C)Q4uVBN99ZR;XS+g6UM&R(S zS|3U#AUtq*HRVUmV#}UQySDAyxMycbyEf-rVRNrK7LB)b=?}(} zD__pMx$_T4qD!AnojPp<88l>m$JsMzt;LlicTT>%dDGR?t6wi0J8#XLDP0Ke7(9Z~ z9`bwmpufNW{{RLkAb`-VXW)T5w6~l8cJTdX0)3%{*Fk^$4QSzo80J?Xf*h(Bn|lm$ z=iq$b5r?0C6=ta7iW+w4Vs#%b*qd8aJy@cI6tbveh8w=KSR;vb*>|FbOJ@0BlTNw_Wr#G2QDl`SB8j4wXtvnpk6#WsB7|0&i6w@w z)oJIQs;wzqn+;A0XPFb8Nhbh=7Ha6Bh$gD&qK0y*C!bP^X(O393VPuOjAp9oriD7X zCZu7?_h+SZUdrjIs5Yu+bf6MBX?=huX=#vO7>SV5d?kZ=m zg95AUp~A8mq>Oz^N+qnMB0KBc%S~flwAh() z4Wro&fBo{wY%l7zb#Uvt@!UJto#@@ud3~?bYy15-*(>L*an5{)ZFr-I|E&1BgR33j z#E(OcXU))7jrP?M7oK_lr;#UZ^Vvazo^RHp6AJjAljH32&~&#B!0W8WZgsUpUv4|; zo0olh+?9v!`|r1xKK1Z=GfsQot>dmR^NY_;`0>9>&x7E5KkxYH+RxiL>T-MUarDY} zt^4P^*N%ShiBnH`_tz7MeDd&1F2C$)8*e}I;nM;4oL9ds-7kOy7@+k~)UN}k?``|r z9mG6vAk4k*PMqr&@#v?Y3OX=|F#mb%oWA0??s@%7T0+VrM4&1p!X$v@C_ zK&Lrfor%KhTMir^~>3~(Y%GIuV^{YqasRVf? z011@!tY%FsTGy)9wzBoDZjCEk=PK8_zEuEt#cF==%GbX7^{;>ptY8OA*uoliuzK~t zVHeBT#yXa<6A(aT6FY&*TK2M-&8%iO%h}F)_OqbnEM-GW+R~c#w5K&dVhu0>*1EQ} zuzjs;V@uoF+P1d1y{&F@%UjzT;J2&&t#F4++~OMdxX4Yea+k|ofr%T=G zTEGDR7D%iGw#(h_diT5F4X=2|OWyLDSG>gAh8KZu!0xN;08PR!4QtHgeOd42qU<{7|yVUH>}|X95}v! zJXQlnOyUxo_{1nqv5HsB;ugDD#fg2fjAu;a8r!%5F$Tbhb=&|R`*_Dd?s1TREaV~+ z`N%^~vXPaHsosy zEr{04+2X>O#yBP@P6@WKhfVBa3q>ux;ZDOy((998r6$mhwzQ{BZDiv_**lRIvm5dd zj(Gdq;10LACE}5`=%hy4sK+-xLzjZM``z%4x4g@3Zk>!s1l_PlL)^jde*631|AvRX t(LDlU7=s!JPq@Mt&TwmFI~zG@MK{#li;7$P;uz0(NUnhmR_7oD06Wzx@Y4VQ diff --git a/reference/pushMatrix_/index.html b/reference/pushMatrix_/index.html deleted file mode 100644 index 106ec7a..0000000 --- a/reference/pushMatrix_/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -layout: withcc -title: pushMatrix() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    pushMatrix()

    Examples
    example pic
    rect(0, 0, 50, 50);   //White rectangle 
    -
    -pushMatrix(); 
    -
    -translate(30, 20); 
    -
    -fill(0);  
    -
    -rect(0, 0, 50, 50);   //Black rectangle 
    -
    -popMatrix(); 
    -
    -fill(102);  
    -
    -rect(15, 10, 50, 50); //Gray rectangle
    DescriptionPushes the current transformation matrix onto the matrix stack. Understanding pushMatrix() and popMatrix() requires understanding the concept of a matrix stack. The pushMatrix() function saves the current coordinate system to the stack and popMatrix() restores the prior coordinate system. pushMatrix() and popMatrix() are used in conjuction with the other transformation methods and may be embedded to control the scope of the transformations.
    Syntax
    pushMatrix()
    Parameters - - - - - - - - - -
    UsageWeb & Application
    Related - - popMatrix()
    - - translate()
    - - rotate()
    - - rotateX()
    - - rotateY()
    - - rotateZ()
    - -
    - - - diff --git a/reference/pushStyle-2.gif b/reference/pushStyle-2.gif deleted file mode 100644 index d034aab43d43beebfeb7c349630cfd09a53c3abc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1925 zcmeH`>sQiw0>;1mYGSB}CO9^k zpeBfHm>HHcO~oWgC@P)RPFrURca!Yq>6Gp|HZ^-HytaAW^%hr`j?*_kT8;_2yWwN0AM z=H=yO^VmdVW22|2n}2@DXfzrO1`34|Sg!H%@^W`~N2Ae|+8-w_z&t!WN=iz6eSH@e z7UYc~6YU@=DQR?cR9*o1e7-;+NIE;>^_jyh{0g61*-7y@RYO+=wL@oOw8WBdjXpVB9b5o0wM7r z_grRXCOje$;5|Xm);;MNc-rS!EEXU!+1c4Dl`20!|FaM#K%i!4XF>GtmX;QjJHEQQ zdQ%uHD=Q1|6ku0bO-&8vuqw2&m&@hiaJVB!i{MBU*qX&+v9N-3r%#^-sg*Doj7+8g zS{O(=o|~IXCX>PDod*sa0D0{oOIlT3?dImjNlXT@`x6qAT`m^@z}^9Xpu=vr|Cj&B z|Iq;L1N?t$8-MTLKLOA#;ESPh3_a#E=rzIFHiO#IK=kK!a)vb4CU4eZhi#~LT<#Yy zqb6L_PP7Gm)1N(Yt#7KGd0?_L;kxdgD!O#RF>(Dbf4#^)gI&)ZzBJRzX$#&rxtt^PWA46QMte-p(_xo+!SQlym%~KJWsfRO}obhp1QtyXGEsljN2h5}FdbuGX8d#TysrAelG3 zX*ASD9^$i`*T)mEocqR~o&-S9z@=R|@33!>4R54jJPUdW$R3GF!R5(B*woFJK9rIN zFME);z2?Q(%wxo-bwJ|>1Mr)=o>M2HgPbS?%nye3)&>22b+gSc8RL8FWrH;QJVSwF z0kyNGX`1N<=)5rp0?!lG;8DD36GGWB120>ZvB*Z^OeQwcBZCMlW9&u(|L{edKXJ9) zOhpjFH7}F}Ti9lPT5`G=I`UA@Mm*?xDu(ZnZV+HAjcIJCjMOiH5GJpB%8hkQvAS*- z&s12kEY@7ys-p=B3bHa@bCf?L#CMT0En0Qq9731NxUf#$M{+4mS*IK;!hy0~L?!WX zhOJ+A(6}8oSbt~2TIfa03hGvbsclzdT9z`Elh^UeU4uw6ASC(OlNtEdBSzf z&bXXCUllX!j|qVYsqEVm2))Z&n5$2B1O7cn9G4u8UuBqSU^EJmd0uF z?2>yRq$jIfE~% z1t|FL`OWX2H6LVOkG(&T$E-_9&dnvYDaN*r#kJ{o?s#~g^umtVg1fn6|D}Je{kLg; zLkeHKX7H)xa$f%DYhF*LpCqC-+*NNpn6TrUhqkfETT5p}&Arr@obfG>ms-m0y*}@4 Zo=Q5+h?{0Hp`S9Vx$jC@lRn=FoUe(vv zo0yo$%gdjf&d{ID5ET^_6B8319sTs_Qzj;+qN1XPh6ZC}|Ifg{aOTVzAUPC);!hT^vvoiuC{7sI|2H@_HMg|3wRd!Ob@%l4^-q{M zY4Vh*)27duIcxTux%1{PSh#5MlBLU*uUNTi^_sQo)^FIjY4et?+qUo6xoh{Hz5Dhb zIC$vrk)y|spE!By^qEO=EUFS}R;E^J5~?h6XWLns6&xQvdi+R%ne~p7BD>O)ckh(g z70<}Cz5o7>O@65*la3&R9V17>`USfg7;PCl4mcg)V>F7giEv0bw2X<5Crjoz!`x+@ zEMhhpip~rZCOatPa0D9ZxGd%rU8EK+)4-t2&noO8KVS0xHdhv=9QM75jLJ-`>iz6`3m1HMoMrx;-3%WZ{C^+4>crBW(7?~k;&q(CPC`eBk&jnPjhVaq!Ph=kQKoc8 zJ2su7!#uLbR2vw&=QQwhs{V6hvQyXjl+<1D^TJ^z(+8iOde`i2@aOG*vVr-3f6`uw z$2~6V${yQVy~q%n99+AjgY(A(iPTi}d&x~*I!T&Wn+5%Tq^64Bo4im-dKPC${eRh@ zriSdGvZRXfE3&7RpRep%a{NWnS=~=}Y%gB* zkhQyJ*fh5+?b)_yNAVwFiwampx1T61>T;7(UbgVo%Zhae)n+Sgxp_>PtJjffrsE{f z_L*sON(DP1{ zM0ZLRx^{-|(^}@h&8ED|`Et=ieeIV^KIU(~Tn=#8{dy%NJooF>i1f8zuf>$V{dzs2UAIiJ Ik%7S)06RIyS^xk5 diff --git a/reference/pushStyle_/index.html b/reference/pushStyle_/index.html deleted file mode 100644 index 81565e1..0000000 --- a/reference/pushStyle_/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: withcc -title: pushStyle() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    pushStyle()

    Examples
    example pic
    smooth();
    -ellipse(0, 50, 33, 33);    // Left
    -pushStyle();               // Start a new style
    -strokeWeight(10);
    -fill(204, 153, 0);
    -ellipse(50, 50, 33, 33);   // Middle
    -popStyle();                // Restore original style
    -ellipse(100, 50, 33, 33);  // Right
    example pic
    smooth();
    -ellipse(0, 50, 33, 33);    // Left
    -pushStyle();               // Start a new style
    -strokeWeight(10);
    -fill(204, 153, 0);
    -ellipse(33, 50, 33, 33);   // Left-Middle
    -pushStyle();               // Start another new style
    -stroke(0, 102, 153);
    -ellipse(66, 50, 33, 33);   // Right-Middle
    -popStyle();                // Restore the previous style
    -popStyle();                // Restore original style
    -ellipse(100, 50, 33, 33);  // Right
    Description

    The pushStyle() function saves the current style settings and popStyle() restores the prior settings; these functions are always used together. - They allow you to change the style settings and later return to what you had. When a new style is started with pushStyle(), it builds on the current style information. - The pushStyle() and popStyle() functions can be embedded to provide more control (see the second example above for a demonstration.)

    -

    The style information controlled by the following functions are included in the style: fill(), stroke(), tint(), strokeWeight(), strokeCap(), strokeJoin(), imageMode(), rectMode(), ellipseMode(), shapeMode(), colorMode(), textAlign(), textFont(), textMode(), textSize(), textLeading(), emissive(), specular(), shininess(), ambient()

    Syntax
    pushStyle()
    Returns None
    UsageWeb & Application
    RelatedpopStyle()
    - - diff --git a/reference/quad_.gif b/reference/quad_.gif deleted file mode 100644 index a84136a19480da6e41817a12a81a70c56df367a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2432 zcmV-`34iuSNk%w1VT1sL0K@tZ0NL5uo12@8ii+&)?0kHD`1ttJ($f9?{q*$o z_V)Jg@9+Qr|Nj2|A^8LV00000EC2ui0E7U9000I5AdrnDIh<&!u59bRa4gGZEdqEh znse{}z@X2j!;Mmt!DPv7I-k&}bV{vSuT53ymP0ZF6L4TmE}PHjw0g~MyVqf7YTH#V z(T;IGu=wzdnPjQM-4V#)9r^nE{Qds_00RmfNRVJSWbiPJL7~dnJq!94 zNSsKqqQ#3CGiuz(v13Pl;1DWY7;J0PH7Di^nUG}3 zlLu0++`yrz(W6L{DqYI7sne%WowC#!^1w)K8SDk^Adw{p3}C~G9ZR;X*|TWVs$IL5 z!_);G+*#X$)gDByEWsw&%eSxJzkmY^9!$8fVZ&gj?wq?Pm0hk2Ht0P}xw7TUnExi0 z7?&~05kVnF{>oQ_Y10Z)t6t5zwd>cgW6PdR8#V^FaCy=#xwR{X(xyKMFG9Sy@#Dyo zD__o>bpi|$w!v_!WJ&2!AzrJ_! zx1*om9c+De_wU7L-+%-bm|A)IO~;@Ab)sRn7l84}SKx#cj;8>Exy|*9dJVD%p@0>J zC}MF3=9eLQ+W7aNa1oB^qKhS(r{ISDb@(5PAik*MgfS+lVR|*<unm^KcrJZEzsVAQ(a`Sdat?yBtnvc>`H?6bl~E3KT=>N;ei*yhlz1l*=&D%WiB#Umf9ugM&b_^-_$x9oDx zjUIZfjz0rUvCu<sV|&kDDPK<4V`L+O@8Dy{lgH%GbU66|VvaY*?KX*uon2u!v2p zVi(KU#ya+~j2-NqAWPZGTK2M)t$+YDE7=HD;Ip6&t!PI}+R~c#w5Uz3YE9eO_^kG| zu#K&3XN!Q=!Uq8rz^!g`%iG=hwzt6jt#E@&+~FFxxX2YQ0+wrA4=ne&(2cHir%T=H zTKBsD*v+nWZTkTPT)?~F{jPY!OWyICx4h^*uX@wV-u1e-z0JLVeCJEw`r7xt_|30= z_sie@=9jzv4X}U*OyB}vpt%gVK!O*n;081J!48fvgeNTF3RC#P7S8a68Gv90c=*F0 z4zY+wOyUxo_{1nqF^M~@;ugF3#W033Sl}nV*=ZogIL@(-TigH!G@!W+2(pleOynXP z`N&94vXYm~L9q7JDIhCApo}xh}91ZN{&}(x2 z&!Q*IXwy7e&%z#PJ8;(pbmAT9i7m~WT!m<61A#V&FWV7+0u`WPV(sFC{z>r z*0|2KuJgwiaHWYMkMYf^6-ex28(T1&$&gicGlIw9MKZ%awzQ{>nZ)R4KY6IjJs{&1 zws`y7;10LA$Kn=QcjjpsaKJ+#6B(jZ@ZIo^x4fky>)a@4LFq=xU54Vpe*6310H=vg z;xe6H;M*agiO2~T&hUmi{3AP&i@~d85@TouA1}GJ&a)AFj&FHdQkD_Ko7dmZQ+ZY&jSY`0029R=n3Qi diff --git a/reference/quad_/index.html b/reference/quad_/index.html deleted file mode 100644 index 52e99e0..0000000 --- a/reference/quad_/index.html +++ /dev/null @@ -1,169 +0,0 @@ ---- -layout: withcc -title: quad() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    quad()

    Examples
    example pic
    quad(38, 31, 86, 20, 69, 63, 30, 76);
    DescriptionA quad is a quadrilateral, a four sided polygon. It is similar to a rectangle, but the angles between its edges are not constrained to ninety degrees. The first pair of parameters (x1,y1) sets the first vertex and the subsequent pairs should proceed clockwise or counter-clockwise around the defined shape.
    Syntax
    quad(x1, y1, x2, y2, x3, y3, x4, y4)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    x1int or float: x-coordinate of the first corner
    y1int or float: y-coordinate of the first corner
    x2int or float: x-coordinate of the second corner
    y2int or float: y-coordinate of the second corner
    x3int or float: x-coordinate of the third corner
    y3int or float: y-coordinate of the third corner
    x4int or float: x-coordinate of the fourth corner
    y4int or float: y-coordinate of the fourth corner
    ReturnsNone
    UsageWeb & Application
    \ No newline at end of file diff --git a/reference/radians_/index.html b/reference/radians_/index.html deleted file mode 100644 index 30b6e65..0000000 --- a/reference/radians_/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: withcc -title: radians() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    radians()

    Examples
    float deg = 45.0;
    -
    -float rad = radians(deg);
    -
    -println(deg + " degrees is " + rad + " radians");
    DescriptionConverts a degree measurement to its corresponding value in radians. Radians and degrees are two ways of measuring the same thing. There are 360 degrees in a circle and 2*PI radians in a circle. For example, 90° = PI/2 = 1.5707964. All trigonometric methods in Processing require their parameters to be specified in radians.
    Syntax
    radians(angle)
    Parameters - - - - - - - - - - - -
    angleint or float
    UsageWeb & Application
    Relateddegrees()
    - diff --git a/reference/randomSeed_/index.html b/reference/randomSeed_/index.html deleted file mode 100644 index 130e0d1..0000000 --- a/reference/randomSeed_/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: withcc -title: noiseSeed() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    noiseSeed()

    Examples
    randomSeed(0);
    -for(int i=0; i < 100; i++) {
    -  float r = random(0, 255);
    -  stroke(r);
    -  line(i, 0, i, 100);
    -}
    Description

    Sets the seed value for random(). By default, random() produces different results each time the program is run. - Set the value parameter to a constant to return the same pseudo-random numbers each time the software is run.

    Syntax
    noiseSeed(value);
    Parameters - - - - -
    valueint
    Returnsfloat
    UsageWeb & Application
    Relatednoise()
    - noiseDetail()
    - noiseSeed()
    - random()
    - diff --git a/reference/random_/index.html b/reference/random_/index.html deleted file mode 100644 index ae1e9fc..0000000 --- a/reference/random_/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: withcc -title: random() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    random()

    Examples
    for(int i=0; i<100; i++) {
    -
    -  float r = random(50);
    -
    -  stroke(r*5);
    -
    -  line(50, i, 50+r, i);
    -
    -}

    for(int i=0; i<100; i++) {
    -
    -  float r = random(-50, 50);
    -
    -  stroke(abs(r*5));
    -
    -  line(50, i, 50+r, i);
    -
    -}
    DescriptionGenerates random numbers. Each time the random() function is called, it returns an unexpected value within the specified range. If one parameter is passed to the function it will return a float between zero and the value of the high parameter. The function call random(5) returns values between 0 and 5. If two parameters are passed, it will return a float with a value between the the parameters. The function call random(-5, 10.2) returns values between -5 and 10.2. To convert a floating-point random number to an integer, use the int() function.
    Syntax
    random(high);
    -
    -random(low, high);
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    highint or float
    lowint or float
    UsageWeb & Application
    Relatednoise()
    - - - diff --git a/reference/rect()/index.html b/reference/rect()/index.html deleted file mode 100644 index 8d7fd43..0000000 --- a/reference/rect()/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -layout: withcc -title: rect() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    rect()

    Examples
    example pic
    rect(30, 20, 55, 55);
    DescriptionDraws a rectangle to the screen. A rectangle is a four-sided shape with every angle at ninety degrees. The first two parameters set the location, the third sets the width, and the fourth sets the height. The origin is changed with the rectMode() function.
    Syntax
    rect(x, y, width, height)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint or float: x-coordinate of the rectangle
    yint or float: y-coordinate of the rectangle
    widthint or float: width of the rectangle
    heightint or float: height of the rectangle
    UsageWeb & Application
    Related - - rectMode()
    - - quad()
    - - - diff --git a/reference/rectMode_.gif b/reference/rectMode_.gif deleted file mode 100644 index d4216fc6d8720b5c5c8fc768ed06f16313df54ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2425 zcmV-<35NDZNk%w1VT1sL0K@FJ`PqUPr2+1c6R;^KUKe6zE&`1ts&tgO<~((LT)i;Ii&^z{Ax{r2|u z0002*@9+Qr|Nj2|A^8LV00000EC2ui0E7U9000I5pkR$8Ih<&!u59bRa4gGZEed!p znse{}z@X2j!;Mmq0c6Q+I-k&}bV{vSuT53ymP0ZF5O82jE}PHjw0g~MyVqf7YTH#V z(UEaJu=((skEz4mugKvY`1$(#{Qds_00RmfI4~SCcwHiBUTaQGzuW?0FxrOTHvW6GRKv!+d&67hk2g(+dG zdMH(9*g&+X(W6L{DqYI7sne%TSLWO)GTTpk9U`vWK%uMGuVBN99ZR;X*|TWTZjhRw zgF9<`B#mhJFzd>$2J-6N%eSxJzkmY^9!!{USE)MT?z#FC>oFt6t5zwd>cgW4ETTw(ZWiBu{2dkRfzl(jS5s8BV;o@#Dyo zD_@@40EG;g-ECH=n>W|r8iH$I&b_<$@7_;4ubp|b-0GmQfAGNG1Nisw<8v2J8+v)% z!O&kfkbQl7`2YqeplRdTCmntk=;vGif9<&^;DZo$M__%n!DUr`pY6xse-U=*A#oFu zci@EyX1HK*4SuMiiXj?kAsCY=_#28Gu4v}8jHb9`q@12< zD20gbxu}nt#@XqqVNSYYrET*0=AXkoiYltAvZyAgSc-}%sWk#R>#wzb$f}X9cIoJ^ zvj*$ou!*{9?54<`s%(eM>Y85vpQZX5ZKu;lSS^pEV%ux1+j9Gn}yYQatqNR$iYcI6;4jM0xx1!6hvyB2AaGe7WSn$5BhWoFn3p1=Qo5V`| zEX5T|dU2@g*1NI09n0D9kPlVSOD@iy;+ZnY z^m1wQ&p_w=ajqd7?Q;>bCY|ci=@y;oxKJlc< z?e^PhHypOcM`ukd+<51$ciM6f&9v3Lwu>~kdlzna++h1%HO)?AO?I+}N4|I8hyKm@ z)q>kCt>m1;O*yWM_w0E84rRmJ`RQzbZg9l@jyyQ0XQM7V0jfisaqD$Ie)sIC*RHa) zjc2a==DeToJJFX14y)#b7vK5umWwVt>5x0mIrO26Jvt7h6B@hqkz;?b_S17;J@|)< z&w9;cQ@=an@rcPwqN4}`5GU>siqcb}{k*od zBEAiaEQNRHdV952=Pyv|Cq$W4X$xe3Ckpkp^CplS38cuMO zs7&Q1L76{Ms*(Yvq$46dzyJl*@|L#DB`$ZV%UjAGG8IUrN)O+VrM4b!kdv$AO&I zl%sw0sZfWiQ#_`Qs4$(OENkch0JzktO?|3Vqe@k%T6L-b*lF*oiq)ugMXAV4qEi7d z*0MI$tYkf_TGPtbrfSuAXdUZW$qLk2lJ%~5&8uGb%Gb9(kFR>IYw$h**uok%uYSGW zVd)xEQz{Pt7=Wx~BTL!ITDG#7wQOP~$AQaw76XFC+y^i~+R~c#w5UyOYBw7`)uJ}E z%5$x3XM0*M+V-|hl5GJnuv^$Bu>imgu5gD-+~OMdxX4Yea+fPy-UipVuVSurr%T=H zTDJiI&`r_@3LpXQdbhja{jPY!OWyICx4h^*uX@wV-t}hJPZEf)eCJEw`r7xt_|30= z_sd`WzPCLe=&yhWOyB|=7ytcbNc4HmaEM_TvwX`OIw#Gn&_o zwy(~y#9jJ82IoxYI@|fqc+NAP^+Mtoze;L=rc-b;#|`qi-3GoM9-C56ys zH@)d}3wO=yUIXSbI@-}(bYquX`})|(-t}SZbDuoO#R3hf4sSq{mTFu3+StzaSJr~+ z%q$MtbZLxMhJwR#oBQ18E;n0jBOQKOz$7Ty&9sF`?|R$&-a^cYTiV@|M7_Hno`DDx z2Tt&U8@%8jc?(ZSR1$_n`yNz`xWp$;@rfHmGa^CIF!37NB$0;Xnf-w rcX+g`!Sa^7{N*pdM!&V83Ra|C<-Ewb&Uempp8Fyj&mM*VLI40e+YbQE diff --git a/reference/rectMode_/index.html b/reference/rectMode_/index.html deleted file mode 100644 index e73dccc..0000000 --- a/reference/rectMode_/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: withcc -title: rectMode() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    rectMode()

    Examples
    example pic
    rectMode(CENTER);
    -
    -rect(35, 35, 50, 50);
    -
    -rectMode(CORNER);
    -
    -fill(102);
    -
    -rect(35, 35, 50, 50);
    DescriptionModifies the location from which rectangles draw. The default mode is rectMode(CORNER), which specifies the location to be the upper left corner of the shape and uses the third and fourth parameters of rect() to specify the width and height. The syntax rectMode(CORNERS) uses the first and second parameters of rect() to set the location of one corner and uses the third and fourth parameters to set the opposite corner. The syntax rectMode(CENTER) draws the image from its center point and uses the third and forth parameters of rect() to specify the image's width and height. The syntax rectMode(RADIUS) draws the image from its center point and uses the third and forth parameters of rect() to specify half of the image's width and height. The parameter must be written in "ALL CAPS" because Processing is a case sensitive language. Note: In version 125, the mode named CENTER_RADIUS was shortened to RADIUS.
    Syntax
    rectMode(MODE)
    Parameters - - - - - - - - - -
    MODEEither CORNER, CORNERS, CENTER, or RADIUS
    UsageWeb & Application
    Relatedrect()
    - diff --git a/reference/rect_.gif b/reference/rect_.gif deleted file mode 100644 index 90b4da30cd7e67feb1876f323c02888e87643b6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 zcmV;e2~ze)Nk%w1VT1sL0K@FLD8#Pag;`uh5VgM-S- z%HrbUb8~ZNXJ_W-=GocV0001+o12P?itOy{`1ttJ($aisw&+&y5%$QAP3Iqw0g~MyWjA*{9TTw zyx_}eyk4CB0f2&kgn@;FhKY!ahmDGkjE|ClX?08|Bu7qa3!R>yprN9pq@|{(sHvc8 zPM9M&Wq+Rzw6(UkxVgH!yuH4^zz(Zttpb@HvYoXB%+1cv(9zP<)YaD4*afwp#Fwwg zp0v#q0PICJXU$x|mr ze8-*(qZ}^A+(4nM*|TWVs$I*r zt=qS7;cmcsfP*}3fV%Fh7&c~E1b_nz9!$8f;lqd%D_*>~ELNa+0lC^6_JD@Jj5BNA z%(*jR#~1BJPC3G8MayIZV_3bKhwIm{W6PdRySDAyxM>@pFt={dyeh$prJ#EChvT`E zD__pMxdPC>@eZvZJSlMm#*ZU+&b_;L+z5DUh%Ss6rs}D&WBA~qy$2oehUA-GJ#?h+v8|)~Mf#5t=t4j1`tRqm4iY2_KFv>iA+`G5Xk^ zkW2i5JWtxgcssp2Z&Pk=Dl2R(7qjai? zX`q^#>F1$8ehO-yA8NVjnU5k$BLuLy& zVyo?Z&-MvyyWz&GueI~aSFfdz=DY8}$o9J^w|lO8FSs?nOYp<(89XGyaeB)tz70dH zu?G@QO0lodE*x;i8$aAJ5+9cta*`ucTQb2X?~rn#7c=bg%lpRs@3$=vi}S!b&)jIu zJ)`LG&*cVYQFBc$)mAr+^`Baw zc(mF4dYyLI07Jbs+~cARw#s6&P4?Y*U#oYjeAnGJhi?a-?BKl?&a>TaD=xU)d(+IW z&1FljEaU2~P3qr~YrZW1=U1=nx2J%MUNGf^TP`x>h^xLi>y5iUHtM0vek|!~oBlcO zvFpA&?VbBBE$|yAEJFhCsVD91X|@s4)PBLwEa$3D6N0(r!v z0S3v&`2B8>h)kp+7s*IOLSPG!jHDC**+@ke(tl9=KqWWH$wxNflS~LDC`T#EQj+qN zrZgob8wr3x0^pJdyd3~$Ny}Q=@|L)4B?O4TOBp~Qmj-AhEiq6zOv+N2$P8vOXQ|9) zGLx1NsDU)6NzH0nvzotLCN5$5z~ANao8W}z7sg4>a+>p;=uGDgvKh`-7BiN9`#?MA zY0ETb@t!{4Vma_DvE{$ofW=hkV(h8^8t60Yx z)(8+F0$%lDdm_Nrwz~DLaE+^6=StVQ+V!q;O{*I}fY-kI^{;>pELz{$&EpLq0*6g3 zVi&8}#xnM?j*Tp2Co9>?QueZu9e`%_3PlfS_OqZ3t!PI}+R~c#w5Uz3X*qj4)w=ez zu#N3&B`^Tmvi5Wm$gOU7%iG@i_P4+du5gD-T;SgJcg0Pva+k~8<|g2{$4h_&q)XlD zTDQ9Y*uAcHv&-G>dbhja{jPYqn}G5{w^QX!uX@+Z-uAlpz3`2%eCG?_^D5~B39vwZ z_p9Ij^7p^~4KRQQEZ_nY_`n8EFoNxyCJQ+D!4QtHgeOel3S0QX7|w8o8SI`9X!ye* z4zY+wYyl3thXEEqv5Hg7;uX8N#V~%cjAKmW8QZwVIJPkZOxzv@`1r>_4ziGkOynXP z`N&94a*=uL0VO;6$xx26lo?Q#i^B7B7?`q_x6I`uH-G^RU~&V-Oy)A1`OIievzph; z<~FlBxeHfRLYcl?M%?C(x4atzZ5Fl24|?H8WyTVhe*63101r4? z<`QkugslP#ph#sblN1U%{NWIfxKrrj8z{L5;Vt0{QaH%*j(hy$H2H~LKqQQdPsB79 zA)(4w&hnObq$GDKxsg_)jIZ>Ag*eZ-&Ua1_hG?VY7Y9ep$Fakr8~x}yoCnYMtwB#>tGMN*ljV4tl#4XApih7!@djS diff --git a/reference/rect_/index.html b/reference/rect_/index.html deleted file mode 100644 index 6cafb2d..0000000 --- a/reference/rect_/index.html +++ /dev/null @@ -1,182 +0,0 @@ ---- -layout: withcc -title: rect() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    rect()

    Examples
    example pic
    rect(30, 20, 55, 55);
    DescriptionDraws a rectangle to the screen. A rectangle is a four-sided shape with every angle at ninety degrees. The first two parameters set the location, the third sets the width, and the fourth sets the height. The origin is changed with the rectMode() function.
    Syntax
    rect(x, y, width, height)
    -
    -rect(x, y, width, height, radius)
    -
    -rect(x, y, width, height, tlradius, trradius, brradius, blradius)
    -
    -
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint or float: x-coordinate of the rectangle
    yint or float: y-coordinate of the rectangle
    widthint or float: width of the rectangle
    heightint or float: height of the rectangle
    radiusint or float: rounded corner radius of the rectangle
    tlradiusint or float: top-left rounded corner radius of the rectangle
    trradiusint or float: top-right rounded corner radius of the rectangle
    brradiusint or float: bottom-right rounded corner radius of the rectangle
    blradiusint or float: bottom-left rounded corner radius of the rectangle
    UsageWeb & Application
    Related - - rectMode()
    - - quad()
    - - - diff --git a/reference/red_.gif b/reference/red_.gif deleted file mode 100644 index 675e3879f40ef551183714ae6620f9376a59d056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2481 zcmV;i2~PG$Nk%w1VT1sL0K@Ca?e*c4m zgZldVb8~aa$;oGDXX)wb0Dj@-=H~M9@&Et;ii(Qa+1bIt!Q$fLe0+QWe!T4L?3tOF z`1tq$e(~?`@BRJ#A^8LV00000EC2ui0E7U9000I5ATR)AX`X1Ru59bRa4d>LZL<}b z1ADLkJfJT~92$klV)CeL4pAeT?PkhVuGp-0%k6r<;IMeCC7wppl9o_m6W;K+d`_?1 z@A$m_-rhpfS#%d~g9L?#go%cVh>MPmkc^U#laZ8{g>ijXe*;%?7onn~q@|{(sHv)} ztgWPSoFr48aHA2oxVgH!yuH4^z`?@9xTA2fvLb|`xew0I(9zP<)YaD4*xA|-xuS2# zG=>+r&l=|E=;`X~?CtLF@bU5*&&7q{1I)M1=N|t500RmfNU)&6g9sBQJm<{bHxv2x zJuvrAg2js%Giuz(v7^V2AVY@yXRcv{dpkz|jEgW)gTIRbV#=IJv!>0PICJXU$y4V= zeC>oFt6t3-HHX1!FW)O+6)T6%o(t%n#k;rf-@t4q0y;Jp3& z_(N-7uU5Hx61Bzm9DViSXW)U@HLxH5d;aYJK!DE8CmwMHEAM`C=Mtkm0b2_Wsy$`NaJ{2mRZA>J9e1mm<5_?CYs$riR6TC zzNuh_M5Za@oHf>2CY&7ZsU@9$atWxBYyMd1l!u1-;g-TBAnBx(R%+>`mrkJRrkr-_ z>8GEfcV~%UVkzgKeGZ4|s;puP>Z`DVD(ZrH#wn(v!L_QZuCeyo>#TS>Y3i+z=DO># znfj`1s8x>o;+1Ni%I0*)R!iysveS*hu>xSFzuJ6LzEUm((OK+;|-ivR(%Enu3px#bPoWREtT=2fZLMy1ksxr*0!@okz z?YvRe3!KFlV+^ao{Z5SQ#~`yRa;zjvobbuNrL6MGueOY?$;F~9bFwru8(gEq{tK?o zJ6GDXtQw!&ZK65HT(qS}`wSe={&ozoy-!OTwWl^OEiKHxWo`7<+9oY8!c2SYwAfmc zy=m7R^Evd|Y`guo*#{%~b<<(9-L~CuqrJD{mFMm`^AYoIJLRz(zWmh0=Ph~a)OL`7_~egoe);I1 zuYUQ$bKku6&tw0)_~zG7|NWBUZ-4&zxBnZ}uY=y`IzYYxj?aJuJfH#-$UyS>??T-J z-Sv?78vRXFGbLKi<93hHb}w}a&UY9`yl*6NI~D2@P#kzAa4NJI|1?r zhB!Ro^xRiHud#4C9e_X(hbY7%67h&eOyUt`I13t15Qq>+q7;cZ#UfUbiBoW5{94$X zCc|{L`WS1Sn&4>CM#j^P(7q zC<6MK0fTz~RG=U2C`d;t(vo`gaT|5$MOCU%1mqKSj@+nBXG&89c(kK9&8bdz%F~>p zw5C9HX)2qkxu62Ir$|j|Pk(CEnZ7iDx@js+l}c5rGF7S@_`pyr>c|Zsz^h>Ws#w8V z)v_-2aAQp?Si$<#8tP^PaE+^6=W5ov`t)#f&8u9sO3`<+Nw0tntY8OA*uon2up4OW z1QB}xxHfhJkBzKjCkt81N*1x0Wh`VByTt=|_OqZ3t!PI}+R~c#w5UyOX*tV6)w=ez zu#K&3DZtv}QQ)??&8=>C%iG@i_P4+du5f)@Tg?skxX4Yea+j-s;-*dk6o9UDqf6cC zTDQ9Y*uAcHv&-G>dbhja)vf}@>s&{U_q^y$uX@+Z-uAlpz3`2%d&|ov1z^Cw_`R=w z^UL4;`nSIT{;z-oOyB_b6X0F59`zc)qiq^UUWx`?=46{ss3y z)*qk?t6>VATl@Ogzz+7UJ)`Tswz}8CPPVd_U29@QX0$*vC%xvYXu)-{?9TLI40e#?Cow diff --git a/reference/red_/index.html b/reference/red_/index.html deleted file mode 100644 index 6440696..0000000 --- a/reference/red_/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -layout: withcc -title: red() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    red()

    Examples
    example pic
    noStroke();
    -
    -color c = color(0, 126, 255);
    -
    -fill(c);
    -
    -rect(15, 20, 35, 60);
    -
    -float value = red(c);  // Sets "value" to "0"
    -
    -fill(value);
    -
    -rect(50, 20, 35, 60);
    DescriptionExtracts the red value from a color, scaled to match current colorMode(). This value is always returned as a float so be careful not to assign it to an int value.

    The red() function is easy to use and undestand, but is slower than another technique. To achieve the same results when working in colorMode(RGB, 255), but with greater speed, use the >> (right shift) operator with a bit mask. For example, the following two lines of code are equivalent:
    float r1 = red(myColor);
    float r2 = myColor >> 16 & 0xFF;
    Syntax
    red(color)
    Parameters - - - - - - - - - - - -
    colorany value of the color datatype
    UsageWeb & Application
    Related - - green()
    - - blue()
    - - alpha()
    - - >> right shift
    - - hue()
    - - saturation()
    - - brightness()
    - -
    - diff --git a/reference/redraw_/index.html b/reference/redraw_/index.html deleted file mode 100644 index a397fc2..0000000 --- a/reference/redraw_/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: withcc -title: redraw() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    redraw()

    Examples
    float x = 0;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  background(204);
    -
    -  line(x, 0, x, height); 
    -
    -}
    -
    -
    -
    -void mousePressed() {
    -
    -  x += 1;
    -
    -  redraw();
    -
    -}
    DescriptionExecutes the code within draw() one time. This functions allows the program to update the display window only when necessary, for example when an event registered by mousePressed() or keyPressed() occurs. - - - -

    - -In structuring a program, it only makes sense to call redraw() within events such as mousePressed(). This is because redraw() does not run draw() immediately (it only sets a flag that indicates an update is needed). - -

    - -Calling redraw() within draw() has no effect because draw() is continuously called anyway.
    Syntax
    redraw()
    ReturnsNone
    UsageWeb & Application
    RelatednoLoop() - -
    loop()
    - - - diff --git a/reference/requestImage_/index.html b/reference/requestImage_/index.html deleted file mode 100644 index 328c51f..0000000 --- a/reference/requestImage_/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: withcc -title: requestImage() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    requestImage()

    Examples
    -PImage bigImage;
    - 
    -void setup() {
    -  bigImage = requestImage("something.jpg");
    -}
    - 
    -void draw() {
    -  if (bigImage.width == 0) {
    -    // Image is not yet loaded
    -  } else if (bigImage.width == -1) {
    -    // This means an error occurred during image loading
    -  } else {
    -    // Image is ready to go, draw it
    -    image(bigImage, 0, 0);
    -  }
    -}
    Description

    This function load images on a separate thread so that your sketch does not freeze while images load during setup(). - While the image is loading, its width and height will be 0. If an error occurs while loading the image, its width and height will be set to -1. - You'll know when the image has loaded properly because its width and height will be greater than 0. - Asynchronous image loading (particularly when downloading from a server) can dramatically improve performance.

    -

    The extension parameter is used to determine the image type in cases where the image filename does not end with a proper extension. - Specify the extension as the second parameter to requestImage().

    Syntax -
    requestImage(filename)

    -
    requestImage(filename,extension)
    Parameters - - - - - - - - - -
    filenameString: name of file to load, can be .gif, .jpg, .tga, or a handful of other image types depending on your platform
    extensionString: the type of image to load, for example "png", "gif", "jpg"
    -
    ReturnsPImage or null
    UsageWeb & Application
    RelatedloadImage()
    - PImage
    diff --git a/reference/resetMatrix_.gif b/reference/resetMatrix_.gif deleted file mode 100644 index 9aa4a0d05826ceb8433636b52588ccdaaaddd87a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0BvNk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0{=vgsmo{W zpq#XtS2J!q`>$XfxQro*ew~@Jh?~YyDJO7n*PxqQQ?K($fWu!<*CTR_#~4vbD>hM3 zsEs*QQCrxoa7(&bkK^mE>xGn0T4`F{REpp5=@U(#Wr6d&Ih};}wx&VR=SS#qxP<8U z$FK!Pl zFic!*e2iSoTj(3C3fAmg=@d;p4PA|$+M8|tsM!6w%^Z&VZCFk=zMS56*M7+dzZZC# ze2<@hj6TnK+i&U`K!587?m1^rn5~4maxpaI@L`>Z5-H)Rc+euoS&#oVauevWO{tJy z*pXalGNcuX<;t+kM(AZTS~6KVtl5boPDd|y>Z(<7r_X?Sh6XWuaUfEZEp5(Qsu5;1 zs40tfqx#HgQ(sv5+3QEOD>zJIMOtO(v#d6v5@o98$aZ7Iw@2%qENJ#_(zSZW&;>eH iZ^yxc@kTA|DKTP@2p2Qn>)0#P$f*8S+eJA{0RTJ5Y10e< diff --git a/reference/resetMatrix_/index.html b/reference/resetMatrix_/index.html deleted file mode 100644 index 53b57da..0000000 --- a/reference/resetMatrix_/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: withcc -title: resetMatrix() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    resetMatrix()

    Examples
    example pic
    size(100, 100, P3D);
    -noFill();
    -box(80);
    -printMatrix();
    -// Prints:
    -// 01.0000  00.0000  00.0000 -50.0000
    -// 00.0000  01.0000  00.0000 -50.0000
    -// 00.0000  00.0000  01.0000 -86.6025
    -// 00.0000  00.0000  00.0000  01.0000
    -
    -resetMatrix();
    -box(80);
    -printMatrix();
    -// Prints:
    -// 1.0000  0.0000  0.0000  0.0000
    -// 0.0000  1.0000  0.0000  0.0000
    -// 0.0000  0.0000  1.0000  0.0000
    -// 0.0000  0.0000  0.0000  1.0000
    Description

    Replaces the current matrix with the identity matrix. The equivalent function in OpenGL is glLoadIdentity().

    Syntax
    resetMatrix()
    ReturnsNone
    UsageWeb & Application
    RelatedpushMatrix()
    - popMatrix()
    - applyMatrix()
    - printMatrix()
    diff --git a/reference/return/index.html b/reference/return/index.html deleted file mode 100644 index b873e07..0000000 --- a/reference/return/index.html +++ /dev/null @@ -1,186 +0,0 @@ ---- -layout: withcc -title: return | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    return

    Examples
    int val = 30;
    -
    - 
    -
    -void draw() {
    -
    -  int t = timestwo(val);
    -
    -  println(t);
    -
    -}
    -
    -
    -
    -int timestwo(int dVal) {
    -
    -  dVal = dVal * 2;
    -
    -  return dVal;
    -
    -}

    int[] vals = {10, 20, 30}; 
    -
    -  
    -
    -void draw() { 
    -
    -  int[] t = timestwo(vals); 
    -
    -  println(t); 
    -
    -  noLoop();
    -
    -} 
    -
    - 
    -
    -int[] timestwo(int[] dVals) { 
    -
    -  for(int i = 0; i  dVals.length; i++) { 
    -
    -    dVals[i] = dVals[i] * 2; 
    -
    -  } 
    -
    -  return dVals; 
    -
    -}

    void draw() {
    -
    -  background(204);
    -
    -  line(0, 0, width, height);
    -
    -  if(mousePressed) {
    -
    -    return;
    -
    -  }
    -
    -  line(0, height, width, 0);
    -
    -}
    DescriptionKeyword used to indicate the value to return from a function. The value being returned must be the same datatype as defined in the function declaration. Functions declared with void can't return values and shouldn't include a return value. The keyword return may also be used to break out of a function thus not allowing the program to read the remaining statements (see the third example above).
    Syntax
    type function {
    -
    -  statements
    -
    -  return value
    -
    -
    -
    -}
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    typeboolean, byte, char, int, float, String, boolean[], byte[], char[], int[], float[], String[]
    functiona function that is being defined
    statementsany valid statements
    valuemust be the same datatype as the type parameter
    UsageWeb & Application
    - - - diff --git a/reference/reverse_/index.html b/reference/reverse_/index.html deleted file mode 100644 index 9dcb772..0000000 --- a/reference/reverse_/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: withcc -title: reverse() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    reverse()

    Examples
    String sa[] = { "OH ", "NY ", "MA ", "CA "};
    -sa = reverse(sa);
    -print(sa);  // Prints "CA MA NY OH "
    Description -

    Reverses the order of an array.

    Syntax
    reverse(array)
    Parameters - - - - -
    arrayboolean[], byte[], char[], int[], float[], or String[]
    ReturnsArray (the same datatype as the input)
    UsageWeb & Application
    Relatedsort()
    diff --git a/reference/right shift/index.html b/reference/right shift/index.html deleted file mode 100644 index 8ce84d0..0000000 --- a/reference/right shift/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -layout: withcc -title: ">> (right shift) | reference" ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    >> (right shift)

    Examples
    int m = 8 >> 3;    // In binary: 1000 to 1
    -
    -println(m);  // Prints "1"
    -
    -int n = 256 >> 6;  // In binary: 100000000 to 100 
    -
    -println(n);  // Prints "4"
    -
    -int o = 16 >> 3;   // In binary: 10000 to 10 
    -
    -println(o);  // Prints "2"
    -
    -int p = 26 >> 1;   // In binary: 11010 to 1101 
    -
    -println(p);  // Prints "13"

    color argb = color(204, 204, 51, 255);
    -
    -int a = argb >> 24 & 0xFF;
    -
    -int r = argb >> 16 & 0xFF;  // Faster way of getting red(argb)
    -
    -int g = argb >> 8 & 0xFF;   // Faster way of getting green(argb)
    -
    -int b = argb & 0xFF;        // Faster way of getting blue(argb)
    -
    -fill(r, g, b, a);
    -
    -rect(30, 20, 55, 55);
    DescriptionShifts bits to the right. The number to the left of the operator is shifted the number of places specified by the number to the right. Each shift to the right halves the number, therefore each left shift divides the original number by 2. Use the right shift for fast divisions or to extract an individual number from a packed number. Right shifting only works with integers or numbers which automatically convert to an integer such at byte and char.
    Syntax
    value >> n
    Parameters - - - - - - - - - - - - - - - - - - - - - - - -
    valueint: the value to shift
    nint: the number of places to shift right
    UsageWeb & Application
    Related<< (left shift)
    - - - diff --git a/reference/rotateX_.gif b/reference/rotateX_.gif deleted file mode 100644 index b7dac47a47b76188640544fb4792fceb116b93e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmV+*0pI>dNk%w1VPpVg0FeLy|NsBY%*+4)00000EC2ui0Av7U0008{jE||y?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr^9hYgr_`$T zip^@b+=$={4vWX+^0+4esMqYa`we#sc7u#G=?FRs(7EzST4oI(6$jXe2viuyEtRX#3ZE}sxShCICJ@O6SR$VbpUhbPtYA#_0A1^;o57u>$ mpRd2q-|znqFrdJJ1PdBGh%lkTg$x@yd%&1 diff --git a/reference/rotateX_/index.html b/reference/rotateX_/index.html deleted file mode 100644 index 9ea83c7..0000000 --- a/reference/rotateX_/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: withcc -title: rotateX() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    rotateX()

    Examples
    example pic
    size(100, 100, P3D);
    -translate(width/2, height/2);
    -rotateX(PI/3.0);
    -rect(-26, -26, 52, 52);
    example pic
    size(100, 100, P3D);
    -translate(width/2, height/2);
    -rotateX(radians(60));
    -rect(-26, -26, 52, 52);
    Description

    Rotates a shape around the x-axis the amount specified by the angle parameter. - Angles should be specified in radians (values from 0 to PI*2) or converted to radians with the radians() function. - Objects are always rotated around their relative position to the origin and positive numbers rotate objects in a counterclockwise direction. - Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. - For example, calling rotateX(PI/2) and then rotateX(PI/2) is the same as rotateX(PI). - If rotateX() is called within the draw(), the transformation is reset when the loop begins again. - This function requires passing P3D or OPENGL into the size() parameter as shown in the example above.

    Syntax
    rotateX(angle)
    Parameters - - - - -
    anglefloat: angle of rotation specified in radians
    ReturnsNone
    UsageWeb & Application
    Related - rotateY()
    - rotateZ()
    - rotate()
    - translate()
    - scale()
    - pushMatrix()
    - popMatrix()
    diff --git a/reference/rotateY_.gif b/reference/rotateY_.gif deleted file mode 100644 index b0ca26afab9b98614a9e5a85fb1d324f93d58b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmV-h0i^y%Nk%w1VPpVg0FeLy|NsBY%*+4)00000EC2ui0Av7U00092jE||y?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoL(pvS`Ba|r+dU{EzA7J0{0Qn_rFp3tZ? zM6Ft{ovgOV?S8e!FvdIHnkneCdJSp2-*AR}POl^G_`IIq=eGtJ2&Q*H7|3+EQ;4^C znAivT=Qu}MC;7-|pn1vJXqkoy=jlc|C^`yiy2{x)hH3`;B^yRd#;O{tyPNy!`^$)1 zWy?hjWqgIKq%6fupI2>HudmWvvEqz4o9R$vO9o{nzti7GCZmxrFtzI1|KVK>D zo&!&hPad3)W8b}Y{(J$vAuvEv?XgtR;zdO?5~oe-_-vELIHy1! ti)Hc_nUu4Vu}mdsWSopLE4-|UGpEj-JbU{52{fqCp+t)sJ=&lE06P$Os1E=D diff --git a/reference/rotateY_/index.html b/reference/rotateY_/index.html deleted file mode 100644 index 82f2004..0000000 --- a/reference/rotateY_/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: withcc -title: rotateY() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    rotateY()

    Examples
    example pic
    size(100, 100, P3D);
    -translate(width/2, height/2);
    -rotateY(PI/3.0);
    -rect(-26, -26, 52, 52);
    example pic
    size(100, 100, P3D);
    -translate(width/2, height/2);
    -rotateY(radians(60));
    -rect(-26, -26, 52, 52);
    Description

    Rotates a shape around the y-axis the amount specified by the angle parameter. - Angles should be specified in radians (values from 0 to PI*2) or converted to radians with the radians() function. - Objects are always rotated around their relative position to the origin and positive numbers rotate objects in a counterclockwise direction. - Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. - For example, calling rotateY(PI/2) and then rotateY(PI/2) is the same as rotateY(PI). - If rotateY() is called within the draw(), the transformation is reset when the loop begins again. - This function requires passing P3D or OPENGL into the size() parameter as shown in the example above.

    Syntax
    rotateY(angle)
    Parameters - - - - -
    anglefloat: angle of rotation specified in radians
    ReturnsNone
    UsageWeb & Application
    Related - rotateX()
    - rotateZ()
    - rotate()
    - translate()
    - scale()
    - pushMatrix()
    - popMatrix()
    diff --git a/reference/rotateZ_.gif b/reference/rotateZ_.gif deleted file mode 100644 index 6fd93ec48f8f2d239c8068a71d23530741ef14e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxLGNk%w1VPpVg0FeLy|NsBY%*+4)00000EC2ui0Av7U00092jE||y?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoMDpud6u;Pq5LfKfO!6^%?}QUqj5olnnF zI;~oxSS(e0;dZ-Uu;e-(m(2}yTFs8Q-|2PSAg0sp?79BUSLOG&cNZ{7SQwX=*cf<& z*r@kN6Dj#e31fMQImE~bnz^zGnkafgT54MJsp@(P)#|DW`;j_(S-WwIo692G+pC)a z96UQ5W~`hwy6lW>QS8hK9X+jFO(A{l_{$xft^Fa}9nv1H4dJ&QK2+O=%kx_t{buG~8X0029OzQ7Iu diff --git a/reference/rotateZ_/index.html b/reference/rotateZ_/index.html deleted file mode 100644 index 9928ca7..0000000 --- a/reference/rotateZ_/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: withcc -title: rotateZ() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    rotateZ()

    Examples
    example pic
    size(100, 100, P3D);
    -translate(width/2, height/2);
    -rotateZ(PI/3.0);
    -rect(-26, -26, 52, 52);
    example pic
    size(100, 100, P3D);
    -translate(width/2, height/2);
    -rotateY(radians(60));
    -rect(-26, -26, 52, 52);
    Description

    Rotates a shape around the y-axis the amount specified by the angle parameter. - Angles should be specified in radians (values from 0 to PI*2) or converted to radians with the radians() function. - Objects are always rotated around their relative position to the origin and positive numbers rotate objects in a counterclockwise direction. - Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. - For example, calling rotateZ(PI/2) and then rotateZ(PI/2) is the same as rotateZ(PI). - If rotateZ() is called within the draw(), the transformation is reset when the loop begins again. - This function requires passing P3D or OPENGL into the size() parameter as shown in the example above.

    Syntax
    rotateZ(angle)
    Parameters - - - - -
    anglefloat: angle of rotation specified in radians
    ReturnsNone
    UsageWeb & Application
    Related - rotateX()
    - rotateY()
    - rotate()
    - translate()
    - scale()
    - pushMatrix()
    - popMatrix()
    diff --git a/reference/rotate_.gif b/reference/rotate_.gif deleted file mode 100644 index 51df8c7d5ce73315a7593bc339535b5bd9660749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2491 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 F06Q9_Dv1C9 diff --git a/reference/rotate_/index.html b/reference/rotate_/index.html deleted file mode 100644 index eaf80b3..0000000 --- a/reference/rotate_/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -layout: withcc -title: rotate() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    rotate()

    Examples
    example pic
    translate(width/2, height/2);
    -
    -rotate(PI/3.0);
    -
    -rect(-26, -26, 52, 52);
    DescriptionRotates an object the amount specified by the angle parameter. Angles should be specified in radians (values from 0 to PI*2) or converted to radians with the radians() function. Objects are always rotated around their relative position to the origin and positive numbers rotate objects in a clockwise direction with 0 radians or degrees being up and HALF_PI being to the right etc. Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. For example, calling rotate(PI/2) and then rotate(PI/2) is the same as rotate(PI). If rotate() is called within the draw(), the transformation is reset when the loop begins again. Technically, rotate() multiplies the current transformation matrix by a rotation matrix. This function can be further controlled by the pushMatrix() and popMatrix().
    Syntax
    rotate(angle);
    Parameters - - - - - - - - - -
    anglefloat: angle of rotation specified in radians or degrees depending on the current angle mode
    UsageWeb & Application
    RelatedrotateX()
    - - rotateY()
    - - rotateZ()
    - - translate()
    - - scale()
    - - pushMatrix() - -
    popMatrix()
    - - - diff --git a/reference/round_/index.html b/reference/round_/index.html deleted file mode 100644 index 8ae9200..0000000 --- a/reference/round_/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: withcc -title: round() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    round()

    Examples
    float x = 9.2;  
    -
    -int rx = round(x);  // Sets rx to 9
    -
    -
    -
    -float y = 9.5;
    -
    -int ry = round(y);  // Sets ry to 10
    -
    -
    -
    -float z = 9.9;
    -
    -int rz = round(z);  // Sets rz to 10
    DescriptionCalculates the integer closest to the value parameter. For example, round(9.2) returns the value 9.
    Syntax
    round(value)
    Parameters - - - - - - - - - - - -
    valuefloat
    UsageWeb & Application
    Relatedfloor()
    - - ceil()
    - - - diff --git a/reference/saturation_.gif b/reference/saturation_.gif deleted file mode 100644 index e0b37b5b81a3e88afb56fae11e0266afb7d7f4d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VPpVg0FeLy|AB$b%*=j%egFUfEC2ui0Av7U00092jE||y?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`ySqVb4KDwTq!^9hYgrJ|+v zx}0ja(<=6h<%-2#usJzScSGm)Q4N2V-RHP{P6ylL_8TmX=_ncndU;AkTKcvMl`07v+v?g$>m=Klt807P+q8=q zEHFG+eC(I}>&k3-i}d^vEgh_!H| - - Name -

    saturation()

    - - - - - - Examples -
    example pic
    noStroke();
    -colorMode(HSB, 255);
    -color c = color(0, 126, 255);
    -fill(c);
    -rect(15, 20, 35, 60);
    -float value = saturation(c);  // Sets "value" to "126"
    -fill(value);
    -rect(50, 20, 35, 60);
    - - - - Description - -

    Extracts the saturation value from a color.

    - - - - Syntax - -
    saturation(color)
    - - - - Parameters - - - - - - -
    colorany value of the color datatype
    - - - - Returns - float - - - Usage - Web & Application - - - - - Related - red()
    - green()
    - blue()
    - hue()
    - brightness()
    - - diff --git a/reference/saveFrame_/index.html b/reference/saveFrame_/index.html deleted file mode 100644 index a8a9e1d..0000000 --- a/reference/saveFrame_/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: withcc -title: saveFrame() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    saveFrame()

    Examples
    int x = 0;
    -void draw()
    -{
    -  background(204);
    -  if(x < 100) {
    -    line(x, 0, x, 100);
    -    x = x + 1;
    -  } else {
    -    noLoop();
    -  }
    -  // Saves each frame as screen-0000.tif, screen-0001.tif, etc.
    -  saveFrame(); 
    -}

    -
    int x = 0;
    -void draw()
    -{
    -  background(204);
    -  if(x < 100) {
    -    line(x, 0, x, 100);
    -    x = x + 1;
    -  } else {
    -    noLoop();
    -  }
    -  // Saves each frame as line-0000.tif, line-0001.tif, etc.
    -  saveFrame("line-####.tif"); 
    -}
    -
    Description

    Saves a numbered sequence of images, one image each time the function is run. - To save an image that is identical to the display window, run the function at the end of draw() or within mouse and key events such as mousePressed() and - keyPressed(). If saveFrame() is called without parameters, it will save the files as screen-0000.tif, screen-0001.tif, etc. - It is possible to specify the name of the sequence with the filename parameter and make the choice of saving TIFF, TARGA, PNG, or JPEG files with the ext parameter. - These image sequences can be loaded into programs such as Apple's QuickTime software and made into movies. - These files are saved to the sketch's folder, which may be opened by selecting "Show sketch folder" from the "Sketch" menu.

    -

    All images saved from the main drawing window will be opaque. To save images without a background, use createGraphics().

    Syntax
    saveFrame()

    -
    saveFrame(filename-####.ext)
    Parameters - - - - - - - - -
    filenameString: any sequence of letters and numbers
    exteither "tif", "tga", "jpg", "png"
    -
    Returnsnone
    UsageApplication
    Relatedsave()
    - createGraphics()
    diff --git a/reference/saveStrings_/index.html b/reference/saveStrings_/index.html deleted file mode 100644 index fa17f0d..0000000 --- a/reference/saveStrings_/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: withcc -title: saveStrings() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    saveStrings()

    Examples
    String words = "apple bear cat dog";
    -String[] list = split(words, ' ');
    -
    -// now write the strings to a file, each on a separate line
    -saveStrings("nouns.txt", list);
    -
    Description

    Writes an array of strings to a file, one line per string. This file is saved to the sketch's folder, - which is opened by selecting "Show sketch folder" from the "Sketch" menu.

    Syntax
    saveStrings(filename,strings)
    Parameters - - - - - - - - -
    filenameString: any sequence of letters and numbers
    stringsstring array to be written
    -
    ReturnsNone
    UsageWeb & Application
    RelatedloadStrings()
    - loadBytes()
    - saveBytes()
    diff --git a/reference/save_/index.html b/reference/save_/index.html deleted file mode 100644 index 24ff536..0000000 --- a/reference/save_/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: withcc -title: save() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    save()

    Examples
    line(20, 20, 80, 80);
    -// Saves a TIFF file named "diagonal.tif"
    -save("diagonal.tif");
    -// Saves a TARGA file named "cross.tga"
    -line(80, 20, 20, 80);
    -save("cross.tga");
    -
    Description

    Saves an image from the display window. Images are saved in the PNG format as a Data URI, which can be displayed in the browser in a new window.

    Syntax
    save(filename)
    Parameters - - - - -
    filenameString: any sequence of letters and numbers
    -
    ReturnsNone
    UsageWeb & Application
    RelatedsaveFrame()
    - createGraphics()
    diff --git a/reference/scale_.gif b/reference/scale_.gif deleted file mode 100644 index e66d7da649c7a2c9afb23e07d203d696b55bebf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2473 zcmV;a30C$;Nk%w1VT1sL0K@FMe6^78un`h$amy1Kf`%F1(d zbK>ISv$M0q!^5nstY>Fu=H}+v+1UU90Gpeeii(Qt?CkjX_A0PICJXU$+PFq zjQ>tPRC&xpO9C%rZs5SQsne%Wqe`7hwW`&tRb>J_Ng(An59E+`z$lZ0g|leWs$I*r zt=qS7Lu`({V( zD__pMx%1J$^%BKEe5r8*$X`3(&b@nc1HLyzA66_=b=KHje^~!vhx_;N5f%=6vo^Z#UcO8N3Eok9|7~|8fL0Hu3BcRqr$4;q8!5cA+2MAimR)-n#${q zz5)uVs&?KwESj$t8=tJ50{iLzq|ZXT<+j{*t7WDMY})9rf!5k=eW7N%rn=ciJ0G>= zE^98K&a(SKy7pG;Zhpsd8n1x!l8J7<_Y&OdzSH(QuCf3Ji*3I68l3B{nlcJzwdFd@ zD!UO&tS7kQUi`0=g9=Pv$HSuRae)X2sj$cllWgn25U*@0$QCCnr@R{1%dyRQw)`Hv zF-Lmt$potmw9xJmy>r9YZmh1-HZz^X%Q`;_b;-ik3^cJ6hnw@CPs@Dtd{pcEHQ2^h z+$-5yn@umx_NMKz)jBvGx6yMW?e*Gc;>`oraC^%2q~0cOCE(EF{5Gl?M;)Wxj3XL$ z$XOdcbBUB!F1X&BpPga<=Zt?&IOIG_ZX)S`o9;HUgwC!uq!XO$;CT=DDt^uoI3BTTYvNA$?Lv7^B5YxH1z%! z&1~P*dp~j8xJNJk@}igT{`>ZUE<5=bnqM{g3o9GnsMoyveGGir8`%JTs+b25@g5WMF7km>3hn%!2__Aq!_n7#C)4 zfA#AhR(8lkr`S+<eoBmt5*@rfEq;{2w^z=c@xiUE;g1gXfx zd3f=Q70{vrQ`klSFq-ilVpLxYnW&96x{&~BgkjHCCyYAU5dv{U;TmbTiaz>r0eKAF zdc0E`3H$*fh&-es#lgr#Hgb`UOr!*w(}3V9@q-OWKqfb-$xd?elb#Hv1n5A@QmSE+ zpiHGFD;d5m4zK~RjHN7RNy}QoQUYAar7j~N0bBYKmX@3%-!$;cV){}7PDo}GmZ{8U zGV__vj3zXj&`V>^5&^+<yXyq6K z_Rf0R^Pc#$r{ea>Pj2P&pYF`&JjVpkf*SOo2u-L$?a2THFn|F9RpXc*O3{j1^r9He zs75!+(T;lmbfXcKrfor%KhTTJ@?}g(^~=y42yZC#zr$t60ZM zR;9{QqDay}S=Y+ewpw)p1DHTpgSegv*!8Y>&8uGb%GbX7^{;>pY+vUpK@AA@u!v2p zVizmdvx>B20+>K#Co9>?QueZz%`9d&tJ%(S_OqT1?Pdi)TEb3`w5Uz3YFEqJ*1Gn! zu#K&3Uu)U{&i1yr&8=>6O927&wzeOnfN+OP+~OMdxX4Yea+k~8<|Y@o0duZ&r%T=H zTK53|&>hnOD6rk`a`(I54KH}dE8g;w_q^s!FM8Ko-UGNdyHj$neCJEw`r7xt_|30= z_sie>!go*_IKTx2OyB_rydWq7}ef4zrlY4CMzX-~mN`fST9L z<~FSf<-tceExHw nzwzl%kGj;4zVp5CMFg^7deiU7^{#vU>)hyuH}WBZ5C8x>IG`dN diff --git a/reference/scale_/index.html b/reference/scale_/index.html deleted file mode 100644 index 75816d3..0000000 --- a/reference/scale_/index.html +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: withcc -title: scale() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    scale()

    Examples
    example pic
    rect(30, 20, 50, 50);
    -
    -scale(0.5);
    -
    -rect(30, 20, 50, 50);
    example pic
    rect(30, 20, 50, 50);
    -
    -scale(0.5, 1.3);
    -
    -rect(30, 20, 50, 50);
    example pic
    // Scaling in 3D requires P3D 
    -
    -// or OPENGL as a parameter to size()
    -
    -size(100, 100, P3D);
    -
    -fill(255, 102);
    -
    -translate(width/2+12, height/2);
    -
    -box(20, 20, 20);
    -
    -scale(2.5, 2.5, 2.5);
    -
    -box(20, 20, 20);
    DescriptionIncreasing and decreasing the size of an object by expanding and contracting vertices. Scale values are specified as decimal percentages. The function call scale(2.0) increases the dimension of a shape by 200%. Objects always scale from their relative origin to the coordinate system. Transformations apply to everything that happens after and subsequent calls to the function multiply the effect. For example, calling scale(2.0) and then scale(1.5) is the same as scale(3.0). If scale() is called within draw(), the transformation is reset when the loop begins again. Using this function with the z parameter requires passing P3D or OPENGL into the size() parameter as shown in the example above. This function can be further controlled by pushMatrix() and popMatrix().
    Syntax
    scale(size);
    -
    -scale(x, y);
    -
    -scale(x, y, z);
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    sizefloat: percentage to scale the object
    xfloat: percentage to scale the object in the "x" axis
    yfloat: percentage to scale the object in the "y" axis
    zfloat: percentage to scale the object in the "z" axis
    UsageWeb & Application
    RelatedrotateX()
    - - rotateY()
    - - rotateZ()
    - - translate()
    - - pushMatrix() - -
    popMatrix()
    - - - diff --git a/reference/scale_2.gif b/reference/scale_2.gif deleted file mode 100644 index 78ea6fcfb9e5482d65b22c9fb5dd9fde97196e1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2585 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 O@b6;#^Ef~V0028_4Tc&3 diff --git a/reference/screen/index.html b/reference/screen/index.html deleted file mode 100644 index 73d5c76..0000000 --- a/reference/screen/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: withcc -title: screen | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    screen

    Examples
    -
    void setup() {
    - size(screen.width, screen.height);
    -}
    -
    -void draw() {
    - line(0, 0, screen.width, screen.height);
    -}
    Description

    System variable which stores the dimensions of the computer screen. For example, if the current screen resolution is 1024x768, - screen.width is 1024 and screen.height is 768. - These dimensions are useful when exporting full-screen applications.

    -

    UsageWeb & Application
    diff --git a/reference/screenX_/index.html b/reference/screenX_/index.html deleted file mode 100644 index bbf0a35..0000000 --- a/reference/screenX_/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: withcc -title: screenX() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    screenX()

    Examples
    void setup() {
    -  size(100, 100, P3D);
    -}
    -
    -void draw() {
    -  background(204);
    -  
    -  float x = mouseX;
    -  float y = mouseY;
    -  float z = -100;
    -  
    -  // Draw "X" at z = -100
    -  stroke(255);
    -  line(x-10, y-10, z, x+10, y+10, z); 
    -  line(x+10, y-10, z, x-10, y+10, z); 
    -  
    -  // Draw line in 2D at same x value
    -  // Notice the parallax
    -  stroke(102);
    -  line(x, 0, 0, x, height, 0);
    -  
    -  // Draw 2D line to match the x value
    -  // element drawn at z = -100 
    -  stroke(0);
    -  float theX = screenX(x, y, z);
    -  line(theX, 0, 0, theX, height, 0);    
    -}
    -
    Description

    Takes a three-dimensional X, Y, Z position and returns the X value for where it will appear on a (two-dimensional) screen.

    Syntax
    screenX(x,y,z)
    Parameters - - - - - - - - - - - - -
    xint or float: 3D x coordinate to be mapped
    yint or float: 3D y coordinate to be mapped
    zint or float: 3D z coordinate to be mapped
    Returnsfloat
    UsageWeb & Application
    RelatedscreenY()
    - screenZ()
    diff --git a/reference/screenY_/index.html b/reference/screenY_/index.html deleted file mode 100644 index 36a80a7..0000000 --- a/reference/screenY_/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: withcc -title: screenY() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    screenY()

    Examples
    void setup() {
    -  size(100, 100, P3D);
    -}
    -
    -void draw() {
    -  background(204);
    -  
    -  float x = mouseX;
    -  float y = mouseY;
    -  float z = -100;
    -  
    -  // Draw "X" at z = -100
    -  stroke(255);
    -  line(x-10, y-10, z, x+10, y+10, z); 
    -  line(x+10, y-10, z, x-10, y+10, z); 
    -  
    -  // Draw line in 2D at same y value
    -  // Notice the parallax
    -  stroke(102);
    -  line(0, y, 0, width, y, 0);
    -  
    -  // Draw 2D line to match the y value
    -  // element drawn at z = -100 
    -  stroke(0);
    -  float theY = screenY(x, y, z);
    -  line(0, theY, 0, width, theY, 0);    
    -}
    -
    Description

    Takes a three-dimensional X, Y, Z position and returns the Y value for where it will appear on a (two-dimensional) screen.

    Syntax
    screenY(x,y,z)
    Parameters - - - - - - - - - - - - -
    xint or float: 3D x coordinate to be mapped
    yint or float: 3D y coordinate to be mapped
    zint or float: 3D z coordinate to be mapped
    Returnsfloat
    UsageWeb & Application
    RelatedscreenX()
    - screenZ()
    diff --git a/reference/screenZ_/index.html b/reference/screenZ_/index.html deleted file mode 100644 index c4132a9..0000000 --- a/reference/screenZ_/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: withcc -title: screenZ() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    screenZ()

    Description

    Takes a three-dimensional X, Y, Z position and returns the Z value for where it will appear on a (two-dimensional) screen.

    Syntax
    screenZ(x,y,z)
    Parameters - - - - - - - - - - - - -
    xint or float: 3D x coordinate to be mapped
    yint or float: 3D y coordinate to be mapped
    zint or float: 3D z coordinate to be mapped
    Returnsfloat
    UsageWeb & Application
    RelatedscreenX()
    - screenY()
    diff --git a/reference/second_/index.html b/reference/second_/index.html deleted file mode 100644 index 7610d74..0000000 --- a/reference/second_/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -layout: withcc -title: second() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    second()

    Examples
    void draw() {
    -
    -  background(204);
    -
    -  int s = second();  // Values from 0 - 59
    -
    -  int m = minute();  // Values from 0 - 59
    -
    -  int h = hour();    // Values from 0 - 23
    -
    -  line(s, 0, s, 33);
    -
    -  line(m, 33, m, 66);
    -
    -  line(h, 66, h, 100);
    -
    -}
    DescriptionProcessing communicates with the clock on your computer. The second() function returns the current second as a value from 0 - 59.
    Syntax
    second
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - millis()
    - - minute()
    - - hour()
    - - day()
    - - month()
    - - year() - -
    - - - diff --git a/reference/semi colon/index.html b/reference/semi colon/index.html deleted file mode 100644 index 4c8e1df..0000000 --- a/reference/semi colon/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: withcc -title: ; (semicolon) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    ; (semicolon)

    Examples
    int a;       // Declaration statement
    -
    -a = 30;      // Assignment statement
    -
    -println(i);  // Function statement
    DescriptionA statement terminator which separates elements of the program. A statement is a complete instruction to the computer and the semicolon is used to separate instructions (this is similar to the period "." in written English). Semicolons are also used to separate the different elements of a for structure.
    Syntax
    statement;
    Parameters - - - - - - - - - -
    statementa single statement to execute
    UsageWeb & Application
    Relatedfor()
    - diff --git a/reference/set_.gif b/reference/set_.gif deleted file mode 100644 index a5c127480b90ef3874d7bb1c19d5d661591e9a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2160 zcmV-$2#@ziNk%w1VT1sL0K@l=)q{hB`uh6H%F1+f zbhERwtgNhTY;5W2>E`C<^78UzWMrG0n~I8x+1c65%*^8A;(L30($doG?CkjX`1JJj z_V)Jg@9+Hl{LjzNA^8LV00000EC2ui0E7U9000I5;P+uhz@TtQ6y9(L& zAA-xZ&Kc(C=;`X~?CtLF@bU5)&cl_jBA&L*=N0PICJX6dC_0V zTAm(e`aq7Q%MBcoDqYI7sne%Wqe`7hRqD&0KTmoa`hZ^ti!V877)!RS*|TWVs$I*r zty{Mou0rTQZ(ATtB)U@k`f@CSzkmY^9!$8f;lqd%D^@)As!zLtUg`Y`VT0erm@{kM z%z1EQi*&bX1@Ov&QKT9Gd+;!zb&uDuW6PdRySDAyxO3aq5O?m+yD3dmwye6faoxz1 zD__n$!Drugg&q@LS?pid#$7kx&b@nX1iUvuAB~qf>g(BC?^w^iz5Dm@9-&T{XOWRh%B~v;A{AmnBj>j{L;7Rha>z{1ICxI|t%YPRUQs4lX? zwkvKAF}ixJv+>H?;=A~stFOD`mN{*{|AxqKu>KY-;=$%Ns_?!6ySXm74@=1KrVdwZ zaKv^_Ot8iVUQ8;;8`JA&xA!8PG078(%r46Vx=b<5^vV1&%{6oEt;Y%D{G!Q-3jFQO zKC=oms6z9+a?uv*oN~jJGTrpi_UhX2(o)N3bI)1h>a^7=N8Pp23Dj#W*ie@`w$@*l zi?P^iySFvgaq~&_*=~ z0Ssv2-$;eS9{TWyKn$V~he*UC8u5rk)S>JEgv2H?AOZ()q7~kAMth z9VJiz3Gh*At&xBt7s<#*I`WZ_jHDzdNy$n^@{k_1q$W4X$xeFGkjVSr`367$36%1b zrc5O&SEp;=uGDU#!0FJOu(J+e5X9) zNzZxOv!3|8r#|z^&wct6p9csiJ3SQ8f*SOo2u-L$7s}9vI`p9o9VmbxO3{j1^r9BM zzyU5G(ezyZ;G-Z7sYpjk(vq6=q$o|PN=@3)?5y;qFpa59XUfq~LU5D{xIj*Ks?(nG z^rt=zDo}?i)S?pgs76idQ5Dcq<0#;%P>rfor%KhTTJ@?}&8k+d+SJx;^{ZeFt60U_ z0H)fsgQIMKTGz_fwz~DLaE+^6=StVQ# z#3ywD3X)VZjt2KbAyAI8l&4H(fG|WfCpi%;#IcWw%;U>o4zrlWTo0gVSp>>phBnsB m<~FDrS%^a)!pO6p_sr)$n_0(YSTGJk0029yJcGjk diff --git a/reference/set_/index.html b/reference/set_/index.html deleted file mode 100644 index 51a7f42..0000000 --- a/reference/set_/index.html +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: withcc -title: set() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    set()

    Examples
    example pic
    color black = color(0);
    -
    -set(30, 20, black);
    -
    -set(85, 20, black);
    -
    -set(85, 75, black);
    -
    -set(30, 75, black);
    example pic
    for (int i=30; i<(width-15); i++) {
    -
    -  for(int j=20; j<(height-25); j++) {
    -
    -    color c = color(204-j, 153-i, 0);
    -
    -    set(i, j, c);
    -
    -  }
    -
    -}
    example pic
    size(100, 100, P3D);
    -
    -PImage myImage = loadImage("topanga.jpg");
    -
    -set(0, 0, myImage);
    -
    -line(0, 0, width, height);
    -
    -line(0, height, width, 0);
    DescriptionChanges the color of any pixel or writes an image directly into the display window. The x and y parameters specify the pixel to change and the color parameter specifies the color value. The color parameter is affected by the current color mode (the default is RGB values from 0 to 255). When setting an image, the x and y parameters define the coordinates for the upper-left corner of the image (the placement of the image is not affected by the imageMode() function).

    Setting the color of a single pixel with set(x, y) is easy, but not as fast as putting the data directly into pixels[]. The equivalent statement to "set(x, y, #000000)" using pixels[] is "pixels[y*width+x] = #000000". The (BETA) version of Processing requires calling loadPixels() to load the display window data into the pixels[] array before getting the values and calling updatePixels() to update the window.
    Syntax
    set(x, y, color)
    -
    -set(x, y, image)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint: x-coordinate of the pixel
    yint: y-coordinate of the pixel
    colorcolor: any value of the color datatype
    imagePImage: any valid variable of type PImage
    UsageWeb & Application
    Relatedget() - -
    pixels[]
    - - - diff --git a/reference/set_2.jpg b/reference/set_2.jpg deleted file mode 100644 index 926cf7f76a8099fd1f3006c5dbb3bcdbdbf8f6f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1730 zcmbVLeLT~79RL2dnXQd&Hm%6AF%Nmlw9dmiPo;~Hr;@|cbQ0xIv`ABvd5N3zG>?Uz zluP1#uvSv;yNIplt%b)hz4K; z2u^?$ji3Sm7#xBirO!DaAQdDWrmEz=3cwI5a0rP95Cm7jppZz+X9Wa<6Qu-8go;;4 za@GwEn$!LYB-Qc!&|_aFx!pUK6sjqfbTq7-A3eCa+}Ve7K%eeMfB;Nc27`dly{asN zAY@rtdWA$Mw`+LEl#|ND3?HhVilQ4};mULZoB-@WKVvku!@8F7va3r+7j?ZBZ-J9I z@Of02)S=cM4buR8%ng|Iqdw|87~TSbX^;x3x+sT#r9pvb{cJMbuZpU}JJv3F&m$D& zZL+=FVhwE_<=Y)oRrS@CtV70a5(!}j=rln4>LL_EJ?5!BHXauv=E&Oh5*oipa2XZ7Xpd78~*gW#bAY`jv2)JTq> zZQpJH5N2)j_KEL@COY*>PfY48_Xx;DvR6$vb3TrZ9$cGpB)h@wLtF8|lE@Ul+%D>% zZ*DM0k}cSo&Z;CHaOD;kJ6CPwN+PCjesaTL(T6-&qz4(OMT?INtPVVXv3jac7}rwv zXRFVd&HkiXvF zsIynqHT%fV1u|kwwE|bR?hf}X5wO##zS0g^FWpyqYNx=%RMsJLE0$XuKPh%T>N>$^ zxzGCf#j=+=6gBH7?M&Igt-$KHiNU|wZMioYX51+@4Kw*PB552mlkA5Q=o}wZ&rAjE z)k#PG5p3f}{`DWa}EOy?vCqrQYpw$#PGM^ipW5t)$vN=6-&Lc|@#7 zr6;ZY2{o@eGQKLNyGHOb^sVP__4GnKl0Q_ZSeFGS>)ELIC=Zq7j0FR{&|f0R7%*fusm+r)MkmYHSx4P z?;My?-uxXiy$JdpwKNBk`;XC4V|0^>^4NBvpgGRl!IV>#BT_P)V_j>|nQ3h{k0#t^c2Oa&UrTFdi|hX0V$#m8K1vLf zB^%%OY)68FY&>Cln}%*(K`SD diff --git a/reference/set_3.jpg b/reference/set_3.jpg deleted file mode 100644 index 9c905b2b16b1d360f06e65c2e2ae269ea4a603f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4588 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 - - - - Name - -

    setup()

    - - - - - - - - Examples - - - -
    void setup() {
    -
    -  size(200, 200);
    -
    -  background(0);
    -
    -  noStroke();
    -
    -  fill(102);
    -
    -}
    -
    -
    -
    -int a = 0;
    -
    -
    -
    -void draw() {
    -
    -  rect(a++%width, 10, 2, 80); 
    -
    -}
    - - - - - - - - Description - - Called once when the program is started. Used to define initial enviroment properties such as screen size, background color, loading images, etc. before the draw() begins executing. Variables declared within setup() are not accessible within other functions, includingdraw(). There can only be one setup() function for each program and it should not be called again after it's initial execution. - - - - - - - - - - Syntax - -
    void setup() {
    -
    -  statements
    -
    -}
    - - - - - - - - Parameters - - - - - - - - - - - - - -
    statementsany valid statements
    - - - - - - - - Returns - - None - - - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - loop() - -
    size()
    - - - - - diff --git a/reference/shapeMode.jpg b/reference/shapeMode.jpg deleted file mode 100644 index b3cc0cd9ca19c2a3bb0f1dc8702666c42e93ca46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6150 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 diff --git a/reference/shapeMode_/index.html b/reference/shapeMode_/index.html deleted file mode 100644 index cfed5ea..0000000 --- a/reference/shapeMode_/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: withcc -title: shapeMode() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    shapeMode()

    Examples
    example pic
    PShape bot = loadShape("bot1.svg");
    -smooth();
    -shapeMode(CENTER);
    -shape(bot, 35, 35, 50, 50);
    -shapeMode(CORNER);
    -fill(102);
    -shape(bot, 35, 35, 50, 50);
    Description

    Modifies the location from which shapes draw. The default mode is shapeMode(CORNER), which specifies the location to be the upper - left corner of the shape and uses the third and fourth parameters of shape() to specify the width and height. - The syntax shapeMode(CORNERS) uses the first and second parameters of shape() - to set the location of one corner and uses the third and fourth parameters to set the opposite corner. The syntax shapeMode(CENTER) draws the shape from - its center point and uses the third and forth parameters of shape() to specify the width and height. - The parameter must be written in "ALL CAPS" because Processing is a case sensitive language.

    Syntax
    shapeMode(MODE)

    Parameters - - - - -
    MODE Either CORNER, CORNERS, CENTER
    ReturnsNone
    UsageWeb & Application
    RelatedPShape
    - loadShape()
    - shapeMode()
    diff --git a/reference/shape_/index.html b/reference/shape_/index.html deleted file mode 100644 index 38a71ec..0000000 --- a/reference/shape_/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: withcc -title: shape() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    shape()

    Examples
    example pic
    PShape s;
    -s = loadShape("bot.svg");
    -smooth();
    -shape(s, 10, 10, 80, 80);
    example pic
    // Loading a shape when using setup() and draw()
    -
    -PShape s;
    -
    -void setup() {
    -  s = loadShape("bot.svg");
    -  smooth();
    -  noLoop();
    -}
    -
    -void draw() {
    -  shape(s, 10, 10, 80, 80);
    -}
    Description

    Displays shapes to the screen. The shapes must be in the sketch's "data" directory to load correctly. Select "Add file..." - from the "Sketch" menu to add the shape. Processing currently works with SVG shapes only. The sh parameter specifies the shape to display and - the x and y parameters define the location of the shape from its upper-left corner. The shape is displayed at its original size unless the width - and height parameters specify a different size. The shapeMode() function changes the way the parameters work. A call to shapeMode(CORNERS), for example, will change the width and height - parameters to define the x and y values of the opposite corner of the shape.

    -

    Note complex shapes may draw awkwardly with P2D, P3D, and OPENGL. Those renderers do not yet support shapes that have holes or complicated breaks.

    Syntax
    shape(sh)

    -
    shape(sh,x,y)

    -
    shape(sh,x,y,width,height)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - -
    shPShape: the shape to display
    xint or float: x-coordinate of the shape
    yint or float: y-coordinate of the shape
    zint or float: z-coordinate of the shape
    widthint or float: width to display the shape
    heightint or float: height to display the shape
    UsageWeb & Application
    RelatedPShape
    - loadShape()
    - shapeMode()
    diff --git a/reference/shininess_.jpg b/reference/shininess_.jpg deleted file mode 100644 index f335b13df07a4df3bbf17128c37fcdfcd20ec471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3981 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 Xm=Y1mDhV5f&u)_%2W^6UsD1wclTP@3 diff --git a/reference/shininess_/index.html b/reference/shininess_/index.html deleted file mode 100644 index 00d8031..0000000 --- a/reference/shininess_/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: withcc -title: shininess() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    shininess()

    Examples
    example pic
    size(100, 100, P3D); 
    -background(0); 
    -noStroke(); 
    -background(0); 
    -fill(0, 51, 102); 
    -ambientLight(102, 102, 102);
    -lightSpecular(204, 204, 204); 
    -directionalLight(102, 102, 102, 0, 0, -1); 
    -specular(255, 255, 255); 
    -translate(30, 50, 0); 
    -shininess(1.0); 
    -sphere(20); 
    -translate(40, 0, 0); 
    -shininess(5.0); 
    -sphere(20);
    Description

    Sets the amount of gloss in the surface of shapes. Used in combination with emissive(), specular(), and - shininess() in setting the materal properties of shapes.

    Syntax
    shininess(shine)

    -
    Parameters - - - - -
    shinefloat: degree of shininess
    ReturnsNone
    UsageWeb & Application
    Relatedambient()
    - specular()
    - emissive()
    diff --git a/reference/shorten_/index.html b/reference/shorten_/index.html deleted file mode 100644 index 5f029bf..0000000 --- a/reference/shorten_/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: withcc -title: shorten() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    shorten()

    Examples
    String[] sa1 = { "OH ", "NY ", "CA "}; 
    -String[] sa2 = shorten(sa1); 
    -println(sa1);  // sa1 still contains OH, NY, CA
    -println(sa2);  // sa2 now contains OH, NY
    Description -

    Decreases an array by one element and returns the shortened array.

    -

    When using an array of objects, the data returned from the function must be cast to the object array's data type. - For example: SomeClass[] items = (SomeClass[]) shorten(originalArray).

    Syntax
    shorten(array)
    Parameters - - - -
    arrayboolean[], byte[], char[], int[], float[], or String[], or an array of objects
    ReturnsArray (the same datatype as the input)
    UsageWeb & Application
    Relatedappend()
    - expand()
    diff --git a/reference/sin_.gif b/reference/sin_.gif deleted file mode 100644 index 8032b005a6edc9034a3441e46ccbd204e516d8f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1835 zcmV+`2h{jSNk%w1VPpVg0J8u9s;a8o+}z~kZfFMe6^76mGzsShQA^8LV00000EC2ui0Av7U000F4aFju-y*TU5yYEvWj?-tJ zX!?~TnFRwJ%yezvc&_if9silo$kHnsk4WARc4;k>(5O_&w2W|qfMCn*dcWYXcuWRs zaaK|-`($_()RuVK_ZVZTtii?bmj*pO$k6walT3m|;3WafHO^(afqC?wzs&sy1Tr+zO8UsG*+0jwGGJ0%FE2n&d<=% z%(jVK!xR&5pPb1H-rwNi;^XAy=I7wa)Nqv&v!C7Q^7Hid-|E0y*A%nd4d4U_EC@JI zAi;wM6Bb;EkfFkc5Fb8F*T54ySQX+N`xdaH$B!WYLy8h+w5ZXeL>-J!DuQVNrvevLY?adjEtdrY2HlFZtJkk! zM?}4eC}$O(S%Gd98n&(5umq)gGFt(y$F*$V>fJju?o^d^x%E_wm#<;Ne&-51D>y6O zyodQp5aKnlCb|^tYJD8}Fn|FLlukx!8F1#tJ~?-OD*-?P0SFKXIN;Q1Y0NB9Z!WyL z?E?n`T+f!B;4|s5iuY+Iyta4S0SO$qW)Ryzamqw*FAi+rpJUa|!6qmm`~U(5*K7Ah zetG-p?t>pI2oDyz^aRuqSO-vGylwWTR$P08uB zoO}iz6#xPU1Q4BY)m@iBf<a0nfF44zjUgabT4Vhbi(h$4n7618E6 zAL17xf8)6pz=U$OcjADl71-ktEgk^fg2OpTqmfAdh1-STJ^2&>KYDl{Z2E~QkNT7=k7 z3u2i>lI!BDNyggdtOizVtCV!+`rw_sD(bDH@wpjqgvJsoB)Y2xjDS-6${Oj4@?J}C zwldzkYq|D0`zxQ|`s8<2zyYv5xHkZVBk*^E zYWG{%qz=C5ngKvJ9QlZo#|DG{2$R*=Ip-{3)A<7wknU^EjVioVf^LgAF^6-ntSPgS z3)x|YjT5*QaGaW%`LPYhK4qbl;x06_j<3Z!*|=6dyKEe;YUI_%qYiBHTk%fZXLM2y zr0g*lH@v1#<_>B0lkUf~%yd8BKmzo_nC6P+3mX(uG5DT<_hJTr>H~P9-|@bMy`bDE zcGBZj>@26h`Bkr7Hd|Zvt{}edIWK(N10eZ&R6l7sMP=)|AhQ$%KreMrJ~#RrjQCfa z;8jpGCLAEYbT>f}sE}LzdmhC`1Spz8Fm)%ZVW5b#LJ@ASVt_i~V{T-+5E8D1?t|Zy zdZzBS%kl(RvswpaR_30&XpEi_J=+9oYy-q6pH6pkZVT5jiwP zUU39CY@fC0c*q}KkA?;`%5TC1MQcgOkCT)j9$6HnJ)#MXBY40cg;eVK@cvp zw#!r=1x{ds;wy2f%UF7{E7;&q35Q97W^xjFs8qlwSp+(2=CYWJ^d?`dY05-qbDQGy z3OUty%Ja=KoxTC5CgG`0a3aV?_xz2G^oh@X`tzRv4X8i|I#6)R=b#8ps6rQtP>)=b zfZ1fIL?=qohIUZcS{2QxMiuJNa&|H;8x5&QEt;@RVC60&O{qvbN|snH$9^h}X+nX* zQk7SKpz(!$fC8Z{&+snAOL(H-x+#34|PNK_><)v8LhA@}$x zZU*oUe>l}1U=6E1@KKFM6+j!dh=*9$%GPk;!=~-vsy4RKRB71tu6WJsI)bqeLKK6p zzX+^g2RqoZE@mYKki|P_!3tHJ;<1j6Y-1-&ibYtXuM;SQAtb@s&U*H - - - - Name - -

    sin()

    - - - - - - - - - - Examples - -
    example pic
    float a = 0.0;
    -
    -float inc = TWO_PI/25.0;
    -
    -
    -
    -for(int i=0; i<100; i=i+4) {
    -
    -  line(i, 50, i, 50+sin(a)*40.0);
    -
    -  a = a + inc;
    -
    -}
    - - - - - - - - - - Description - - Calculates the sine of an angle. This function expects the values of the angle parameter to be provided in radians (values from 0 to 6.28). Values are returned in the range -1 to 1. - - - - - - - - Syntax - - - -
    sin(rad)
    - - - - - - - - Parameters - - - - - - - - - - - - - -
    radfloat: an angle in radians
    - - - - - - - - Usage - - - - Web & Application - - - - - - - - Related - - - - cos()
    - - radians()
    - - - - - - - - - diff --git a/reference/size_/index.html b/reference/size_/index.html deleted file mode 100644 index df963ea..0000000 --- a/reference/size_/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -layout: withcc -title: size() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    size()

    Examples
    void setup() {
    -
    -  size(320, 240);
    -
    -  background(153);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  line(0, 0, width, height);
    -
    -}
    DescriptionDefines the dimension of the display window in units of pixels. The size() function must be the first line in setup(). If size() is not called, the default size of the window is 100x100 pixels. The system variables width and height are set by the parameters passed to the size() function.

    - - - -Employ numeric values in the size() statement, and then use the built-in width and height variables inside your program when you need the dimensions of the display window.

    - - - -Rendering graphics requires tradeoffs between speed, accuracy, and general usefulness of the available features. None of the renderers are perfect, so we provide multiple options so that you can decide what tradeoffs make the most sense for your project. We'd prefer all of them to have perfect visual accuracy, high performance, and support a wide range of features, but that's simply not possible.

    - - - -Again, the size() method must be the first line of the code (or first item inside setup). Any code that appears before the size() command may run more than once, which can lead to confusing results.
    Syntax
    size(width, height)
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    widthint: width of the display window in units of pixels
    heightint: height of the display window in units of pixels
    ReturnsNone
    UsageWeb & Application
    - diff --git a/reference/smooth_.gif b/reference/smooth_.gif deleted file mode 100644 index 5a9b4ad780fd5763d74552b29fa22778b4aaebef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2062 zcmV+p2=VtvNk%w1VT1sL0K@9@DH(b3WU{rzHMV)XR%_V)Jj^77{9 z=HlYw0002*@9){!+0@k3-{0TX*4EtI+?SV^@bK{J>gwd=SB zqEYYvz@TtQEE41ejE#)seNH$Iff9ok3!R>yprN9pq@|{(sHvV8 zgLw{oH35MToSha5xVgH!yuH4^z`?@9#0nOxkrI=YH=4D#xB}AC)YaD4*xB0K+}+*+ zxyK8v%CD6HvJkwj+cm&?K&ywlc=PJr%eSxJzkmY^2CVgGT7KXbL^Ah)z()WLM*c+Lp@Zeim@{kM z%(=7Y&!9tx_JF{!)5I5)!BQaCXWhyjKFFR;ySDAyxO3~?&Aaz*%cKpftzc}y#y(a7 zNTzK0LxJbd8AzW_y}I@5*t2Wj&b@o~;0Y+KRiM~yW2rD(V0j#k2%w1;Uby0oI9k`DhakoXA&JhlS7VMu=D6dF4vP5W zj6$MVcvs7T6_~KBmXyiDQ=OCW{MB3FDV) zhRLRlZ|1q(nR7l^XNh9sspp_N#_6S>5dwNAp^R3?XOdPbI%K1iK3XN1l4eOMp_ZnZ zXpoC;%4nx_eu`zAq7F(bqClQ1XsU0ns^p)bP6}(DvPN2~rni=vE2g`m+N-aIqFHLI zfessMv3<^JYO=}_+aZ#d(&}pew9>jLC#1k$i|v-bS_|#BP=@<#sN_CrF0$yROXRw1 z+Ul;6%yKJkyWeVHzytwU$iV;;7@z@{^;UbXy!6$mFs}w?FaQSylvv{jT1}9FnFV{w zF2eCG>@mafWkA3NcYa*q02j*#ubmuwXY$LhzBj=EFnf%E0V-#FY`h?ES98tqX)r(s zKYRRdd@E-vYH3u(i<}Oz>XP!N#oJ*IaKm0oo?x z+#T88GR?Nh+GX&;+#Y{0Fn4f|%N^byYZpKPfG;dI-#W9(^U_)u?lE=-5bn6bDQnj^ zzKu`bG6O?vUgP1GC+;l&){I~0`NG#BaJq#HAYS#Mqc3i@b*po1K} zYya+ccD!dz-S07b{X6Kpi>_Cj&a&~-A^$4Pzdx|2^WFNLIqubg zkGuHSYYY4H=40o5b;{!&!T8uW3qR(j|88CIxU(Md$ak;a9nXK&nSknW$GqzluXNTK zkOU`4!3tWC1J=pF1vkjS0Tp0)&C8#?4#vIdK<9)gOrZ)@h@Azj@P#l$Ap%_IzU;+r zdl1x-Xm)5B>`Z`%JN$qE2Pnd;$u2=a6b*JV0GlL!281E3q5jIpKkS(0iZjfP0Bu_MBV0)Pyp zAO}gvL3(Fqg-oO(De%Siy>W^KEMax_agX;5fRgkG0M){1L>!VaJD8kDdVc;MJ0otg_BKFaf2s(v^GBANt zpbTTi+!-?6rLPGLfEE|HKmY=kO8PwTlk?ipD#sYkca3wG(}|;XvQwSsoaQ^D z6i=mrbDlYiruOWKPkQR}hWzYjhTJJo1QE2L20AE0y;;w)EtFvYjH4tUx<{)WGoTcm zk3us#wuVCgkE0!pC>7-hQU`i8ekH{pCok&Il!kPr(!{7sammM+wsfX6wWv)$iqk0O zvXe6HsZVRV&zlN$s5&hwPmfBSjWTsQPJL>9PFlsMM%AiRC23Eu%2ci%)vH4NruW9` zxb_s_17ansTG?h+w0cxPYmMvNAa+)`nW%$!&8uGb%2&KT$E_kwPhHmYoW2_Nu!ub@ zbkJ%a;UrZ_%1Km-Vo2G_TK2M-&Fo@<(;@LZmNh>jQEYre+R~c#w5XL0XB|tNV;rY3 zkBN+HnB&CS+V-}#4Gw-zL!Q*&1hyc7&}=C)nBp4uxX4ZJT?&IA4`HNFjj762TvHb= zTKBq(*v+n2(Bh#fwPh+g0WD;Dvc~e7_q^yeN>kLr52&OjL - - - - Name - -

    smooth()

    - - - - - - - - - - Processing.js Behavior - - Processing.js always renders in smooth mode. This is a limitation of the HTML5 Canvas element. - - - - - - - - Examples - -
    example pic
    background(0);
    -
    -ellipse(30, 48, 36, 36);
    -
    -smooth();
    -
    -ellipse(70, 48, 36, 36);
    - - - - - - - - Description - - - - Draws all geometry with smooth (anti-aliased) edges. This will slow down the frame rate of the application, but will enhance the visual refinement. - -

    - -Starting with release 0124, when using the default (JAVA2D) renderer, smooth() will also improve image quality of resized images. - - - - - - - - Syntax - -
    smooth()
    - - - - - - - - Parameters - - - - - - - - - - - -
    - - - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - noSmooth()
    - - size() - - - - - diff --git a/reference/sort_/index.html b/reference/sort_/index.html deleted file mode 100644 index 94368a8..0000000 --- a/reference/sort_/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: withcc -title: sort() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    sort()

    Examples
    float[] a = { 3.4, 3.6, 2, 0, 7.1 };
    -a = sort(a);
    -println(a);

    -
    String[] s = { "deer", "elephant", "bear", "aardvark", "cat" };
    -s = sort(s);
    -println(s);  // Prints aardvark, bear, cat, deer, elephant on separate lines

    -
    String[] s = { "deer", "elephant", "bear", "aardvark", "cat" };
    -s = sort(s, 3);
    -println(s);  // Prints bear, dear, elephant, aardvark, cat on separate lines
    Description -

    Sorts an array of numbers from smallest to largest and puts an array of words in alphabetical order. - The original array is not modified, a re-ordered array is returned. The count parameter states the number of elements to sort. - For example if there are 12 elements in an array and if count is the value 5, only the first five elements on the array will be sorted. - As of release 0126, the alphabetical ordering is case insensitive.

    Syntax
    sort(dataArray)

    -
    sort(dataArray,count)
    Parameters - - - - - - - - -
    dataArrayString[], int[], or float[]
    countint
    ReturnsArray (the same datatype as the input)
    UsageWeb & Application
    Relatedreverse()
    diff --git a/reference/specular_.jpg b/reference/specular_.jpg deleted file mode 100644 index 8127d3088cc2c0b091e2b1ea53db43cf3dd42c40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4419 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 - - Name -

    specular()

    - - - - - - Examples -
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -background(0);
    -fill(0, 51, 102);
    -lightSpecular(255, 255, 255);
    -directionalLight(204, 204, 204, 0, 0, -1);
    -translate(20, 50, 0);
    -specular(255, 255, 255);
    -sphere(30);
    -translate(60, 0, 0);
    -specular(204, 102, 0);
    -sphere(30);
    - - - - Description - -

    Sets the specular color of the materials used for shapes drawn to the screen, which sets the color of hightlights. - Specular refers to light which bounces off a surface in a perferred direction (rather than bouncing in all directions like a diffuse light). - Used in combination with emissive(), specular(), and - shininess() in setting the materal properties of shapes.

    - - - - Syntax -
    specular(gray)

    -
    specular(color)

    -
    specular(v1,v2,v3)
    - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - -
    grayint or float: number specifying value between white and black
    colorcolor: any value of the color datatype
    v1int or float: red or hue value
    v2int or float: green or saturation value
    v3 int or float: green or brightness value
    - - - - Returns - None - - - Usage - Web & Application - - - - - Related - ambient()
    - emissive()
    - shininess() - - diff --git a/reference/sphereDetail_/index.html b/reference/sphereDetail_/index.html deleted file mode 100644 index 0631075..0000000 --- a/reference/sphereDetail_/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: withcc -title: sphereDetail() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    sphereDetail()

    Examples
    	
    -void setup() {
    -  size(100, 100, P3D); 
    -}
    -
    -void draw() {
    -  background(200);
    -  stroke(255, 50);
    -  translate(50, 50, 0);
    -  rotateX(mouseY * 0.05);
    -  rotateY(mouseX * 0.05);
    -  fill(mouseX * 2, 0, 160);
    -  sphereDetail(mouseX / 4);
    -  sphere(40);
    -}
    -
    DescriptionControls the detail used to render a sphere by adjusting the number of vertices of the sphere mesh. - The default resolution is 30, which creates a fairly detailed sphere definition with vertices every 360/30 = 12 degrees. - If you're going to render a great number of spheres per frame, it is advised to reduce the level of detail using this function. - The setting stays active until sphereDetail() is called again with a new parameter and so should not be called prior to every sphere() statement, unless you wish to render spheres with different settings, e.g. using less detail for smaller spheres or ones further away from the camera. - To control the detail of the horizontal and vertical resolution independently, use the version of the functions with two parameters.
    Syntax
    sphereDetail(res)

    -
    sphereDetail(ures,vres)
    Parameters - - - - - - - - - - - - -
    resint: number of segments (minimum of 3) used per full circle revolution
    uresint: number of segments used longitudinally per full circle revolution
    vresint: number of segments used latitudinally from top to bottom
    ReturnsNone
    UsageWeb & Application
    Relatedsphere()
    diff --git a/reference/sphere_.gif b/reference/sphere_.gif deleted file mode 100644 index 7f7a00b308ba43a352f14d2ce68d7b040827fac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2034 zcmdUu2UnAa0zf~q#|McJh6)-`BCD0ML=cV8hh?dt#RU}+m4a4~3QDDBunCZay+3vc zfrOc`ld!|Ipnw9RB2@%SIf4{N-s{hJ_ZQrA?ztyioNW(Z2>=3sB>)&59UU1N86F-U z8X8h46oZ3<0|Nv7{r!D?eZ9TCJv}|$-Q9AzTqcuArP8jhuFlTRj*gD@_V%{6w$|3x zmX;QYL?RZ8o12@PnwlCL8ygxL>g((4>gq%ykx(eCt*x!8sSyYS)z#H}KEJA}ipS$s zR#sM2RFs#Omz9;3mX?;3loS^iLl9I{R8&}4SWr-qpP!$XmzSHHo0F51ot>SPm6e&9 znURr^o}QkTmd53BIUEj~%}z~CO-V^fPEKaASV>7qiHV5`2?=p=aj~(nOePcff57Zt z$$wh_XeABCU`EHp#>FQjCb5!JQrR4CT6#uiR(4KqUVcGg5ma1KT2@|B$*ba53u!l4gM)ZHsH)mUR3~Ze?Bil)o?@`rA#ju+pU~2o zVqwv!cPr@kv-88Fk0vy=ckTT%4u$;k_3OL&`)9_%TwAQh%C!aPHt`sYh^9tk#%a>q zsD0$K1NzaOFa#=I*Z7Wq7Y)6zBmX0HpEbD4mL}1|?e(InW>Ef61 zqm=Smk@?C$Q|F1lq9-E3a~1IKNzkhQTi4ec^vt1lmnM zUH3S&j1bMfqBD6p$je9%iuh{!!3D@Q!&_cn!Lp3q@cYfs6-jaTKk8DUdV_&j%)Qxs zKl^Uz%ii;eI<6O-3a!61EuB+aUL@r&7*U>uLv-jR?pxhN1q}Vhn5!Sf4d9l-WE8ar zh1bYMkIX1A4=97BPmFi@CV55NeI%QC#0y`yz*Mm%ot z70#)cnt@h8opJqFBR4KjV{SXeb!6*9IWj%c&p6$rk?5p)40=h04N&YKiC?r<&2Vf? z?ms#Eri52pU?L$ibJk60G`r2E-S3YX>Bn-iY}fg-N=(cy)|xTFh@E1mwEa9*G=@8L zsu8HXbPH=NT9bo^%V09tht}?~0bBd!i-S`+8yZql?RFXVo2%7K6L36VwR>fD_Sc>x zO;cf3N=8m8%KvL_C}^_=CBngb?Tz;CVyDgXCOMzM$A9iQcct7({8=vhTQLh*%ms#R z&O9p{aX)^vH0ad0u8)r#yV^%(s{O!ISDC&yVITh7)9ss7OM1lhCjOwRyQ9cd63kR{ z7OYd@E(a!(7o&u=tif#M9sbgr^^5l+v<>Fvc&mle;#ZXil3B~uZMDPCIgZ`oH_o)^ zrCoeiNP|^aOhQgX!D)aFAH$3dzw6((w@ukK;|VnKW2&pIaVDTWQ`JFYp@JZU5K=xq zOe$*UzDzH&D1a`^V7+Kn5x!%ZnrtefxxeH6++V+s#gmm}GAO&CO53v~ZDnLg<~J5F zLWl-?d#(%R9CE9NO7U8enrb`R$sGbKyGt~ z6W;@zUj?S=V69t1HbVyfB7(1sFyJ~ODss}6ZY{54hYD!gbKyN;EIA?IrV1FuV?O`# z9b893Bcp%rJQ?n#s_h$7BqfXmh3ZcTY+i4Uhm!XRabvWszk8qhM zyBzf`H?5Jb5y!?8+AZMOJ=Z9=6Wjv$IF{amA?D--m|DFQ8A-ZM80F!KI$`kLdEXvFEWDo>E*>?RbZeWTz3tKvowsxd(mM3TeIratsopt!I<;l z@(!O{pc|$IVYC}*NK=d{p8ph6pl7T!2Z9&SbMMl diff --git a/reference/sphere_/index.html b/reference/sphere_/index.html deleted file mode 100644 index b19faf2..0000000 --- a/reference/sphere_/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: withcc -title: sphere() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    sphere()

    Examples
    example pic
    noStroke();
    -lights();
    -translate(58, 48, 0);
    -sphere(28);
    -
    DescriptionA sphere is a hollow ball made from tessellated triangles.
    Syntax
    sphere(radius)
    Parameters - - - - -
    radiusint or float: the radius of the sphere
    ReturnsNone
    UsageWeb & Application
    RelatedsphereDetail()
    diff --git a/reference/splice_/index.html b/reference/splice_/index.html deleted file mode 100644 index cb817a7..0000000 --- a/reference/splice_/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: withcc -title: splice() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    splice()

    Examples
    String[] sa1 = { "OH", "NY", "CA" };
    -sa1 = splice(sa1, "KY", 1);
    -println(sa1);  // Prints OH, KY, NY, CA
    -println();
    -
    -String[] sa2 = { "VA", "CO", "IL" };
    -sa1 = splice(sa1, sa2, 2);
    -println(sa1);  // Prints OH, KY, VA, CO, IL, NY, CA
    Description -

    Inserts a value or array of values into an existing array. The first two parameters must be of the same datatype. - The array parameter defines the array which will be modified and the second parameter defines the data which will be inserted.

    -

    When using an array of objects, the data returned from the function must be cast to the object array's data type. - For example: SomeClass[] items = (SomeClass[]) splice(array1, array2, index).

    Syntax
    splice(array,value,index)

    -
    splice(array,array2,index)
    Parameters - - - - - - - - - - - - - - - - -
    arrayboolean[], byte[], char[], int[], float[], String[], or an array of objects
    valueboolean, byte, char, int, float, String, or other Object: value to be spliced in
    array2boolean[], byte[], char[], int[], float[], String[], or an array of objects to be spliced in
    indexint: position in the array from which to insert data
    ReturnsArray (the same datatype as the input)
    UsageWeb & Application
    Relatedconcat()
    - subset()
    diff --git a/reference/splitTokens_/index.html b/reference/splitTokens_/index.html deleted file mode 100644 index 26cb7aa..0000000 --- a/reference/splitTokens_/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: withcc -title: splitTokens() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    splitTokens()

    Examples
    String t = "a b";
    -String[] q = splitTokens(t);
    -println(q[0]); // Prints "a"
    -println(q[1]); // Prints "b"

    // Despite the bad formatting, the data is parsed correctly.
    -// The ", " as delimiter means to break whenever a comma *or*
    -// a space is found in the String. Unlike the split() function, 
    -// multiple adjacent delimiters are treated as a single break.
    -String s = "a, b c ,,d "; 
    -String[] p = splitTokens(s, ", ");
    -println(p[0]); // Prints "a"
    -println(p[1]); // Prints "b"
    -println(p[2]); // Prints "c"
    -println(p[3]); // Prints "d"
    Description

    The splitTokens() function splits a String at one or many character "tokens." The tokens parameter specifies the character or characters to be used as a boundary.

    -

    If no tokens character is specified, any whitespace character is used to split. Whitespace characters include tab (\t), line feed (\n), carriage return (\r), form feed (\f), and space. To convert a String to an array of integers or - floats, use the datatype conversion functions int() and float() to convert the array of Strings.

    Syntax
    splitTokens(str)

    splitTokens(str,tokens)
    Parameters - - - - - - - - -
    strthe String to be split
    tokenslist of individual characters that will be used as separators
    ReturnsString[]
    UsageWeb & Application
    Relatedsplit()
    - trim()
    - join()
    diff --git a/reference/split_/index.html b/reference/split_/index.html deleted file mode 100644 index 70a292c..0000000 --- a/reference/split_/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: withcc -title: split() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    split()

    Examples
    String men = "Chernenko,Andropov,Brezhnev";
    -String[] list = split(men, ',');
    -// list[0] is now Chernenko, list[1] is Andropov, ...

    -
    String numbers = "8 67 5 309";
    -int[] nums = int(split(numbers, ' '));
    -// nums[0] is now 8, nums[1] is now 67, ...

    String men = "Chernenko ] Andropov ] Brezhnev";
    -String[] list = split(men, " ] ");
    -// list[0] is now Chernenko, list[1] is Andropov, ...
    Description

    The split() function breaks a string into pieces using a character or string as the divider. The delim parameter specifies the character or - characters that mark the boundaries between each piece. A String[] array is returned that contains each of the pieces.

    -

    If the result is a set of numbers, you can convert the String[] array to to a float[] or int[] array using the datatype conversion functions int() and float() (see example above).

    -

    The splitTokens() function works in a similar fashion, except that it splits using a range of characters instead of a specific character or sequence.

    Syntax
    split(str,delim)
    Parameters - - - - - - - - -
    strthe String to be split
    delimthe character or String used to separate the data -
    ReturnsString[]
    UsageWeb & Application
    RelatedsplitToken()
    - trim()
    - join()
    diff --git a/reference/spotLight_.jpg b/reference/spotLight_.jpg deleted file mode 100644 index 1b6b9919561f7806b31eba514353c4cfce2728ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2300 zcmb_dd010d7C-O3Y>Gev*kN%nfYSO^DiA?Y3WTs@kR2iHAuOc?3;~OZf+Ll207naT zA@pOjf*VMUA})1=s^Fj%f&*wrT%ckRMp=gs$=sJ9F#pWVAM?wX`+o1dbI&>Nciz2M z*{$pYrk9(i8(=s<9QuKB2v{x|!sIN#fC2zv$n+d{^5pTNeEqk&d2Vq93T4Zks`+#^tX-^r3(QtOT?3QNYjuVlOe7bo2=sXB$ovG^N_s-ajgV3SCBkb&0msS zf?fjojFJ8cDvmQq9;@anNG=t9Mdk%wYFd^gDIrnHwz9LcV{_wDV@2$MtaPa;C7tal z7N$zlQYA4`5z-XY^^vnco0s}!s)QdS6(+KgY%1ITbs+no4mj~-PTx%nwuMx}3`yqP z9fq|7{I~ms82gd|+>qWh+Xb7y89+@IfYIL;Y^ELntknP)*verrR|y1hH&ITEfaMf| zwp0^)F5yI0Sy!q1XTq(3C29g*~ptp5L7yq zLS6J^-sL|Nyi&Sqyu%h=e9fj)p<&S=JT)^zqpao0fY{r8N)=_dJQ0NW=s z?QXJ7pKlyl-v3PirL$`=#JwX24CNcwhi!lQ={<3s{fUy$r`6dj`9>Q6lhoO~yLQ=d zwEKnjrB5Tvn%XbRmu~_%axkn)!!@n6;QHP3K0UPW4(xLRN%rB;?lymp*SXC<`Jl>- zJtmrOMP5Wqq6LdVNAJNvI%8CPJgDYIdcd7C*R{1OIO3_*mu%Yw>-)Q_^p}=8pT!Fc z%}(@v@~&Po!~f3sQIj|*@{CtyX+^Q{-qfS0ljqMKyw9zWQ_=S!Xy z4OzQ8^sAddV2&o^!NSy0tu=e4dm09GzxvT=Z@zdk-%?so(tC4sUFNs<@XI{ml0qG; z9MfuM3*J_+wkks?Yp$I6w$ zai2`0{-8DVOWEqC-OK2LKLk!~-2Ajb3F-uP1XnG|`}PaB^Sd6+zOhX-;Ec zN7=rwXRfvPrwr=x^{5<~MO$^jHcoM6*S3fiX|{t_o}JZo4?C;n&gRkfl=tOhSL0s! zZt>RNalx=6ygVaBDtq>GioHd+Z|2aSYIhaKLM}h{vxd!v)UkxbH(FHQM1I7qf48aj zTa6yM{Lc<|K6iAfdi|TDqTl>MW7q6xAN}n1q1FF1n~_bHd|XvVLL&jttE?4$EdVUBNEd(F7s-8Iend4W}>$B~m>Wth$?Pha! - - Name -

    spotLight()

    - - - - - - Examples -
    example pic
    size(100, 100, P3D);
    -background(0);
    -noStroke();
    -spotLight(51, 102, 126, 80, 20, 40, -1, 0, 0, PI/2, 2);
    -translate(20, 50, 0);
    -sphere(30);
    -
    example pic
    size(100, 100, P3D);
    -background(0); 
    -noStroke(); 
    -background(0); 
    -spotLight(51, 102, 126, 50, 50, 400, 
    -          0, 0, -1, PI/16, concentration); 
    -translate(80, 50, 0); 
    -sphere(30);
    - - - - Description - -

    Adds a spot light. Lights need to be included in the draw() to remain persistent in a looping program. - Placing them in the setup() of a looping program will cause them to only have an effect the first time through the loop. - The affect of the v1, v2, and v3 parameters is determined by the current color mode. - The x, y, and z parameters specify the position of the light and nx, ny, nz specify the direction or light. - The angle parameter affects angle of the spotlight cone.

    - - - - Syntax -
    spotLight(v1,v2,v3,nx,ny,nz,angle,concentration)
    - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    v1int or float: red or hue value
    v2int or float: green or hue value
    v3 int or float: green or hue value
    nxint or float: x coordinate of the light
    nyint or float: y coordinate of the light
    nzint or float: z coordinate of the light
    anglefloat: angle of the spotlight cone
    concentration float: exponent determining the center bias of the cone -
    - - - - Returns - None - - - Usage - Web & Application - - - - - Related - lights()
    - ambientLight()
    - directionalLight()
    - pointLight()
    - - diff --git a/reference/spotLight_2.jpg b/reference/spotLight_2.jpg deleted file mode 100644 index 6b7601b0373370e65e24897c3762c0d19132c5c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2154 zcmb_dX;c$e82x4@31N|D04WrUiHJf$4F<7jBapC*3Wy7+$3hYa6_PYW5pY8VOQE(= zsd_*J^dRm~!CDn$apNEb>%wMn0c$EnQGp{`n!ZVp_^a)Y-Z}H;&iB6My*ux{(Y9$H z04vx($R98qK#VTX{sE-#TG5&mz<>q-QONWN_YM*YSBHi#@(&8}0}KPexjw!EKb!@S zC{roJ0|e~lkx^`;W?%q;q7b4*Ns0xF{UazYlglL3^F5#(Lw8XPgj>_7T<`V$7iuC> zC{@VuPjt@|OOiwY7#H#QWR(Khv3$g>V%F$*8O4CysC|9H?GAeq!|ATSbe5+g`Vdl|}*m^e=8R_v&5bOy}`!wD0#AqZ4-)Ji>Yf`-ua*hnyv z%W-3|eL};cy}v9^R~OyvuYLGJ+W}_C1t$p-2|lbf6hO@Ak|@_{ZLTcFFrmrfCh~IX^H!)dwXFXuOZO!-dri9jK?BkxX=3ULH z0q{&Jztd%ygBO|}6Df|-@jt>&h4anUnls!#y*TyrbNd{9=45$yJ~^IoZ6v$&QOt~; zD}oXwYLDTkf6?cD{dD;ONz3%CFWg=})qMH)#kfGDMFhUm=Iop<Z52>sJ+?LegSVOSMB*MPOhQ??jtZma(+rQ@aqGKK;aToZ*E#>vI_> zh9PT9p=V$81bXI`O#xy~IG@h#)_z)n8A&Cw~v0q)2l~dUL4J;oM+Qx z%$debOqT~WWWQhScM%AP*qyHjA8AgUz7nD=Ntgb zxD4?A0&iekzKIUxf=B?{>Ik%Hc{b=Dun3(<@a|+pbmEv;EKOKb)^PhqnuVFadM*|O%MjiTDB?6XmOZnt}F)ta%e{9sm^S5ZFSq`Bx7T3Ti9u#{-v--U*BRT+tni5p_|-A(t-Mya znswogUD>*Dz9Trzm%TAt;PU!{I>Nd+xhF($pf30KoSoeTQkS8{JDz10r{#XOC^KN> z`tx(=GyT z%KhkRiH950EcXOv54PVZ<)18hdS~*b6=Pq3rI}B%B78e`@b`a>Mu6^XX0#H1VVPrv2Ny$liK#b0mw9YKL7v# diff --git a/reference/sq_.gif b/reference/sq_.gif deleted file mode 100644 index ef755478d82c2e506d905287d802954f8a5aab3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2180 zcmV-~2z&QONk%w1VT1sL0K@WZOkS zmR9foz@TtQEEc ztG-gr)|;|FfPsR8goTEOh>41ej2~=Md1N+zX@Cirn3a$;S1y){Qds_00RmfNU)&6g9pheo0kUFFbUuq zC>z($fyIj$Giuz(v7^V2AVY@iH*R4Adcf@eL42hT1HX$KV#=IJv!>0PICJXU$y4V= zekEUBYA8$uONuZza9GN;sne%Wqe`7hwW?LBF@FXuAMafHZ_(EsO0cZ-c=zwEpU9t2zrOwZ z`19+>AKN^2^ulF_ntSlYx8H#XCaB>5f&KaRpLGGQr(Ju26$rqB7-p#9ehr=nVOJ6k zSYd%1mS|#$9X^N`i0pA^;fXND$RKR~0k#rm@O;Y?8aqS?sf0Mw==BuGIc$ZL_{+t8K8$dU`9i-YN-hmCO=LZn;yQ8>y|m zcFS&z+p6pAyeHN>?!EY;=&q^K^4l+$|LV!Dssqzo@UZ)ansB}g!)mX?5Br-eqyS$l zZ^aqv8!y5f6MS*022Tuf$Q?(VZo?;|yr9Qew(N3(F!O2P%ox_3YOy@`9J0FwjXit#ranJDoJqBMU1r%ToKyanxB4y>-#>#@zL^UsoM&*fzVi+S+Wl z?Kay~7vL(oMvD!AXN1K)_q)8>jdRLo(~b7d#{OL<*nOvM_{)d~yz%1vHLfwmkmtv> z%$3`B`O}%>Dfz*icV6HB=7o#ydEk6IPPysxkxt6%u*XhHa|g(+tl)_gZpZGt_ijh+ z2LLa80l^a=eDHf`3_1W{H1GWLU>q;~^wjrud+L)Xr^NQ$cdtbC;2(g1_{o=yH2^ZC zum1WnjE{i(@QWY+`v6?8yveOKq5uB;_wWDz00f{1-Y38J!OwsNL_ql%cC-sQVFC|~ zpbaDl!3kQhf*7Qr1~0h5407;;6*Qm-M@T{i+RuCqB##PLXqytcP=pJ-S_6kyyc*K* zhQ`aG4Rwga9s00`Jw(6--Zw-c67h%^7~%zDxUw0B?}<>1q7XiOs-nOL{92_T7Yyg(f12**0g(T;SyqaO3fM?Cs*kALhV zAOR@=0kCm!7AmA77s<#*I`WZ_jHDzdNy$haGIxorq$W4X$xe0>0+&=>av(s;QkwFV zs7$3QSINp&y7HB)3}yCO1It?4@|L*FB`CWnL%Rh40>2CeW*kuO3{g0w4xZj zs75I|fQ};nG;JLXsYpjk(vq6=q$o|PN>_@~j}nfhFpa59XDU+)41fYIwGah%%F~|u z^rt`#s!)eY)S?%_>&6s@1M?^{ZYDD_F-W z*0PS(07-?90oKaawz~DLaE+^6=StVQ+EuP;{mxzY%GbX7)vpRbt5n-aI0YE?u!v2p zVi(KU#ya+~kd16(^O_vVTK2M-&8%h>K-t!8_OqZ3ZDb$NSpYoXw5Uz3YFEqJ*1Gn! zu#K&3U0d4O+V-}%&8==pJ6J>(Xt%%(u5f2t7L1|LZevTXa+fPK!SoiB%#E&er< zJav z4zY+we3rS$S2U5@3tu?g;j6g##W0SsjG00g;8@30D_QYN#L|-<`}oH|4swlwa^s=k zD901&3xGw!R?Cw#?-&d-==$P{?RbvS9Uy;2Zg92|U)! z<~F<8&GHaRl^ - - - - Name - -

    sq()

    - - - - - - - - - - Examples - -
    example pic
    noStroke();
    -
    -float a = sq(1);   // Sets a to 1
    -
    -float b = sq(-5);  // Sets b to 25
    -
    -float c = sq(9);   // Sets c to 81
    -
    -rect(0, 25, a, 10);
    -
    -rect(0, 45, b, 10);
    -
    -rect(0, 65, c, 10);
    - - - - - - - - Description - - - - Squares a number (multiplies a number by itself). The result is always a positive number, as multiplying two negative numbers always yields a positive result. For example, -1 * -1 = 1. - - - - - - - - Syntax - -
    sq(value)
    - - - - - - - - Parameters - - - - - - - - - - - - - -
    valueint or float
    - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - sqrt()
    - - - - - - - diff --git a/reference/sqrt_.gif b/reference/sqrt_.gif deleted file mode 100644 index 9d5b9bee20295c1e4a3989d8db6b7d6b9040486d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2206 zcmV;P2x0d}Nk%w1VT1sL0K@FMU?=JN9LWo2cXo12P?irLxO;^N|adwa~x%+k`*?Ck9L`1t+({q*$o z_V)Jg@9)pg&;S4bA^8LV00000EC2ui0E7U9000I5pyyp=Nfv0Tu59bRa4gTWX^Nty zTL@y(z@TtQ6y9(<-$gYkOrFrFbV{vSuh^`18(o!fo*fekn3MtNw0g~MyWjA*d=58D zRo|QiMP^gbe*l4lfQ5pFgolcWjEIhlkByL%fogV5D0wL& z9)ioY&KTzB=;`X~?CtLF@bU5(&cl_jBA&L*=N0PICJX6dC_0V zTAm(e@<5KI%MBcoDqYI7sne%Wqe`7hRqD&0KTmoa>VRJdi!V837)!RS*|TWVs$I*r zty{Mou0H5MZ(ATtB)U@k`f}`nzkmY^9!$8f;lqd%D^@)As!zLtUg`b%V1wVqm@{kM z%z1EQi*&bX1@NkYQKT6FYgoOyhwIm{W6PdRySDAyxNB#KJNM_^l%^?LR?WI~?&HXl zD_{P(w_Tyff>##%w>azN*t2U_eqi?o=cDmTM_qmOhw~qHs9(>%z5Dm@1bf%jYgbQDdOnt$e@XW)bsR!AR$_|c;ugM9V(pM(~M zD58ZJewW{Z7x4Gshv$vx;)@5mcAtqFqNrkd8UP66jy$qgqJmp-=pc?d_GsjeKb{z5 ziVcznVU8dkDW!->*0|)2PZl}lmK0X`Tp9Z{>0yK|a%pCPUT(-_hbxj9;F)mFm!^$k zwh3jKapw8noLAOKWR!Xasve(U3h5+^Zwjg?q2l?OC7_B1%4nEu{)uO#lFFE%l7+50 zuij%ZfYg}t;o75?Y7)@>+Q1CA|NZL!G4@mF;0z50erhaU4v>A^)aK2g=%cZ*npX&0NFthCM%tqE+^36E&sB^|Of|ES; z2a;zlIpv6}%y7}23C6kqxC)Q$chH6p=(xRLrB6Any`c@JfR9fD1a7L5Px<%-FYtH!W!D} zhB(Zj4tL1I9{P}n7K|YSJ@CUK8u5roETRGgpa2B~ad0yH00Npw#VT6yidf8|7PrX7 zE_zXmPqbXorufDGGMe#>X#C;=6tI8=gb{Yb3P2m@NXI(b@s4=RqaOFj$3Euqjn_Ms z9|uXuLK>2g1Xut82mnap6>X7_jHDzdNy$oD@{*X$q$VY)NJus^eCOGuC`U=kQks&H zFofdbG;qpRy7HBni~s>5@JWsVC<3_5r7m~L%U=5Om%t3BFo*feS`rR(#7w3#m&wd# z(lV7|9M%9LFwJUG^P1MoCN{UJ&2Dn@o8Am3ILFz|0hrU6Q8cGI*U8Ryy7QgzjHf*3 zNzZtqlY#Zjr#|<|Pkl;Y0ROzF*CasDf*SOo2u-L$7s}9vI`p9n73k$4O3{j1^r9Fw zfJBRC010&e^rIdPDM&{u(vp(&q$W)%N>{4VmY&oAFx}{|U`o@P+VrM4&8bdz%F~|u zbf+?9kp_NB)S?>os79@T0V)twH&x)NP>rfor%KhTTJ@?}&8k+d+SEH~V5?vat60ZM zR;EG|j)+P?1=PycwYs&faDA&><4V`L+O@8Dy{lgFnt-kXC;@;CtY8OA*uon2u!v2p zVi$W@zoLh+kd3TlCp%dN^!2QP1P}u@%h}F)_OqZ3t!PI}+R~aD?|A zEAyZy-S@u$4zPeBC*JRPj!BO4?|>J~;06~*ycxO{L?#24%Y^R27|!rwnv);>LJ?MG>WzQl|1~at5=tevG(U9gF g#+JVU3lGRb9QqK3rZ>&$PJ8;$TP_2OaS#FkJ586AOaK4? diff --git a/reference/sqrt_/index.html b/reference/sqrt_/index.html deleted file mode 100644 index 91fb52e..0000000 --- a/reference/sqrt_/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: withcc -title: sqrt() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    sqrt()

    Examples
    example pic
    noStroke();
    -
    -float a = sqrt(6561);  // Sets a to 81
    -
    -float b = sqrt(625);   // Sets b to 25
    -
    -float c = sqrt(1);     // Sets c to 1
    -
    -rect(0, 25, a, 10);
    -
    -rect(0, 45, b, 10);
    -
    -rect(0, 65, c, 10);
    DescriptionCalculates the square root of a number. The square root of a number is always positive, even though there may be a valid negative root. The square root s of number a is such that s*s = a. It is the opposite of squaring.
    Syntax
    sqrt(value)
    Parameters - - - - - - - - - - - -
    valueint or float: non-negative number
    UsageWeb & Application
    Related - - pow()
    - - sq()
    - - - diff --git a/reference/static/index.html b/reference/static/index.html deleted file mode 100644 index 17ab3b7..0000000 --- a/reference/static/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: withcc -title: static | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    static

    Examples
    void setup() {
    -
    -  MiniClass mc1 = new MiniClass();
    -
    -  MiniClass mc2 = new MiniClass();
    -
    -  println( mc1.y );   // Prints "10" to the console
    -
    -  MiniClass.y += 10;  // The "y" variable is shared by mc1 and mc2
    -
    -  println( mc1.y );   // Prints "20" to the console
    -
    -  println( mc2.y );   // Prints "20" to the console
    -
    -}
    -
    -
    -
    -static class MiniClass {
    -
    -  static int y = 10; // Class variable
    -
    -}

    void setup() {
    -
    -  println(MiniClass.add(3, 4));  // Prints "7" to the console
    -
    -}
    -
    -
    -
    -static class MiniClass {
    -
    -  static int add(int x, int y) {
    -
    -    return(x + y);
    -
    -  } 
    -
    -}
    DescriptionKeyword used to define a variable as a "class variable" and a method as a "class method." When a variable is declared with the static keyword, all instances of that class share the same variable. When a class is defined with the static keyword, it's methods can be used without making an instance of the class. The above examples demonstrate each of these uses.

    - - - -This keyword is an essential part of Java programming and is not usually used with Processing. Consult a Java language reference or tutorial for more information, such as this one.
    UsageWeb & Application
    \ No newline at end of file diff --git a/reference/status_/index.html b/reference/status_/index.html deleted file mode 100644 index c9c622e..0000000 --- a/reference/status_/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: withcc -title: status() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    status()

    Examples
    // Move mouse left and right and see the text
    -// change in the lower-left corner of your browser
    -void draw() {
    -  if(mouseX < 50) {
    -    status("left");
    -  } else {
    -    status("right");
    -  }
    -}
    -
    DescriptionDisplays message in the browser's status area. This is the text area in the lower left corner of the browser. - The status() function will only work when the Processing program is running in a web browser.
    Syntax
    status(text)
    Parameters - - - - -
    textString: any valid String
    ReturnsNone
    UsageWeb
    diff --git a/reference/str_/index.html b/reference/str_/index.html deleted file mode 100644 index d9f872e..0000000 --- a/reference/str_/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -layout: withcc -title: str() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    str()

    Examples
    boolean b = false;
    -
    -byte y = -28;
    -
    -char c = 'R';
    -
    -float f = -32.6;
    -
    -int i = 1024;
    -
    -
    -
    -String sb = str(b);
    -
    -String sy = str(y); 
    -
    -String sc = str(c);
    -
    -String sf = str(f);
    -
    -String si = str(i);
    -
    -
    -
    -sb = sb + sy + sc + sf + si;
    -
    -
    -
    -println(sb);  // Prints 'false-28R-32.61024'
    DescriptionReturns the string representation of primitive datatypes and arrays. For example the integer 3 will return the string "3", the float -12.6 will return the string "-12.6", and a boolean value true will return the string "true".
    Syntax
    str(data)
    Parameters - - - - - - - - - -
    databoolean, byte, char, float, int, boolean[], byte[], char[], float[], int[]
    ReturnsString or String[]
    UsageWeb & Application
    - - - diff --git a/reference/strokeCap_.gif b/reference/strokeCap_.gif deleted file mode 100644 index 7284afda0bbdd0a7c2aebbf130e7f5cc41f96f79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmV;40e1dJNk%w1VPpVg0HOc@va+%>Gc%c)nR$76a&mHJW@Z2Y0L;wHA^8LV00000 zEC2ui0Av7U000C3c)HyFFv>}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yc&_h!@BhG{ za7Zi~kI1BQ$!snFgMxHQty-_xtky~ZqyPbfcuX#v&*-#T9q^XG>$rSQ7q?5{x_++@ zkN|vvf@^Le1A~Z(Vgw@vijRQ>BZrWcbc`Z^mYakmd7PkRet(~#oOf@frjV#7P+PFE zvRhqFwzs&sy1Tr+wgR)k!dn6_j;n~0F2~4%$}P;ze9tV=(t6Y@*4K2|D%;$0-YMYW zYvU;8=4t3B>g#9iChzcN@+I{3WA`M$!~Xya6!S%}puvL(6DqvrFQCJRQwD~}r%zm? zii!ALpomdUjYbO`JEHkmA*4t%Bq^9YNhalll`O@$lmIj4%m_7E-h`0z - - Name -

    strokeCap()

    - - - - - - Examples -
    example pic
    smooth();
    -strokeWeight(12.0);
    -strokeCap(ROUND);
    -line(20, 30, 80, 30);
    -strokeCap(SQUARE);
    -line(20, 50, 80, 50);
    -strokeCap(PROJECT);
    -line(20, 70, 80, 70);
    - - - - Description - -

    Sets the style for rendering line endings. These ends are either squared, extended, or rounded and specified with the corresponding - parameters SQUARE, PROJECT, and ROUND. The default cap is ROUND.

    This function is not available with the P2D, P3D, or OPENGL renderers. - More information about the renderers can be found in the size() reference.

    - - - - - Syntax -
    strokeCap(MODE)
    - - - - Parameters - - - - - -
    MODEEither SQUARE, PROJECT, or ROUND
    - - - - - Usage - Web & Application - - - - - Related - stroke()
    - strokeWeight()
    - strokeJoin()
    - size() - - diff --git a/reference/strokeJoin_.gif b/reference/strokeJoin_.gif deleted file mode 100644 index 7fa40ec09f169d689cd2aa7b59754f7a84bab11d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmV+m0rdVyNk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0^*F1smtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{s#d3RKeizR4g7z$>cKBY(72F z=yX%9UNc$k_R_U}En(@nQg)sxY2|v-Hohfs;XG2mq`r4 z%ZjTzDZESEtNhCx>^xkCn~Qu5oh)5kUAcYP?VUYM-6g&%R_=O^ZoW=v*A5>qKTlt8 Re~+K9zt7+A{~xaa06T4@gW&)G diff --git a/reference/strokeJoin_/index.html b/reference/strokeJoin_/index.html deleted file mode 100644 index 0df333e..0000000 --- a/reference/strokeJoin_/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: withcc -title: strokeJoin() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    strokeJoin()

    Examples
    example pic
    noFill();
    -smooth();
    -strokeWeight(10.0);
    -strokeJoin(MITER);
    -beginShape();
    -vertex(35, 20);
    -vertex(65, 50);
    -vertex(35, 80);
    -endShape();
    example pic
    noFill();
    -smooth();
    -strokeWeight(10.0);
    -strokeJoin(BEVEL);
    -beginShape();
    -vertex(35, 20);
    -vertex(65, 50);
    -vertex(35, 80);
    -endShape();
    -
    example pic
    noFill();
    -smooth();
    -strokeWeight(10.0);
    -strokeJoin(ROUND);
    -beginShape();
    -vertex(35, 20);
    -vertex(65, 50);
    -vertex(35, 80);
    -endShape();
    -
    Description

    Sets the style of the joints which connect line segments. These joints are either mitered, beveled, or rounded and specified with - the corresponding parameters MITER, BEVEL, and ROUND. - The default joint is MITER.

    This function is not available with the P2D, P3D, or OPENGL renderers. - More information about the renderers can be found in the size() reference.

    Syntax
    strokeJoin(MODE)
    Parameters - - - - - -
    MODEEither MITER, BEVEL, or ROUND
    ReturnsNone
    UsageWeb & Application
    Relatedstroke()
    - strokeWeight()
    - strokeCap()
    - diff --git a/reference/strokeJoin_2.gif b/reference/strokeJoin_2.gif deleted file mode 100644 index daa29a070fe6271f6ed41a0355a4705c3ccdafd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmV+m0rdVyNk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0^*F1smtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{s#d3RKeizR4g7z$>cKBY(72F z=yX%9UNc$k_R_U}En(@nQg)sxY2|v-Hohfs;XG2m7P>G>D%y3LV5%C>*6RAI3VKRQY8#6CC|k>W>zfO_ z%lbpV$aX?=;EslCbF>HRGYD-Ij$Reo@euIRQd>JA?-KTlt8 Re~+K9zt7+A|39w)06R3-gZlsg diff --git a/reference/strokeJoin_3.gif b/reference/strokeJoin_3.gif deleted file mode 100644 index 3ca02623fe43be2e51bdc0c0275abe4a0cae6c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmV+n0rUPxNk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0^^L2smtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{s#d3RKeizR4g7z$>cKBY(72F z=yX%9UNc$k_R_U}En(@nQg)sxY2|v-Hohfs;XG2mqKTlt8 Se~+K9zt7+A{}1p$0RTH)o`YKe diff --git a/reference/strokeWeight_.gif b/reference/strokeWeight_.gif deleted file mode 100644 index 7d49530a691fc85313456032d836cfce88018f58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2204 zcmV;N2xIq0Nk%w1VT1sL0K@BGar=H}+|^76a8y8r+Ho12@8ii+9U*{iFo%*@Q<;^KUKeA3d=v$M18?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+i*NfKzPu59bRa4gTWX^JAH zQwUX(9zP<)YaD4*x3rVpJ>L& zAA-xZ&Kc(C=;`X~?CtLF@bU5)&cl_jBA&L*=N0PICJX6dC_0V zTAm(e`aq7Q%MBcoDqYI7sne%Wqe`7hRqD&0KTmoa%79-7i!V877)!RS*|TWVs$I*r zty{Mot~TgEZ(ATtB)U@k`f{v+zkmY^9!$8f;lqd%D^@)As!zLtUg`bXV1wVqm@{kM z%z1EQi*&bX1@KCNQKT9Gdsw}?hwIm{W6PdRySDAyxNB>OJNM_^l%^?LR=qla@!ZIh zD__nW!ROv~g&qrDS?u59#*a7O&b>Qs1G_gsAB~qf>gyh|8{fgcz5Dm@(3fPDlOXyAbb;uqfkc)v|YQFW;SDByqyR%qdc^(m+yJ^VSy*M9-3 zhvA4Mj;Nt{`!#rhe-Vb5U5PNpNZ^SKZsj3_*G(wnjy$?YV~RGe_~3aG3fSY3JpRa` ziY(@6B$7~;sAP0y^fx4kI!3AGg;RDYQ2_~P8KI&(rgJP+srFLTa zC60|6df)@3mTKy$sHUpws;r_qqnir?Dd?w!ipeRPp3Ye)g}34g>xNV=I%%l9_DW{1 zjP7czuRXk3b2NX`zxHmO1iDI-5#lJt(%r>?zhhhJ8rt_ zCdsa>?xNdgygi<)>Am>wsBfD5_8a5Bl!_{_j06*Vu)NL28Yi^LlDn{p^FCbfzLica zWyRrU3UI~+wkq<-B(s_z$6iJYuYD!A?6SxwHw0f=r;! zM7zwh&lUrXvB4TsEHk(?TPtzX6(-Cr)fiemHP&UKe5TYkbA7bK9n-pWv0@{rb=YaQ z`EsQ0hUh1~{NV?gU=dQc# zWvi@Sb43?FGII+c9emB|Er5XY&_6GI^wAq{{i@VYuRZn2lN~kQ*)1Uc_~e&g{`Kge zYX17`EB}4a#<4H|`03aG!2I$%;Qrn42jIX0{|g`h2Pi-R+Anj3XT9D91X!aR7J}BlF0J$3FV;kAMuM zAO}gvLK^argVZDBjDyHVI`WZ_d?W-000BjQ5CWLYq$W4X$xeFmlb{TxC`b88OZJbH zs7$3QSINpsdXIl+695EcNy}Np;=uD?N*U8Ryx>KFuB-T6U zNzZ!P^PUBW=dKD60ej?xmAbU0Fny^^V+vCBSm35O&8bdz%F~|u z^rt`#s!)Ae)9eiOs7Ot!QkQChq8jG_7J#Z$qe|7OTD7WJy{cBT%GIrUwX0zD>H(Y@ zfCHHItY}TETGz_fwz~DLaE)tQ$tu^n+V!q@&FcZiVmAoF&jWf5tY8QG)&v|N0c1^p zVi(KU#ya+~kd3TlCrjDNI`*&$@W3nmdN#v)_OPJ+tY||^+R>V}w5UC;YE#Qv)h;%% zmW{1!XG`1K!nU@!&8==_d)wXm_P4*aOkX|NKh_xcxX4Yea+k~8<~sMe%MHwCiF>vQ zS@*jC*v+nXx69q`Ue^PEnQjXKv@7qL_q^y$uXa}x-rC4~#nwK?z(SUg1<{(Dt7rF>eu!0xN-~eyvVGx-NST56<3S0QXn|aQD_>-65@WnFu z#juD+JmSWnC`Et3%LTeZoywr*EijI;jAu;avczS;p()#n_3|LFAf+lm4ziGkOys1< zr8gY%(g#+um!s_D$xx26l&3u4xzHuaL7CN($zhtkP(~zR4zrlYOy-{Wq%J@Sl1j$G z;(jRP&2WyhoaYP>hKS}QDuRVL_A!xp`1#L(4s@XF0hBz8KpD)?hN2hE=teu58(IDt e1}r`x3vuW}7?{qqrZ>&$LT9-QD#k$w0027!kf0C% diff --git a/reference/strokeWeight_/index.html b/reference/strokeWeight_/index.html deleted file mode 100644 index 8f10dcf..0000000 --- a/reference/strokeWeight_/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: withcc -title: strokeWeight() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    strokeWeight()

    Examples
    example pic
    smooth();
    -
    -strokeWeight(1);   // Default
    -
    -line(20, 20, 80, 20);
    -
    -strokeWeight(4);   // Thicker
    -
    -line(20, 40, 80, 40);
    -
    -strokeWeight(10);  // Beastly
    -
    -line(20, 70, 80, 70);
    DescriptionSets the width of the stroke used for lines, points, and the border around shapes. All widths are set in units of pixels. This function does not work with the P3D renderer (please see the size() reference for more information).
    Syntax
    strokeWeight(width)
    Parameters - - - - - - - - - - - -
    widthint or float: the weight (in pixels) of the stroke
    UsageWeb & Application
    Relatedstroke()
    - - strokeJoin()
    - - strokeCap()
    - - - diff --git a/reference/stroke_.gif b/reference/stroke_.gif deleted file mode 100644 index 17a863750760ddc46710d1c65b1875deabb83ae0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2414 zcmV-!36b_kNk%w1VT1sL0K@FMdk#l`aS^7{JvgM)*bnwrYW z%HrbUbaZrVY;5M{=DWMQ+1c4;Wo3$ritOy{`1ttI(b0Q*d$Y5%%*@RF{r#-0tn~Es z_V)Jg@9)me&j0`aA^8LV00000EC2ui0E7U9000I5pjVA#Pz7kJu59bRa4gUCX_J+w zV?3rPC7N(ZEEy}K?0DdbV{vSuh^`1%k55AH)T&X1whPzw0g~MyWjA*d`^#_ zso>ELgOa)zX@CHNgn@>GhlPlXij9enjF66zl!9w_Pbqp!7*T8sprN9pq@|{(sHv)} ztfOpEnmJ2nfuat#xVgH!yuH4^z`?@94z6jiD4VsQxCGA6(9zP<)YaD4*xA|yxT43I zCOU)64$l+k=;`X~?CtLF@bU8V6VJDyYOx-nx6bGt00RmfNU)&6g9sBUT(}UOvwNV@ z=ws$@LO=r;Giuz(v7^V2AVZ2AIWpk6hY=0PICJXU$+PFq zi~vtURB3``xtB3Fa9GN;sne%Wqe`7hwW?LBGJ&2XkTTPVas(`5l*xgD*|TWVs$I*r zt=qS7m@{kM z%(?JmjCUmytq@kMQVN1Is8;=>wd>cgW6PdRySDAyvkOq5Ygee=WMMm4PQ98n?&HXl zD_{P(ciz##4V(^KeD(6{*t07?uzQ2^V#k1+E=yhYhw~qLs9(>%z5Dm@Zze?NAAsl`DB*+@(w889_2}o7gXH~ZUW65f zC}M>ddY2!Aq>YD~hZzJo;)^gM*xG$2W{4t(D?)f)j6C+pUWp5a*Px2!wFsh*NX7`{ zi9)8>UxzvhnBKyrB%xW}dE}yi4!WVAZ&IqLrEET! zsiu`SiXoVnj;ZCOBPO8gs;su^>Z`EEDr*ApaVn;vrzZMh0s;2w>#x8DD{QZ{?kQ@G zq;~2iqHv}n*XhTKj0JxJs(4v)`uMEwzG*dnLA} zn%k_1+^TEuu%a_yYwQm+UQ2GmsM6c;#UB)` z-ocUn2{6VDYs|#HYxcXW!svo5u*f`coGr>0tGsf!5Ig$r#3xrAV!$$|%QB-ik6JRq zIiDMI&+7i{a=aeH$TQOG(yTzl<0^Y7%sWG!wA57JY;~^lX07$NN|RhC)1Nv$HrZU; z%rDVb>s;Z}YvbFt&}Wz1^ul#ZTXxXM4&8CueD@9Q-&4CS_{(xrNVnm?BHs1ega4~G z3S2MGVBD)F7em$Zi{>B zx>s#-+@8Pwd+rY>K03U$n|}N8=c&H?@L>B6{j|Y*O?~elUyq*j!oyuXz}1y+{`u&q zk3RU?i_g8&>c=nt{Kc_PIpf7U-r4?)*}r({SeqOF28bB{v5t7IbKF%H$UvzWkanF* z;Di$3lL}feCl6#^1h++!4tnq-8N?X^x5bbWn(!bY)3fk7qm} z*#1b!LK^arg-n1K7Rkse@DY)PG|Tct2(|~b(UJwgq$V%P$xL<%=D4#&eQJS)p zs63@AQ<=&D@Ntu#^yC8`5J(8NZkCpuWhQgU%U$|Xm%w~LD33r)86=>W!NeskH)l%( zD)X7pjHWabfP-pU^P1SqrZ%g2Oldx|mKwaJH^(_nS}Eb2=uD?N*U8RydZ3%qyubr4 zZ~<^qQeO1Tr#|<|&wl2Uj8qJ$YZBm3e%e!oZz`xl7y3v#`thL-jc6Yw3Q>XiWh#K0+VrM4&8bdz%F~_- zK&AuGzyJpD(jcN|s7Ot!QkTlqraJYhP>rfol`2%E7Bz`e&8k+n%GItCm6_orUIx5M z*0P%QsR=*{Y_aE+^6=StTEWB{!9j8a|q%GbX7m91&~o&XXs*uoO_u!c=6 zVi&8}#xnM?j*Tp2CmUJ7M$o62&8%iO%h}G>)UvJftY}9|TGC1Yvi%EPQ8Qb{AIL>j78!+Mqca&KT2(pleOynXP z`N&94vXYm~WF*u015J*yl&4JPDmQ?}8L+aJx6EZGN8rg32(y^SOy)A1`OIievzph; zW;BDj&2WyhoaapEH`Dpfc+PX2B{{pWg3WudQ;lGJ3{z$S8g;7)455vB=s*j4zVwUh zw4^6Z=}9Ykl5CRBidasoV% z0;3KMS5VZK{%qhfwhp$iG4mJ`od^(n0gG6qa~iog``OTrwzSbgmt5neWF}ZZMT9dJ zr8Mx{;10LApHi3J*a$^NIf_NN&Fl-h``z%4cTIqDmkbpH-4rR!MLx*ye*6319x=(a zyAlh2DElQROt``q&TxY`gd6upw+F`260nrUh8WMd#$RZUhzqGG6Q_8^E$+jToBZS` g?|8)ZvKJlDLgXViqReMb^O|?V8{g1}2SNY - - - - Name - -

    stroke()

    - - - - - - - - - - Examples - -
    example pic
    stroke(153);
    -
    -rect(30, 20, 55, 55);
    example pic
    stroke(204, 102, 0);
    -
    -rect(30, 20, 55, 55);
    - - - - - - - - - - Description - - Sets the color used to draw lines and borders around shapes. This color is either specified in terms of the RGB or HSB color depending on the current colorMode() (the default color space is RGB, with each value in the range from 0 to 255). - -

    - -When using hexadecimal notation to specify a color, use "#" or "0x" before the values (e.g. #CCFFAA, 0xFFCCFFAA). The # syntax uses six digits to specify a color (the way colors are specified in HTML and CSS). When using the hexadecimal notation starting with "0x", the hexadecimal value must be specified with eight characters; the first two characters define the alpha component and the remainder the red, green, and blue components. - -

    - -The value for the parameter "gray" must be less than or equal to the current maximum value as specified by colorMode(). The default maximum value is 255. - - - - - - - - Syntax - -
    stroke(gray)
    -
    -stroke(gray, alpha)
    -
    -stroke(value1, value2, value3)
    -
    -stroke(value1, value2, value3, alpha)
    -
    -stroke(color)
    -
    -stroke(color, alpha)
    -
    -stroke(hex)
    -
    -stroke(hex, alpha)
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    grayint or float: specifies a value between white and black
    alphaint or float: opacity of the stroke
    value1int or float: red or hue value (depending on the current color mode)
    value2int or float: green or saturation value (depending on the current color mode)
    value3int or float: blue or brightness value (depending on the current color mode)
    colorcolor: any value of the color datatype
    hexint: color value in hexadecimal notation (i.e. #FFCC00 or 0xFFFFCC00)
    - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - - - noStroke()
    - - fill()
    - - tint()
    - - background()
    - - colorMode()
    - - - - - - - diff --git a/reference/stroke_2.gif b/reference/stroke_2.gif deleted file mode 100644 index a78e2cde50ed2cd1026be86488a4511c07dc51da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2508 zcmV;-2{ZObNk%w1VT1sL0K@BPju^78Wf`uc-| zgUZUv;^N|TbaZTNZ06?X+1c4;Wo4V2n~I8x?Ck9L`1sM$(R+J)%*@RF{r#-0tn~Es z_V)Jg@9)me&j0`aA^8LV00000EC2ui0E7U9000I5pl6NbU=3)hu59bRa4gUCX_Jy}K?abhbV{vSuh^`1%k55AH)T&X6+p~_w0g~MyWjA*d`^#_ zso>ELgOa)#X@CNPgn@>GhlPlXij9enjF66zl!9w_Pbqp!7*T8tprN9pq@|{(sHv)} ztfOpEnmJ2nfuaw$xVgH!yuH4^z`?@953XsjD4VsQxCYM8(9zP<)YaD4*xA|!xT43I zCOU)656=|m=;`X~?CtLF@bU8V6wkMzYOx-nx6bGt00RmfNU)&6g9sBUT(}UOvwNV@ z=ws%OLO=u0PICJXU$+PFq zi~vtURB3``xtB3Fa9GN;sne%Wqe`7hwW?LBGJ&2nkTTPVat177l*yrj*|TWVs$I*r zt=qS7m@{kM z%(?JmjCUmywGdXU(h7nzs8;=>wd>cgW6PdRySDAyvkz3DYgee=WMMm4PQ98n?&HXl zD_{P(ciz##5u6TOeD(6{*t087uzQ2^V#k1+E=yhYhw~qLs9(>%z5Dm@Zze?NAAsl`DB*+@(w889_2}o7gXH~ZUW65f zC}M>ddY2!Aq>YD~hZzJo;)^gM*xG$2W{4t(D?)f)j6C+pUWp5a*Px2!wFsh*NX7`{ zi9)8>UxzvhnBKyrB%xW}dE}yi4!WVAZ&IqLrEET! zsiu`SiXoVnj;ZCOB6Z`EED(kEOz{jbWhMt<}ivR@Z>#x8DE9|ho0>Fu& zqSi=ir*0w&XR5stEA6z@qF3wxp2-FYDW=Zy7;UxSh8v)<*#1DHwx#AO>8{X<>u$K$ z)|c(0>3Z62jNiVi@37>`Yp$bLZfokg&xWY#z6c8&FS7rRx+bpn;>l~m6c>B!kMjmx zZ?h7&Tk*#WW8AQ^4;LCSsv_q5F~a>ayui8iGJ9yp2CKZXz9Fx7tH~Ur9HPxPyW6tJ zF9W^8yPW_~#T(Z+I_v>RX&h>VuECy6+#@9(nL24}Y@dT_5lJ=86k0`^3mAOgiVxw@vxmG4`JQxWL2g`S+kt zJwC9?myWyhNy8oe`s|l)bnezOUZM1~x6i%#u+ts%cn5&$81R4yOrQc0m^}LlFL1=W zp79n)!3tWiIR2|%1ocP2&Ulb9)HB`2Dknb*0pNouL`()n__@?U>nbpeVN@y*!uLV& zc_o|>0O;bA9{TVmE41P1a2P%SkmQI+^vDKk*uBYV4Se{r3qz(zMS>t8h)q1-6Vvx1 zRo#UiU<~6wmOky_d20B#f{2@kLUQkt@q zs63@AQ^`sI)Zvw|gaZIpsmcS`GL(!Qr7d^K%U=5Om$n3e7luj9D$Ej?y~O1Rb(H~R zI`f&rgn~4mK+S1dvzpkvrZ%&g&0{_@0LpCPn*wlv0Fcw1ji^K?N>Pa#O9>dw zs75!+(T;lmR8SNCo%-4LJ3wP>rfor|ML1KJ%(r&FTS+O4X zul+1+XIoj;uC}yqv#oA-%iG@i_P4;rEx`yN0pc3BxX3-Oa+Ay4y(0#6Sqf1@q z65zW3!i~~(x69q`diT5F4X=2|OWyK|H@j~#uX@+Z-uA9{0tA3BdYv_a`r7xt_|30= z_sie@`uD#8=I?w16yO3I_`nEGumT2*9tBLm!4Q71gdN`T;Rt*4ziGkOynXP z`N&94vXYG~<0U)!$xx26lz9x(WfH6b7r?TXv&`i!d%4SC{<4_EOy)70xy)!ba|3$Z zfHu4N&2WyhoaapEI@|fqc&0O(^UUWy`}xm)cEFmeEKX-R;LwOpw4xWy=tevG(U6Y+ zw4@!~<4Ifk(wNS)rX3*TO?&#&pq6w5dK`gLoBGtKPPM96&FWUW`qi*zHK}7w>ss6T z*0`QEu6NDrUf0?zi?ni-=tn=*2!_!4d=s(Px0=8p`=QEScJ`V*-wRs%+StxEww)bp zHc4kiEYh~P$4%}F9@{(KOOc(zUG8?fo7~67P{1e?oo|CXh4{|5zPVEYbccp3DC$dp zHgK7J8~osyd5nop1c<$WMJ&=eja(*9@rqmg;%MO^Xz=nd6EL76!WoNFWJvOooBZTY zsY`Ecgd(FH#Ude(_z!1J^P1bdCP4Y(9=oyRY1DgyH= zI{oQTk9t8Ivh$?tVH_<1OKH}~^{#tejP@u-(u?AOWn^9JbWFS2*Ut8^i@hs*(E%;6 WP7XiX{qA_rdoGM&hP}ul1OPku;XLX9 diff --git a/reference/subset_/index.html b/reference/subset_/index.html deleted file mode 100644 index 1cc8bdc..0000000 --- a/reference/subset_/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: withcc -title: subset() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    subset()

    Examples
    String[] sa1 = { "OH ", "NY ", "CA ", "VA ", "CO ", "IL "};
    -String[] sa2 = subset(sa1, 1);
    -println(sa2);  // Prints NY, CA, VA, CO, IL
    -println();
    -String[] sa3 = subset(sa1, 2, 3);
    -println(sa3);  // Prints CA, VA, CO
    Description -

    Extracts an array of elements from an existing array. The array parameter defines the array from which the elements will - be copied and the offset and length parameters determine which elements to extract. If no length is given, elements will be extracted from the offset to the end of the array. When specifying the offset remember the first array element is 0. - This function does not change the source array.

    -

    When using an array of objects, the data returned from the function must be cast to the object array's data type. - For example: SomeClass[] items = (SomeClass[]) subset(originalArray, 0, 4).

    Syntax
    subset(array,offset)

    -
    subset(array,offset,length)
    Parameters - - - - - - - - - - - - -
    arrayboolean[], byte[], char[], int[], float[], String[], or an array of objects
    offsetint: position to gebin
    lengthint: number of values to extract
    ReturnsArray (the same datatype as the input)
    UsageWeb & Application
    Relatedsplice()
    diff --git a/reference/subtract assign/index.html b/reference/subtract assign/index.html deleted file mode 100644 index a82aea7..0000000 --- a/reference/subtract assign/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: withcc -title: -= (subtract assign) | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    -= (subtract assign)

    Examples
    int a = 50;
    -
    -int b = 23;
    -
    -a -= b; // sets "a" to 27
    DescriptionCombines subtraction with assignment. The expression a -= b is equivalent to a = a - b.
    Syntax
    value1 -= value2
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    value1int or float
    value2int or float
    UsageWeb & Application
    Related+= (add assign)
    - - - (minus)
    - diff --git a/reference/super/index.html b/reference/super/index.html deleted file mode 100644 index 7604470..0000000 --- a/reference/super/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: withcc -title: super | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    super

    Examples
    // This example is a code fragment, 
    -
    -// it will not compile on its own.
    -
    -
    -
    -// Create the DragDrop subclass from
    -
    -// the Button class. Button becomes
    -
    -// the superclass of DragDrop.
    -
    -class DragDrop extends Button {
    -
    -  int xoff, yoff;
    -
    -  DragDrop(int x, int y) {
    -
    -    // Runs the superclass' constructor
    -
    -    super(x, y);
    -
    -  }
    -
    -  void press(int mx, int my) {
    -
    -    // Runs the superclass' press() method
    -
    -    super.press();  
    -
    -    xoff = mx;
    -
    -    yoff = my;  
    -
    -  }
    -
    -}
    DescriptionKeyword used to reference the superclass of a subclass.
    UsageWeb & Application
    Relatedclass - -
    extends
    - - - diff --git a/reference/svg.jpg b/reference/svg.jpg deleted file mode 100644 index 9458f445b0c93ac3a158ef2a3b9d411bfebf2225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6937 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 diff --git a/reference/switch_/index.html b/reference/switch_/index.html deleted file mode 100644 index 5234737..0000000 --- a/reference/switch_/index.html +++ /dev/null @@ -1,214 +0,0 @@ ---- -layout: withcc -title: switch() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    switch()

    Examples
    int num = 1;
    -
    -
    -
    -switch(num) {
    -
    -  case 0: 
    -
    -    println("Zero");  // Does not execute
    -
    -    break;
    -
    -  case 1: 
    -
    -    println("One");  // Prints "One"
    -
    -    break;
    -
    -}

    char letter = 'N';
    -
    -
    -
    -switch(letter) {
    -
    -  case 'A': 
    -
    -    println("Alpha");  // Does not execute
    -
    -    break;
    -
    -  case 'B': 
    -
    -    println("Bravo");  // Does not execute
    -
    -    break;
    -
    -  default:             // Default executes if the case labels
    -
    -    println("None");   // don't match the switch parameter
    -
    -    break;
    -
    -}

    // Removing a "break" enables testing
    -
    -// for more than one value at once
    -
    -
    -
    -char letter = 'b';
    -
    -
    -
    -switch(letter) {
    -
    -  case 'a':
    -
    -  case 'A': 
    -
    -    println("Alpha");  // Does not execute
    -
    -    break;
    -
    -  case 'b':
    -
    -  case 'B': 
    -
    -    println("Bravo");  // Prints "Bravo"
    -
    -    break;
    -
    -}
    DescriptionWorks like an if else structure, but switch() is more convenient when you need to select between three or more alternatives. Program controls jumps to the case with the same value as the expression. All remaining statements in the switch are executed unless redirected by a break. Only primitive datatypes which can convert to an integer (byte, char, and int) may be used as the expression parameter. The default is optional.
    Syntax
    switch(expression)
    -
    -{
    -
    -  case label: 
    -
    -     statements          
    -
    -  case label:          // Optional
    -
    -     statements        // "
    -
    -  default:             // "
    -
    -     statements        // "
    -
    -}
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    expressionbyte, char, or int
    labelbyte, char, or int
    statementsone or more statements to be executed
    UsageWeb & Application
    Relatedcase
    - - default
    - - break
    - - if()
    - - else()
    - diff --git a/reference/tan_.gif b/reference/tan_.gif deleted file mode 100644 index 193e2086d0287d1541e65d179a475dee90f75871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmV-Q0k!@|Nk%w1VPpVg0Du4h0002Y%*-MA1ONa4001li0001F0Av6F0{@JUsmtvT zqnxzbi?iOm`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{?7x{gf!yJC_~1SFy_nYg0`eA z>dLCZrnD&T$!h|a#3b^_EJBCWAoj=Yfp_E_`o^xoXY?5U#cu&vAxJ?uVJLwZp$NhF z;OGF^Aju#^nP7PoaEXwaw5iE?;JF0)Ng4$znz^c4%KGGb35&WVYkGBC8>Wlf)k`}D zd|Nggyt`+te7xMu{OlYJTNzypjcnbUHC&~g8=N{lMI4K5YyOM=<$4D*Z$2IKsFjvHF6Kz%eb#YxrULhNW0r?0rq{xvZ cOPV~1GNsCuEL*yK2{We5nKWzK - - Name -

    tan()

    - - - - - Examples -
    example pic
    float a = 0.0;
    -float inc = TWO_PI/50.0;
    -
    -for(int i=0; i<100; i=i+2) {
    -  line(i, 50, i, 50+tan(a)*2.0);
    -  a = a + inc;
    -}
    - - - - Description - -

    Calculates the ratio of the sine and cosine of an angle. This function expects the values of the angle parameter to be provided in - radians (values from 0 to PI*2). Values are returned in the range infinity to -infinity.

    - - - - - Syntax -
    tan(angle);
    - - - - - Parameters - - - - - -
    anglefloat: an angle in radians
    - - - Returns - float - - - - Usage - Web & Application - - - - Related - - cos()
    - sin()
    - radians()
    - - - diff --git a/reference/textAlign_.gif b/reference/textAlign_.gif deleted file mode 100644 index 670374593f2981744bc55e9a2719641bf4104837..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3uZNk%w1VPpVg0J8u9_4W1n`T6bb?fm@w&CSi++}!Bs=M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$^0Y?h9<4x7)WPS>y<+wWV+r8A$u(h z6o3F>P?#V94hH~15ex)z2j!jDHmOt&3l41(4GsYT4hIwmd2x-1hki^6gmF}K4+L=u zgAQR2jsgmh6P;vIoC0tLdJ+tfoDK>Tj%@{n50-kVQj4qyex-V|wGy`$pAWuG0{{ZT zj1se+aiPg#aSP2%w|D{+aET5Lk-Fk>165mi1+GyO35s%>$b=UP>u{7?7zqhPgz`tQ zpuvL(6DnNDu;Gs<@f?omCh-GBgk8R56mt=Y88mAD*tmgHug;x3dq}dA0%#jPLx>bj zyZ0zkfJs*@1aiQTTGngVYfTFaW|P5ZmO`)=LV@ zsvdb3ZNSWGKfR*sDM+l5Z$Za)KQ^Lm!a#tfZx&uZPIZgj&<y;^1k!{lc%6h4t;-yg)q=2WCRvy;DHDxsNjMOHt67k5Jo8BgcMe2 T;e{AxsNsejcIe?j5dZ)?F8U)l diff --git a/reference/textAlign_/index.html b/reference/textAlign_/index.html deleted file mode 100644 index bf0389d..0000000 --- a/reference/textAlign_/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: withcc -title: textAlign() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    textAlign()

    Processing.js BehaviorFont support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    -
    Examples
    example pic
    PFont font;
    -// The font must be located in the current sketch's 
    -// "data" directory to load successfully 
    -font = loadFont("EurekaMonoCond-Bold.ttf"); 
    -textFont(font, 20);
    -textAlign(RIGHT);
    -text("word", 50, 30); 
    -textAlign(CENTER);
    -text("word", 50, 50); 
    -textAlign(LEFT);
    -text("word", 50, 70);
    Description

    Sets the current alignment for drawing text. The parameters LEFT, CENTER, and RIGHT set the display characteristics of the letters in - relation to the values for the x and y parameters of the text() function.

    -

    An optional second parameter can be used to vertically align the text. BASELINE is the default, and the vertical alignment will be reset to BASELINE - if the second parameter is not used. The TOP and CENTER parameters are straightforward. The BOTTOM parameter offsets the line based on the current textDescent(). - For multiple lines, the final line will be aligned to the bottom, with the previous lines appearing above it.

    -

    When using text() with width and height parameters, BASELINE is ignored, and treated as TOP. (Otherwise, text would by default draw outside the box, since BASELINE is the default setting. - BASELINE is not a useful drawing mode for text drawn in a rectangle.)

    -

    The vertical alignment is based on the value of textAscent(), which many fonts do not specify correctly. It may be necessary to use a hack and offset by a - few pixels by hand so that the offset looks correct. To do this as less of a hack, use some percentage of textAscent() or textDescent() - so that the hack works even if you change the size of the font.

    -
    Syntax
    textAlign(ALIGN)
    -
    textAlign(ALIGN, YALIGN)
    Parameters - - - - - - - - - -
    ALIGNHorizontal alignment, either LEFT, CENTER, or RIGHT
    YALIGNVertical alignment, either TOP, BOTTOM, CENTER, or BASELINE
    ReturnsNone
    UsageWeb & Application
    Related - loadFont()
    - PFont
    - text()
    - diff --git a/reference/textAscent_.gif b/reference/textAscent_.gif deleted file mode 100644 index e5d3da454c0bcccf98d00f9a58ea3d9d8875883d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1400 zcmV-;1&8`aNk%w1VPpVg0M!5h{{H^(@bK*H?BL+w{QUgr=;+bW(dFgk)YR19-{0fo z+9>**4EkC+3M=*`1ttu_xIu9;raRb&CSi`=H~PB^Wx&-*VotY@9)#o)BXMZFI22YybcN|NsBY%*+4)000000000000000 z00000A^8LV00000EC2ui0Av7U000L6z?^VMEE41ejE#+X7#I=~H8q1( z1_lKM5D)+WI5?k|RGFKdpP{3qQV0kiupbKxssOC5ud%bWw^suLyuDSw!NOC-qPE7z zz{$(Z#m`U3tJ2fW)z(ea%G%r5-QG*w;@{EbNaW%wDjFIT6c!ep?gt0wMHv|r69NJy zC4}g+7a#xw1}Rb~P;lV_9Cq&D$)l&i9zG)a`1u1UFatq@2o*AP*k;qGPY)ijV6kvl zC}%|?L^$~JWkC-fCC|z5B=a?q(o5@Eu^$fonFAAX0)&Dc69a}) zU=;)q5Xvn6jmMya<~33O91caa6AuIx*(Xpx0eNJQLL?DU;e`ui7~c>9TGyb2Lll4# zOGtGylTA78^ivTp;y{*+3j%oKgG)pRq7ZP&MTBlc7yuS6Wuf&~U^p;9q=iO~fMi!j z)Y#+$1m>Ut4yhGUf{8*j2!I4cTu>Vhw++$Bj70p0gqccQ)l&`*fHGa5aOTipheRlc z19N&pz~>Nt9sy_)f`X94Jpf=}1b$^2cSL&OoK=%d;!S#~5hRe{TLC#xfZ!3Jx+ba- zXyVYKsV|`lUy^?=$!HR-zM6xDF@BopqLzl@=~5BY#3T}%s46TI3)K>og<>kZ8?(6L z2(7fkQd@wv9Ac~gfVMeE+Fh;k-C6`(nig?jD4Q73kdwe#dSiu3pn$>(D}=I;5FCUO zfw!TSn}e%3z-q6oFXdarzPX}{1HefLOt8TUEajjP=YA{i5bFXER1uk6R?}q_#9Tpz zmsOigK?T`U=8Yf|5y=TB6lw7g6ib}L1-Y6`KoJAu5V8?1H}G-;GS5sv&F9{Xv(B#Z z?DW$@{2VlxL*FGen=xNqa?Ugw9CpwVE0KwyJQb7)G8M)QoGUw{R^cZ_hJs#fM;HK? zO$Go%Km{To&~^g^003qPbjoe`;dKXacQbi2-nipk`yILDU7uitaSqEb-}?6Z8-M - - Name -

    textAscent()

    - - - - - - Processing.js Behavior - Font support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    - - - - - Examples -
    example pic
    PFont font;
    -font = loadFont("FFScala.ttf"); 
    -textFont(font);
    -
    -textSize(32); 
    -float ascent = textAscent();
    -text("dp", 0, 70);
    -line(0, 70-ascent, 100, 70-ascent); 
    -
    -textSize(64);
    -ascent = textAscent();
    -text("dp", 35, 70);
    -line(35, 70-ascent, 100, 70-ascent);
    - - - - Description - -

    Returns ascent of the current font at its current size. This information is useful for determining the height of the font above the baseline. - For example, adding the textAscent() and textDescent() values will give you the total height of the line.

    - - - - - - Syntax -
    textAscent()
    - - - - - Returns - Float - - - Usage - Web & Application - - - - Related - - textDescent() - - - diff --git a/reference/textDescent_.gif b/reference/textDescent_.gif deleted file mode 100644 index 656667b86d0372e8587914bdda2b99f483f80f07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1403 zcmV->1%&!XNk%w1VPpVg0M!5h{{H^(@bK*H?BL+w{QUgr=;+bW(cIkJ)YR1F<>lk! zgwv*+1cji=G)ub;o;%)^Yi%l_~PQ?@9*!^)6@O^{nyvm>FMe8 z^z`K945I+0rl_i{uCP`E1GTnPxVpPiy_>JUz`4T2#lFZ+ z!KBN~#?H@7&BN2w(bm^W)!W$0-bdZnDJd8j78V*Bmgflx;6)i35fK6cA|gWb?*Rb~ z4N#y^pnw7eIOWczTh|W5yLd$A)w`E(Uxt4F0uC&Auni?lm>@uK;esG7O~;BzkN^-R zN`E0jtaC|Ih6xi79ry75nEIB=La_9_6BeIS- z>A?f04I5TUI%HH6z^4JCPMB(>sx~25wQ}_e0IXO8WE;3VyTp(pEax;ia4=6vK8Qu` zxjKZzV2c(mPav6eX;YTKG6ok;ayX?D#ljdLaSR!yh- zA6%ALl52I8)|p<%=ADg6?EtrPqukBSvXzIz3dy!=BJEevEBr` z_U68!q|>wxn)o5)nTSNWJ^hpQGTJv8_gR1@+fB@;NqtukK!7H!xHlUT@ht(G3`Llu z&IAr|w~sygT=dUC9T8#wAc71iNL^z7$pD~nB|ajVK@lQYD1?6i z96$sGrJW{(CGQczA8kEi$pln3&G0}b!?`Ku4F1VEgmTQSIYFC4yvbmkPS9z>4DbL@ zff2n`XW|jrX#{?;C{Yr)YT3v|-DzU-}DyX0dK|*Yxi3H9{YV8c5${^~wq@tv55$vj( zttRm%F>k&1DnQhKMqvBwxI-wgiB3gGGMGz)T_ExW1`bxNF#h=S&buz*J47KToN(j8 zLlivl3>2t(F#$!;D}%&Fc^@{*fP*Uz$~+rG{ZG?W+EePvC8n> z8@0>=D*ED*utPn=SZ=A_%ndFM?W_vs-E zh(3DiSwKseh3TiWJw#5pIpI3!q06rO7PiN6Y#7DEaXc8wzp?xm&AahD7qOS{Wb7dr zudNs - - Name -

    textDescent()

    - - - - - - Processing.js Behavior - Font support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    - - - - - Examples -
    example pic
    PFont font;
    -font = loadFont("FFScala.ttf"); 
    -textFont(font);
    -
    -textSize(32); 
    -float descent = textDescent();
    -text("dp", 0, 70);
    -line(0, 70+descent, 100, 70+descent); 
    -
    -textSize(64);
    -descent = textDescent();
    -text("dp", 35, 70);
    -line(35, 70+descent, 100, 70+descent);
    - - - - Description - -

    Returns descent of the current font at its current size. This information is useful for determining the height of the font below the baseline. - For example, adding the textAscent() and textDescent() values will give you the total height of the line.

    - - - - - - Syntax -
    textDescent()
    - - - - - Returns - Float - - - Usage - Web & Application - - - - Related - - textAscent() - - - diff --git a/reference/textFont_.gif b/reference/textFont_.gif deleted file mode 100644 index 044b0df8f8eaa501632aa8f2bdbd24d007017224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2606 zcmV+}3eojPNk%w1VT1sL0K@j*N^z@TtQB;t0wQz}x3IG@m{bV{vSuh^^>y1M0dD(GiSE}PHjw0g~MyWeE4iUe*( z%$~e{&+q&HfPsR8goPevPIF%sPGouzkdcy;l$Dm3n3oF ztgWuEu(7hUw6&_9haZWeIi?esj+}+;a z;Njxq5l zhA24*9ZIyQ(W6L{DqYI7=~9$7ae6#-5W@q7KZ9!6%C)Q4uVBN99ZR;XS+g9VI_RJd zn$Bug=hbt7a_fP+c=PJr%eSxJzkmY^7Q7YeO}8LLUG)jn?%>CeBTJsVw{SzY&>rME zIFE4#4jS-o*Z`n(kJG4At6t5zwd>cgW4qRnb}i1gqU1IfUAnjI-@t$EPMYq5E^_1J0i#8Be~v`Sa-0t6!fUwe{MVwR2wn{dsTp z`19-EpWprU?6`49-(B{V#@~SmCdi)ufAFazpK>O7M__>pR%l^`3}P2wfEaYg+yMmw zaN&p~;+G+SR6$7Bhar~e;)~>+xM7L{M#v(CFy`o@j1F?>VSPC2D5QlvA~&CnK-xFt zk_s02V2vv#DISwl?&qYB1A-W2m0YTKC5;_s*2WKfiQmq7t*W__i=Mf@ z_7JDF;SQUuyYF`EWxByaDlW13ng=hs@^-3jy;9yAaCrk$TQICo`fIPg=owQ$1;%)w z1GK|vjKl{Qgm!_)rivKpj<^u-$^TiOAPIF|tu3+SAR&*wUfz`Wqfny}30eNdXpNN7Mbc^*K$0|p?T zyhGI+Fpa?&(jHL20S<(AjSkXgus7deo44%5S+m#ncn_4u^bQ&HxI)Clt%Intpo6S)c`y|9tN(X9e8R?r(xluh)K3U!LSUJa9nlB+HHjve1`zLAO;K zj|Akp|30(zT?^~`eqsYawg$Z-n>@GUk(NAp=PO+L%0rswwJ%;y?u5}kP z*To#*wjGdWa^^!H0Muu}4NlK}=jmPcKv=rcVBiA(Bh3PEN4Cd-4O!|NAbFhjK?HK` zVAxv~3DJYQ+KKOY&+{I6I@dxZlqPi;^B{R>S415&%v`dvixTvq83jN9W=hkV+VrM4&8bdz%F~|u zRHqkJs1AQh)S?>os7Mt+P;(d}0R+IQP<^UYqe|7OTD7WJy{cBT%GIrU6{`XW>r$`T z)UcZMtY}TETGz_fwz~DLaAoUQCFZ-h+V!q@&FftiAOHm@V6F^&j$a2$*uon2u!v2p zVi(KU#wr%D(FA~FCrjDNT9&d5PyhoM09kss5o z)(sFfqsdyJ2Kf5dzz(*shfVBa8~fPEPIj^Btn6kx``OTrb_19#?P^>5+Q^mwoh88S zZhQON;10LA$4%~XoBQ13-Zr||&F*%)``zk(x4h>~Z+36Rq1E+Wi1y9ze*63101tS; z@v>{Wj!@tTPq@MtK5z(!hv5*9xWolMNrzAT;uz0(X)0cD-O%Mb;L*6qM^15qW5=3d z$`W`UPV$zMd^7}akQC#>n2&>;GC0q<&Ld--_;_R|CRof|>T>g)8~x};FN}t(;umzR z0L43JiMrIMPW7sHB`qh%Ot6B!n3~h&GfoM+*vC%xvI|8mwsDYVz$B8M%;o7ciM!nA zPWQT>d@XEIyH3#5_N#P;AsGq0;0I6m!armqZAry6;KIt0B&0Jw35et;Px;DQ{vHF# zjCT0W%6L2;^63b@=tocb(XS&Xix0`%PT}~^KjZbVkGYlHv*I|N=@od5s; diff --git a/reference/textFont_/index.html b/reference/textFont_/index.html deleted file mode 100644 index 1ef2c3d..0000000 --- a/reference/textFont_/index.html +++ /dev/null @@ -1,146 +0,0 @@ ---- -layout: withcc -title: textFont() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    textFont()

    Processing.js BehaviorFont support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. - -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    - -
    Examples
    example pic
    PFont metaBold;
    -
    -// The font "Meta-Bold.ttf" must be located in the 
    -
    -// current sketch's "data" directory to load successfully
    -
    -metaBold = loadFont("Meta-Bold.ttf");
    -
    -textFont(metaBold, 44); 
    -
    -text("word", 15, 50);
    DescriptionSets the current font. The font must be loaded with loadFont() before it can be used. This font will be used in all subsequent calls to the text() function. If no size parameter is input, the font will appear at its original size (the size it was created at with the "Create Font..." tool) until it is changed with textSize().

    Because fonts are usually bitmaped, you should create fonts at the sizes that will be used most commonly. Using textFont() without the size parameter will result in the cleanest-looking text.

    With the JAVA2D and PDF renderers, it's also possible to enable the use of native fonts via the command hint(ENABLE_NATIVE_FONTS). This will produce vector text in JAVA2D sketches and PDF output in cases where the vector data is available: when the font is still installed, or the font is created via the createFont() function (rather than the Tool).
    Syntax
    textFont(font)
    -
    -textFont(font, size)
    Parameters - - - - - - - - - - - - - - - - - - - - - -
    fontPFont: any variable of the type PFont
    sizeint or float: the size of the letters in units of pixels
    UsageWeb & Application
    Related - - createFont()
    - - loadFont()
    - - PFont
    - - text()
    - - - diff --git a/reference/textLeading_.gif b/reference/textLeading_.gif deleted file mode 100644 index f3a5c9f7a62118d6d0f4b447108421de7d59675b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1419 zcmV;61$6pHNk%w1VPpVg0M!5hk&%(|^75#tsF#%+ zHGY16iHV7}wzft_MnOSAot>SAhKAVK*yQBo($dnPprF3KzPY)%`T6FJ)Ho~EXz;^N{83JUM<@9XR9P*70K&CT1}+sn(#%F4>g z$;rpZ$FsAue0+T1;Nb4=?#9N(o12@0f`V37R_f~N#l^+?`uef4vD(_&XlQ5v00960 z|IEzHA^8LV00000EC2ui0Av7U000L6z@KnPEE!ADlPLo{{``gO#DU?cgKO?q}|GzUC- zuyvbcRE!uBgixqEfr3>Ec7>Sp5hC)|0tGGzF(6=p00UnQ{I!Rxg6P4yXb36Lp+|=T zXXj6n&Ay82U7z7Zah*ZgC0$rI2Awv!xthmr)o=xUM zWtYY1Py#XVXCo5BSy*H$#T_R^45#=I!;ny>Q63?Gq*n+9LMD=kBtJj`i4Ztkz{na8 z{xBbstF%InLosf3%X7T=A`(XnL|_4#{{`p`IO34AjSN0m<|YyCyc5qnBH>U#X%*m^ zp^FkxL_}SJE@uQ;@`MCfBh9H%rbRAtSP`Hqs>9V-f(=#F4>|~j#-|#VSdj#yWa-?c zse&bz5HmzT02{En2qT3%bYm*69s%RmroG?*tdo#QMwy^5Vn)sZ8^i+QXQ7Q&+G(k+ zX4C>S6o8tiO(J>!q*ca|bB+%Q_+;G=wai=3bh9ys+lm>u7iE-`Sb|9=n{=XyJv1Er zuStXn5nguDKvPg#%akC%!VL4{4?qGD1QQ1^z|eyY7!P3RRUWUXrMsJCO0fI&xq|NgjyUBtz8eX%~soOxhb6z2n*~BGj`4V zupPubdk513*q!S1iid2;!kAu;`GWy>o~@S<)pgoSbb&4KtJ8D;P$)dSAPU$FFUaF8 z(S47bEJ&-Cc5cauV;TWb%<3(-*@_FL>!uvk5;x?SV>-aHL|m|d4t!_b?c3j;3yf-j z8KA>3uYo?OZ@qR)M_n$Po;`&kz6US-@WdBy{PD;qul(}Ns}V2}mk`{t!9y(Sd(01a z{Y*44rPRaFPRHEOKLJHE(8Lxnz*5sh>+F`wH49N&NejC_vr}xb1b+KQ@4S-FY!SgR z8pS^&yf0}i8$b_y!M~{efHt<-SI=|!) diff --git a/reference/textLeading_/index.html b/reference/textLeading_/index.html deleted file mode 100644 index cd5487b..0000000 --- a/reference/textLeading_/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: withcc -title: textLeading() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    textLeading()

    Processing.js BehaviorFont support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    -
    Examples
    example pic
    PFont font;
    -// The font must be located in the sketch's 
    -// "data" directory to load successfully 
    -font = loadFont("EurekaMonoCond-Bold.ttf");
    -// Text to display. The "\n" is a "new line" character
    -String lines = "LIN1\nLIN2\nLIN3"; 
    -textFont(font, 14); 
    -textLeading(10);
    -text(lines, 5, 25); 
    -fill(126);  // Set value to gray
    -textLeading(20);
    -text(lines, 36, 25);
    -fill(0);    // Set value to black
    -textLeading(30);
    -text(lines, 68, 25);
    Description

    Sets the spacing between lines of text in units of pixels. This setting will be used in all subsequent calls to the text() function.

    -
    Syntax
    textLeading(dist)
    Parameters - - - - - -
    distint or float: the size in pixels for spacing between lines
    -
    ReturnsNone
    UsageWeb & Application
    Related - loadFont()
    - PFont
    - text()
    - textFont()
    - diff --git a/reference/textMode_.gif b/reference/textMode_.gif deleted file mode 100644 index 603303dd084b3c4ef2fa7c93f52b95da0140321d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1241 zcmV;~1Sb1ONk%w1VPpVg0K@+9>#(9r7Y>g43)-rnBa+}zsQ+Su6G`uh6gw+1cgg<@@{l z{QUg={r$_!%goHoA^8LV00000EC2ui0Av7U000I5;3tk`X`X1Ru59bRa4gSsZQppV z?|kq7z@TtQEEL=76a^Ikkm%|i!X6R@)cMH^w9kPM)AUhe0MEmR3i)Q?qjtcYhX5KV z2t-yuLL!I~kqMiij)TXKAU|5@XYe0^kSIC-cr)}MWPt)9Eg&!#z(9wTF)b3Rc@w0h z015eG zkYNIZf*%%y6mXd;NC8*_h(1lLL{MrRbSiqR7B&PzSPf;c+CjnPKm!6JTl^~^vfF?r z2tT&iwLZtbJ|M7QnA4*V6RdJTPG~MQ3f~6RHVVioyYP}2pd^rh*Y&O;8AKm|Qud&h zAT8tuWE13qMfiyX+6W#zFi|@OK;WMLBIY5ZL3G){b^#&=Qe(jZ5oD<0YkOH&Au<52kiHOR@6XuU4+TlC&-6S>7ySYH0C2r0zKjMkpdYUWnf6$G4cU@A;}m> z1wJ-OK|cYaBuoGa==Bt7P3hB0BrqPs!Gwi0SR*wA^dlxU^>}c>0w>iNmmy~snFw~; zDOui_0zG->L}?l{00a*(PykUV>1oiAAl-Exk|5bxU`z)F z9ziGFNgx$atRSu)Ssx;|hNNi!Cxgsotsw*gpnwLycBc<=B8=zdwGUZ>4XR%v0)TPH z6tJHm2M`CyyZOj#5P=n1U_b`0BCrsM!+HP#Zx^BxKn4sP<074~If?;~`7m%<0O$<0 zWgrv}GynG$`d-l4{7-RlouTFsss*(k6)r1|i49KmrLEFz8467Kf4r zBzTACF|{KNE96e!EC#DG9Bc8x$1 zqPC6%e%g_b8(92UAQ`NNlL8yp-001CE6}7e56lZl27-T74*&-^AV8Zp5wJ`%vq2ky z;{;GZf#eBB3xEbZ^Q?hZ;SK>300i6!w}Ax - - Name -

    textMode()

    - - - - - - Processing.js Behavior - Font support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    - - - - - Examples -
    example pic
    PFont metaBold;
    -// The font "Meta-Bold.ttf" must be located in the
    -// current sketch's "data" directory to load successfully
    -metaBold = loadFont("Meta-Bold.ttf");
    -String lines = "screen";
    -textFont(metaBold);
    -textMode(SCREEN);
    -text(lines, 3, 70);
    - - - - Description - -

    Sets the way text draws to the screen. In the default configuration (the MODEL mode), it's possible to rotate, scale, - and place letters in two and three dimensional space.

    -

    Changing to SCREEN mode draws letters directly to the front of the window and greatly increases rendering quality and speed when used with the P2D and P3D renderers. - textMode(SCREEN) with OPENGL and JAVA2D (the default) renderers will generally be slower, though pixel accurate with P2D and P3D. With textMode(SCREEN), - the letters draw at the actual size of the font (in pixels) and therefore calls to textSize() will not affect the size of the letters. - To create a font at the size you desire, use the "Create font..." option in the Tools menu, or use the createFont() function. When using textMode(SCREEN), - any z-coordinate passed to a text() command will be ignored, because your computer screen is...flat!

    -

    The SHAPE mode draws text using the the glyph outlines of individual characters rather than as textures. - This mode is only only supported with the PDF and OPENGL renderer settings. With the PDF renderer, you must call textMode(SHAPE) before any other drawing occurs. - If the outlines are not available, then textMode(SHAPE) will be ignored and textMode(MODEL) will be used instead.

    -

    The textMode(SHAPE) option in OPENGL mode can be combined with beginRaw() to write vector-accurate text to 2D and 3D output files, for instance DXF or PDF. - textMode(SHAPE) is not currently optimized for OPENGL, so if recording shape data, use textMode(MODEL) until you're ready to capture the geometry with beginRaw().

    - - - - - - Syntax -
    textMode(MODE)
    - - - - - Parameters - - - - - - -
    MODEeither MODEL, SCREEN, or SHAPE
    - - - - Returns - None - - - Usage - Web & Application - - - - Related - - - loadFont()
    - PFont
    - text()
    - textFont()
    - createFont()
    - - - diff --git a/reference/textSize_.gif b/reference/textSize_.gif deleted file mode 100644 index 595b1aa7b1bb6f14e6d0174d15d13f45e2335566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmVdwy2`1ttp^78-x|IEzHA^8LV00000EC2ui0Av7U000F4@X1N5y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_x;NqajmI{i2W9%gb z6p9A9Tmr1wBew%ilGEew`^T;a@ndL#3IPv-XaEvtfru0b1`G@aj1^l728js+1Qh`S z2?zrM0(mcwV+IC<1_@&Wl8LJh36lk445GG#iE3jA4+IFU6bh%JymK=LW1AEV4h6COI46mbkiVh#jYC}1&~!519=Gg7Gl`G0+~knHemq1p_LxmAp_D=|>pu z9uks6sKF%)!Ej#9qmAo5ugGd3G%!GdPlg!rBERB>eC7#JI2cT zg)_@;>S7qk2$+Mj4heuGz`R23UZ@Ztz?dMxXBq<3qNQlzfHTcMS!y1?abfBLZV*U{ z9ixC{hcht*H~`>%i1`P&vG2pbzyJRL1}NZ}fCPp_AO>z6=#_#VVPOqc0{{>}bq@@1 z3q)#2HwQ8BWP!{m64W)$1js1hODEHSh=oXN)V0|J;uJE?i&6}u0028ND@bzy diff --git a/reference/textSize_/index.html b/reference/textSize_/index.html deleted file mode 100644 index 94ec39d..0000000 --- a/reference/textSize_/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: withcc -title: textSize() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    textSize()

    Processing.js BehaviorFont support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    -
    Examples
    example pic
    PFont font;
    -// The font must be located in the sketch's 
    -// "data" directory to load successfully
    -font = loadFont("FFScala.ttf"); 
    -textFont(font, 32); 
    -text("word", 15, 50); 
    -textSize(14);
    -text("word", 15, 70);
    Description

    Sets the current font size. This size will be used in all subsequent calls to the text() function. Font size is measured in units of pixels.

    -
    Syntax
    textSize(size)
    Parameters - - - - - -
    size int or float: the size of the letters in units of pixels
    -
    ReturnsNone
    UsageWeb & Application
    Related - loadFont()
    - PFont
    - text()
    - textFont()
    - diff --git a/reference/textWidth_.gif b/reference/textWidth_.gif deleted file mode 100644 index 6a607e47478b50be056713e3f849451f521b7641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1154 zcmV-|1bzEQNk%w1VPpVg0M!5h;Nal={QU9p@y^c9{{H^h*x2go>hSRJ?d|RP`T5V! z&-nQG?(XjE>+96i)c5!I<>lq$t!ED~kLq;kn@I-k%bGD@vlug@uV%k4I` z-mrKJ9-Gf!w0dnUv)^Mke9o2A?^Qc~@6_}ENq&HXLV|>VhKGEKig=8TbdQj5l9Nye z0t1?xoShp1m6lEiGo_}dsHLEyW(N`gu(1!Nv9TbltYQZTMgpZq4Y;{pyS=|f!J)%Z zzB5Y7%TLYE(Q4Cy)o9mk*=O5D(A`SkN8)4TL*eE{=!NTH?KJA|LhgC_^31i11{ zOMNft#e6q&T}^X0#pUd_Gh5I9YCod|eNrMqfjvW)oIntO7E&viI!Wd9i3$b-1_;am z@U#jkiC||0xYCrXBdD)x0hqN_?JcrfyHY8}?ii6^aLwKcMVAOVyjIG}-DlT};Ir@w zcR9RQOuQl%5Iji0KyMMoAFyh^su`;TA)K+sAQE|UWpIua8@ZrxK?(>GW<20vgfRvL z31+lFfC9mSQV0;xrqMfr1_YmJu%6)>w(Q~ZQafAHAvXgLLo$d>K7=t105dQUIZ-Nv zkpvKiRG)D@`*wGUrz;_~U_cQVvM`L{lIrfj}wP zQ8+^czY$Qu5+Rgwf)Fmez~l^JCNbs=9uO&CZOkbl<(_3Z(3A)rDlrR)9L!L{oD2B* zi=Io6!etT)Q3)eg1J2+Af<{D8N(>peP=usPRN7^OMGE2R3~Lsl;|vDOX;yy$CeeXb z8HgYr5v#UJ#H+DFs)PbfHPC4(+|j_;2BqL=1hWJX0A!BE9y`Nl!YTnC0Y?q7LQ@&& zXBh~kU}!{%2qdweZMQ;vJ43jqV!@C?GcYvm5G088fe;gDFhjaRbbt^GGmua~tLw2~ zK|@8vW?mBc2Cy#;{r;;F7h%z8gav78rGaH5q$0u)f|~Ls5ieM(1jieCY*|nxjG)59 zVxZ?l%rkS7(FYvXk&yx#Y|uqgtz0{_MJXD4^gtXa6hNUq4@B$4OApi=M-Y|i1<|Z< UEsEEcfIW%WkdWO-C_w-KJEe#qQUCw| diff --git a/reference/textWidth_/index.html b/reference/textWidth_/index.html deleted file mode 100644 index 86ebcac..0000000 --- a/reference/textWidth_/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: withcc -title: textWidth() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    textWidth()

    Processing.js BehaviorFont support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    -
    Examples
    example pic
    PFont font;
    -font = loadFont("FFScala.ttf"); 
    -textFont(font, 32); 
    -
    -char c = 'T';
    -float cw = textWidth(c);
    -text(c, 0, 40);
    -line(cw, 0, cw, 50); 
    -
    -String s = "Tokyo";
    -float sw = textWidth(s);
    -text(s, 0, 85);
    -line(sw, 50, sw, 100);
    Description

    Calculates and returns the width of any character or text string.

    -
    Syntax
    textWidth(data)
    Parameters - - - - - -
    datachar or String
    -
    ReturnsFloat
    UsageWeb & Application
    Related - loadFont()
    - PFont
    - text()
    - textFont()
    - diff --git a/reference/text_.gif b/reference/text_.gif deleted file mode 100644 index f85643607483f332ef2f1d5d6732a5f34a889bf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3283 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 - - - - Name - -

    text()

    - - - - - - - - Processing.js Behavior - - Font support for the Canvas element varies across browsers. FireFox currently has the best support, but still uses a pre-defined set of fonts. (Documentation to follow soon.) Good alternatives to the browser's Canvas-font functions are available: such as the Glyph method. See also: Canvas Text, BurntToys Bauhaus. - -

    Please use the following demos to learn how fonts can be rendered in Firefox with Processing.js: Letters, Words, width()

    - - - - - - - - - - Examples - -
    example pic
    PFont font;
    -
    -// The font must be located in the sketch's 
    -
    -// "data" directory to load successfully
    -
    -font = loadFont("FFScala.ttf"); 
    -
    -textFont(font); 
    -
    -text("word", 15, 30); 
    -
    -fill(0, 102, 153);
    -
    -text("word", 15, 60);
    -
    -fill(0, 102, 153, 51);
    -
    -text("word", 15, 90);
    example pic
    size(100, 100, P3D);
    -
    -PFont font;
    -
    -font = loadFont("FFScala.ttf"); 
    -
    -textFont(font); 
    -
    -text("word", 15, 60, -30); 
    -
    -fill(0, 102, 153);
    -
    -text("word", 15, 60);
    example pic
    PFont font;
    -
    -font = loadFont("FFScala-Bold.ttf"); 
    -
    -textFont(font); 
    -
    -String s = "The quick brown fox jumped over the lazy dog.";
    -
    -text(s, 15, 20, 70, 70);
    - - - - - - - - - - Description - - Draws text to the screen. Displays the information specified in the data or stringdata parameters on the screen in the position specified by the x and y parameters and the optional z parameter. A font must be set with the textFont() function before text() may be called. The width and height parameters define a rectangular area to display within and may only be used with string data. The text displays in relation to the textAlign() function, which gives the option to draw to the left, right, and center of the coordinates. Use the textMode() function with the SCREEN parameter to display text in 2D at the surface of the window. Change the color of the text with the fill() function. - - - - - - - - - - Syntax - -
    text(data, x, y)
    -
    -text(data, x, y, z)
    -
    -text(stringdata, x, y, width, height)
    -
    -text(stringdata, x, y, width, height, z)
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    dataString, char, int, or float: the alphanumeric symbols to be displayed
    xint or float: x-coordinate of text
    yint or float: y-coordinate of text
    zint or float: z-coordinate of text
    stringdataString: letters to be displayed
    widthint or float: width of text box
    heightint or float: height of text box
    - - - - - - - - Usage - - Web & Application - - - - - - - - Related - - - - - - textAlign()
    - - textMode()
    - - loadFont()
    - - PFont
    - - textFont()
    - - - - - - - diff --git a/reference/text_3.gif b/reference/text_3.gif deleted file mode 100644 index 9e27bed3f0a39f231f68a589ceb2c6bf92fd86f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3142 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 K=O6+h0029Kv5l1g diff --git a/reference/textureMode_.gif b/reference/textureMode_.gif deleted file mode 100644 index d26d51798f48a90abad297647b0b56c363fa52b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6853 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 diff --git a/reference/textureMode_/index.html b/reference/textureMode_/index.html deleted file mode 100644 index e725cb6..0000000 --- a/reference/textureMode_/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: withcc -title: textureMode() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    textureMode()

    Examples
    example pic
    noStroke();
    -PImage a = loadImage("arch.jpg");
    -textureMode(IMAGE);
    -beginShape();
    -texture(a);
    -vertex(10, 20, 0, 0);
    -vertex(80, 5, 100, 0);
    -vertex(95, 90, 100, 100);
    -vertex(40, 95, 0, 100);
    -endShape();
    example pic
    noStroke();
    -PImage a = loadImage("arch.jpg");
    -textureMode(NORMALIZED);
    -beginShape();
    -texture(a);
    -vertex(10, 20, 0, 0);
    -vertex(80, 5, 1, 0);
    -vertex(95, 90, 1, 1);
    -vertex(40, 95, 0, 1);
    -endShape();
    Description

    Sets the coordinate space for texture mapping. There are two options, IMAGE, which refers to the actual coordinates of the image, and NORMALIZED, - which refers to a normalized space of values ranging from 0 to 1. The default mode is IMAGE. In IMAGE, if an image is 100 x 200 pixels, - mapping the image onto the entire size of a quad would require the points (0,0) (0,100) (100,200) (0,200). - The same mapping in NORMAL_SPACE is (0,0) (0,1) (1,1) (0,1).

    Syntax
    textureMode(MODE)
    Parameters - - - - -
    MODEeither IMAGE or NORMALIZED
    ReturnsNone
    UsageWeb & Application
    Relatedtexture()
    diff --git a/reference/textureMode_2.gif b/reference/textureMode_2.gif deleted file mode 100644 index d26d51798f48a90abad297647b0b56c363fa52b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6853 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 diff --git a/reference/texture_.gif b/reference/texture_.gif deleted file mode 100644 index d26d51798f48a90abad297647b0b56c363fa52b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6853 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 diff --git a/reference/texture_/index.html b/reference/texture_/index.html deleted file mode 100644 index efabfd2..0000000 --- a/reference/texture_/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: withcc -title: texture() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    texture()

    Examples
    example pic
    size(100, 100, P3D);
    -noStroke();
    -PImage a = loadImage("arch.jpg");
    -beginShape();
    -texture(a);
    -vertex(10, 20, 0, 0);
    -vertex(80, 5, 100, 0);
    -vertex(95, 90, 100, 100);
    -vertex(40, 95, 0, 100);
    -endShape();
    Description

    Sets a texture to be applied to vertex points. The texture() function must be called between beginShape() and endShape() - and before any calls to vertex().

    When textures are in use, the fill color is ignored. Instead, use tint() - to specify the color of the texture as it is applied to the shape.

    Syntax
    texture(img)
    Parameters - - - - -
    imgPImage: the texture to apply
    ReturnsNone
    UsageWeb & Application
    RelatedtextureMode()
    - beginShape()
    - endShape()
    - vertex()
    diff --git a/reference/this/index.html b/reference/this/index.html deleted file mode 100644 index 3cda453..0000000 --- a/reference/this/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: withcc -title: this | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    this

    Examples
    float ypos = 50;
    -
    -
    -
    -void setup() {
    -
    -  size(100, 100);
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  line(0, 0, 100, ypos);
    -
    -  this.ypos = 100;
    -
    -  line(0, 0, 100, ypos);
    -
    -}

    import processing.video.*;
    -
    -Movie myMovie;
    -
    -
    -
    -void setup() {
    -
    -  size(200, 200);
    -
    -  background(0);
    -
    -  myMovie = new Movie(this, "totoro.mov");
    -
    -  myMovie.loop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  if(myMovie.available()) {
    -
    -    myMovie.read();
    -
    -  }
    -
    -  image(myMovie, 0, 0);
    -
    -}
    DescriptionRefers to the current object (i.e. "this object"). In Processing, it's most common to use this to pass a reference from the current object into one of the libraries. The keyword this can also be used in another way, but it is often not necessay. For example, if you are calling the filter() method of a PImage object named tree from another object, you would write tree.filter(). To call this method inside PImage itself one could simply write filter() or could more explicity write this.filter(). It's not incorrect to say this.filter() but it is not necessary as this is always implied.
    UsageWeb & Application
    - diff --git a/reference/tint_.jpg b/reference/tint_.jpg deleted file mode 100644 index 04db06dbc21c787c7a399f774f8ffc5b653e172a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24403 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 diff --git a/reference/tint_/index.html b/reference/tint_/index.html deleted file mode 100644 index 0280640..0000000 --- a/reference/tint_/index.html +++ /dev/null @@ -1,226 +0,0 @@ ---- -layout: withcc -title: tint() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    tint()

    Examples
    example pic
    -
    -// @pjs preload must be used to preload the image
    -
    -/* @pjs preload="laDefense.jpg"; */
    -
    -PImage b; 
    -
    -b = loadImage("laDefense.jpg"); 
    -
    -image(b, 0, 0); 
    -
    -// Tint blue
    -
    -tint(0, 153, 204); 
    -
    -image(b, 50, 0);
    example pic
    -
    -// @pjs preload must be used to preload the image
    -
    -/* @pjs preload="laDefense.jpg"; */
    -
    -PImage b; 
    -
    -b = loadImage("laDefense.jpg"); 
    -
    -image(b, 0, 0); 
    -
    -// Tint blue and set transparency
    -
    -tint(0, 153, 204, 126); 
    -
    -image(b, 50, 0);
    DescriptionSets the fill value for displaying images. Images can be tinted to specified colors or made transparent by setting the alpha. - -

    - -To make an image transparent, but not change it's color, use white as the tint color and specify an alpha value. For instance, tint(255, 128) will make an image 50% transparent (unless colorMode() has been used). - -

    - -When using hexadecimal notation to specify a color, use "#" or "0x" before the values (e.g. #CCFFAA, 0xFFCCFFAA). The # syntax uses six digits to specify a color (the way colors are specified in HTML and CSS). When using the hexadecimal notation starting with "0x", the hexadecimal value must be specified with eight characters; the first two characters define the alpha component and the remainder the red, green, and blue components. - -

    - -The value for the parameter "gray" must be less than or equal to the current maximum value as specified by colorMode(). The default maximum value is 255. - -

    - - - -The tint() method is also used to control the coloring of textures in 3D.
    Syntax
    tint(gray)
    -
    -tint(gray, alpha)
    -
    -tint(value1, value2, value3)
    -
    -tint(value1, value2, value3, alpha)
    -
    -tint(color)
    -
    -tint(color, alpha)
    -
    -tint(hex)
    -
    -tint(hex, alpha)
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    grayint or float: any valid number
    alphaint or float: opacity of the image
    value1int or float: red or hue value
    value2int or float: green or saturation value
    value3int or float: blue or brightness value
    colorcolor: any value of the color datatype
    hexint: color value in hexadecimal notation (i.e. #FFCC00 or 0xFFFFCC00)
    UsageWeb & Application
    RelatednoTint() - -
    image()
    - diff --git a/reference/tint_2.jpg b/reference/tint_2.jpg deleted file mode 100644 index a8cea6a64dff34dd5a921124acb019ab3cefcbc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24063 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 I2<{9 diff --git a/reference/translate_.gif b/reference/translate_.gif deleted file mode 100644 index 90b4da30cd7e67feb1876f323c02888e87643b6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 zcmV;e2~ze)Nk%w1VT1sL0K@FLD8#Pag;`uh5VgM-S- z%HrbUb8~ZNXJ_W-=GocV0001+o12P?itOy{`1ttJ($aisw&+&y5%$QAP3Iqw0g~MyWjA*{9TTw zyx_}eyk4CB0f2&kgn@;FhKY!ahmDGkjE|ClX?08|Bu7qa3!R>yprN9pq@|{(sHvc8 zPM9M&Wq+Rzw6(UkxVgH!yuH4^zz(Zttpb@HvYoXB%+1cv(9zP<)YaD4*afwp#Fwwg zp0v#q0PICJXU$x|mr ze8-*(qZ}^A+(4nM*|TWVs$I*r zt=qS7;cmcsfP*}3fV%Fh7&c~E1b_nz9!$8f;lqd%D_*>~ELNa+0lC^6_JD@Jj5BNA z%(*jR#~1BJPC3G8MayIZV_3bKhwIm{W6PdRySDAyxM>@pFt={dyeh$prJ#EChvT`E zD__pMxdPC>@eZvZJSlMm#*ZU+&b_;L+z5DUh%Ss6rs}D&WBA~qy$2oehUA-GJ#?h+v8|)~Mf#5t=t4j1`tRqm4iY2_KFv>iA+`G5Xk^ zkW2i5JWtxgcssp2Z&Pk=Dl2R(7qjai? zX`q^#>F1$8ehO-yA8NVjnU5k$BLuLy& zVyo?Z&-MvyyWz&GueI~aSFfdz=DY8}$o9J^w|lO8FSs?nOYp<(89XGyaeB)tz70dH zu?G@QO0lodE*x;i8$aAJ5+9cta*`ucTQb2X?~rn#7c=bg%lpRs@3$=vi}S!b&)jIu zJ)`LG&*cVYQFBc$)mAr+^`Baw zc(mF4dYyLI07Jbs+~cARw#s6&P4?Y*U#oYjeAnGJhi?a-?BKl?&a>TaD=xU)d(+IW z&1FljEaU2~P3qr~YrZW1=U1=nx2J%MUNGf^TP`x>h^xLi>y5iUHtM0vek|!~oBlcO zvFpA&?VbBBE$|yAEJFhCsVD91X|@s4)PBLwEa$3D6N0(r!v z0S3v&`2B8>h)kp+7s*IOLSPG!jHDC**+@ke(tl9=KqWWH$wxNflS~LDC`T#EQj+qN zrZgob8wr3x0^pJdyd3~$Ny}Q=@|L)4B?O4TOBp~Qmj-AhEiq6zOv+N2$P8vOXQ|9) zGLx1NsDU)6NzH0nvzotLCN5$5z~ANao8W}z7sg4>a+>p;=uGDgvKh`-7BiN9`#?MA zY0ETb@t!{4Vma_DvE{$ofW=hkV(h8^8t60Yx z)(8+F0$%lDdm_Nrwz~DLaE+^6=StVQ+V!q;O{*I}fY-kI^{;>pELz{$&EpLq0*6g3 zVi&8}#xnM?j*Tp2Co9>?QueZu9e`%_3PlfS_OqZ3t!PI}+R~c#w5Uz3X*qj4)w=ez zu#N3&B`^Tmvi5Wm$gOU7%iG@i_P4+du5gD-T;SgJcg0Pva+k~8<|g2{$4h_&q)XlD zTDQ9Y*uAcHv&-G>dbhja{jPYqn}G5{w^QX!uX@+Z-uAlpz3`2%eCG?_^D5~B39vwZ z_p9Ij^7p^~4KRQQEZ_nY_`n8EFoNxyCJQ+D!4QtHgeOel3S0QX7|w8o8SI`9X!ye* z4zY+wYyl3thXEEqv5Hg7;uX8N#V~%cjAKmW8QZwVIJPkZOxzv@`1r>_4ziGkOynXP z`N&94a*=uL0VO;6$xx26lo?Q#i^B7B7?`q_x6I`uH-G^RU~&V-Oy)A1`OIievzph; z<~FlBxeHfRLYcl?M%?C(x4atzZ5Fl24|?H8WyTVhe*63101r4? z<`QkugslP#ph#sblN1U%{NWIfxKrrj8z{L5;Vt0{QaH%*j(hy$H2H~LKqQQdPsB79 zA)(4w&hnObq$GDKxsg_)jIZ>Ag*eZ-&Ua1_hG?VY7Y9ep$Fakr8~x}yoCnYMtwB#>tGMN*ljV4tl#4XApih7!@djS diff --git a/reference/translate_/index.html b/reference/translate_/index.html deleted file mode 100644 index 2845ef5..0000000 --- a/reference/translate_/index.html +++ /dev/null @@ -1,152 +0,0 @@ ---- -layout: withcc -title: translate() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    translate()

    Examples
    example pic
    translate(30, 20);
    -
    -rect(0, 0, 55, 55);
    example pic
    // Translating in 3D requires P3D
    -
    -// or OPENGL as a parameter to size()
    -
    -size(100, 100, P3D);
    -
    -translate(30, 20, -50);
    -
    -rect(0, 0, 55, 55);
    example pic
    translate(30, 20);
    -
    -rect(0, 0, 55, 55);
    -
    -translate(14, 14);
    -
    -rect(0, 0, 55, 55);
    DescriptionSpecifies an amount to displace objects within the display window. The x parameter specifies left/right translation, the y parameter specifies up/down translation, and the z parameter specifies translations toward/away from the screen. Using this function with the z parameter requires using the P3D or OPENGL parameter in combination with size as shown in the above example. Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. For example, calling translate(50, 0) and then translate(20, 0) is the same as translate(70, 0). If translate() is called within draw(), the transformation is reset when the loop begins again. This function can be further controlled by the pushMatrix() and popMatrix().
    Syntax
    translate(x, y);
    -
    -translate(x, y, z);
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint or float: left/right translation
    yint or float: up/down translation
    zint or float: forward/back translation
    UsageWeb & Application
    RelatedrotateX()
    - - rotateY()
    - - rotateZ()
    - - rotate()
    - - scale()
    - - pushMatrix() - -
    popMatrix()
    - diff --git a/reference/translate_2.gif b/reference/translate_2.gif deleted file mode 100644 index a034eed361d324b0dd089152fd5538138d866a2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2272 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 XM<6%P`ObTO7QhIDR_f7#5C8x>Fur1p diff --git a/reference/transparent/index.html b/reference/transparent/index.html deleted file mode 100644 index 0ce555a..0000000 --- a/reference/transparent/index.html +++ /dev/null @@ -1,192 +0,0 @@ ---- -layout: withcc -title: /* @pjs transparent */ directive | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    /* @pjs transparent */ directive

    Examples
    /* @pjs transparent="true"; */
    -
    -
    -
    -void setup()
    -
    -{
    -
    -  size(200,200);
    -
    -  frameRate(25);
    -
    -  stroke(100,100,200);
    -
    -  noFill();
    -
    -}
    -
    -
    -
    -float value = 0;
    -
    -boolean forward = true;
    -
    -
    -
    -/**
    -
    - * This animation draws an amplitude-modulating sinewave
    -
    - */
    -
    -void draw()
    -
    -{
    -
    -  value += forward ? 2*PI/25 : -2*PI/25;
    -
    -  if(forward && value>=2*PI) { forward=false; }
    -
    -  else if(!forward && value<=0) { forward=true; }
    -
    -
    -
    -  background(0,75);	// transparent grey background
    -
    -  float c = value - PI;
    -
    -  bezier(0,100, 33,100+(50*c*PI/6), 66,100+(50*c*PI/6), 100,100);
    -
    -  bezier(100,100, 133,100+(50*-c*PI/6), 166,100+(50*-c*PI/6), 200,100);
    -
    -}
    -
    -
    Description

    This directive allows you to specify whether or not the background of the canvas for your sketch should be transparent. By default, - - the canvas background is opaque, and any calls to background() will fill it with some color, with a CSS opacity of 1.0 (which is fully opaque). - - To make the background transparent, use this directive. Any calls to background() with arguments that include an alpha channel value will now result - - in a transparent background color with an opacity ranging from fully transparent (a=0) to full opaque (a=255).

    - -
    Syntax - -
    -
    -         /* @pjs transparent="true"; */
    -
    -      
    - - To enable transparent backgrounds for a js-built sketch, you must set the sketch transparency property to true. Assuming you have bound your sketch to a var called mySketch: - -
    - -
    -
    -        mySketch.options.isTransparent = true;
    -
    -      
    - - If you have bound your processing instance to a variable called pi: - -
    - -
    -
    -        pi.externals.sketch.options.isTransparent = true;
    -
    -      
    - - - -
    Parameters - - - - - - - - - - - - - -
    transparent "true" (implicitly false for any other value)
    UsageWeb & Application, Processing.js compatibility
    Related - - @pjs directives - -
    - diff --git a/reference/triangle_.gif b/reference/triangle_.gif deleted file mode 100644 index 9d5c7d64cba54b6f270b60dfa304a07ab1f3d5cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2451 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 diff --git a/reference/triangle_/index.html b/reference/triangle_/index.html deleted file mode 100644 index 3418d34..0000000 --- a/reference/triangle_/index.html +++ /dev/null @@ -1,148 +0,0 @@ ---- -layout: withcc -title: triangle() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    triangle()

    Examples
    example pic
    triangle(30, 75, 58, 20, 86, 75)
    DescriptionA triangle is a plane created by connecting three points. The first two arguments specify the first point, the middle two arguments specify the second point, and the last two arguments specify the third point.
    Syntax
    triangle(x1, y1, x2, y2, x3, y3);
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    x1int or float: x-coordinate of the first point
    y1int or float: y-coordinate of the first point
    x2int or float: x-coordinate of the second point
    y2int or float: y-coordinate of the second point
    x3int or float: x-coordinate of the third point
    y3int or float: y-coordinate of the third point
    UsageWeb & Application
    RelatedbeginShape()
    - diff --git a/reference/trim_/index.html b/reference/trim_/index.html deleted file mode 100644 index 246deb8..0000000 --- a/reference/trim_/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: withcc -title: trim() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    trim()

    Examples
    String s = "  Somerville MA ";
    -println(s);  // Prints "  Somerville MA "
    -String s2 = trim(s);
    -println(s2); // Prints "Somerville MA"
    -
    -String[] a = { " inconsistent ", " spacing" };
    -String[] a2 = trim(a);
    -println(a2);
    Description

    Removes whitespace characters from the beginning and end of a String. In addition to standard whitespace characters such as space, - carriage return, and tab, this function also removes the Unicode "nbsp" character.

    Syntax
    trim(str)

    -
    trim(array)
    Parameters - - - - - - - - -
    strany String
    array a String array
    ReturnsString
    UsageWeb & Application
    Relatedsplit()
    - join()
    diff --git a/reference/true/index.html b/reference/true/index.html deleted file mode 100644 index 72d7433..0000000 --- a/reference/true/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: withcc -title: true | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    true

    Examples
    rect(30, 20, 50, 50);
    -
    -boolean b = true;
    -
    -if(b == true) {
    -
    -  line(20, 10, 90, 80);  // This line draws
    -
    -} else {
    -
    -  line(20, 80, 90, 10); 
    -
    -}
    DescriptionReserved word representing the logical value "true". Only variables of type boolean may be assigned the value true.
    UsageWeb & Application
    Relatedfalse - -
    boolean
    - - - diff --git a/reference/unbinary_/index.html b/reference/unbinary_/index.html deleted file mode 100644 index ab4b5f8..0000000 --- a/reference/unbinary_/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: withcc -title: unbinary() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    unbinary()

    Examples
    String s1 = "00010000";
    -String s2 = "00001000";
    -String s3 = "00000100";
    -println(unbinary(s1));  // Prints 16
    -println(unbinary(s2));  // Prints 8
    -println(unbinary(s3));  // Prints 4
    DescriptionConverts a String representation of a binary number to its equivalent integer value. For example, unbinary("00001000") will return 8.
    Syntax
    unbinary(str)
    -
    Parameters - - - - -
    strString
    Returnsint
    UsageWeb & Application
    Relatedhex()
    - unhex()
    - binary()
    diff --git a/reference/unhex_/index.html b/reference/unhex_/index.html deleted file mode 100644 index cff9611..0000000 --- a/reference/unhex_/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: withcc -title: unhex() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    unhex()

    Examples
    String hs = "FF006699";
    -int hi = unhex(hs);
    -fill(hi);
    -rect(30, 20, 55, 55);
    DescriptionConverts a String representation of a hexadecimal number to its equivalent integer value.
    Syntax
    unhex(str)
    -
    Parameters - - - - -
    strString
    Returnsint
    UsageWeb & Application
    Relatedhex()
    - binary()
    - unbinary()
    diff --git a/reference/updatePixels_.jpg b/reference/updatePixels_.jpg deleted file mode 100644 index 6eae5ef2cc1c2915fa6815fde4f063a7ace0ac91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4751 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 - - - - Name - -

    updatePixels()

    - - - - - - - - - - Examples - -
    example pic
    int halfImage = width*height/2;
    -
    -PImage myImage = loadImage("topanga.jpg");
    -
    -image(myImage, 0, 0);
    -
    -
    -
    -loadPixels();
    -
    -for (int i = 0; i < halfImage; i++) {
    -
    -  pixels[i+halfImage] = pixels[i];
    -
    -}
    -
    -updatePixels();
    example pic
    int halfImage = width*height/2;
    -
    -PImage myImage = loadImage("towerFlip.jpg");
    -
    -image(myImage, 0, 0);
    -
    -
    -
    -loadPixels();
    -
    -for (int i = 0; i < halfImage; i++) {
    -
    -  pixels[i+halfImage] = pixels[i];
    -
    -}
    -
    -updatePixels(50, 0, 50, 100);
    - - - - - - - - Description - - Updates the display window (or an image) when data in the pixels[] array has been modified. Use in conjunction with loadPixels(). If you're only reading pixels from the array, there's no need to call updatePixels() unless there are changes. - -

    - -Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must first call loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. - - - - - - - - - - Syntax - -
    updatePixels()
    - - - - - - - - Usage - - - - Web & Application - - - - - - - - Related - - pixels[] - -
    loadPixels()
    - - - - - - - diff --git a/reference/updatePixels_2.jpg b/reference/updatePixels_2.jpg deleted file mode 100644 index 473f09856c6e1e730215681d11b0d26f60473a1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2582 zcmZuyc{tQ-8~)A4*k_nA8ccS=L70Qk*cw~NGNe@YZ7gRnA^TpkRgR)#7s?WiT|%-| zvK~J`o1Rjfezu1!l2m*#8{@EcgC^L*1_VW@1fFVez@L6siZ3mcn zRJ#aMel?1ja!*mGa2D+t{hGx4ZO~#!RH-9IOwS5~JaGe{FzEjrK}fLhSqenk+#!nl zUb~25ezhMDV;o>VQGk&UBtQVxCXiQGaGkEIooZ)d?GkQ*Q`(8`Hs6DxUYl@Mei%RO z#@HN^)*~e4h4Mm2xTO*Mg(CB-%&SO8IokXh(ct+1FURm1u&Q+H^$te$k}_|zTHy;& z>081q5CbB}G%rD@MCVRgthu{An>_;DkLQ=xqdaWBUbi$vA6>Yehwt>!c{=R#n4&r7 zWOks02v|ttJ2KjEOdQ@nSL<+qw1_)x^o}OORv2ju0&Z567G=P92qC^^4@@gAFI=&d z4zZq-_HAiPK^l=h`np}82xm&Dt1&TtMw{?!ZXGM8CyXK0G3YFF=cG%u z52S#)Q_fW!yxIkEXuIpg4=wChV@Xk!u8D~a`-TtVJ=%>VLMBE!po3>q-6>HW?>8q^ zV}2;N=t36%UuV0ErqrcVJMt8J*^lp4&{XCL}J!{r3rQ^CC6axoCmtY@n*X z(c^+cUr7sb`kAXYHW87rGu1rYBv}9EMsJ?#kZPA4WyO6r{e4FKeFK0Z^X`@X>7*T% z?1{Potu6(8TjZ9FW$M%utJ-`+&!U!LO|qL?*t6xaZxj9VUVW(;W+#jJztzvPHP<%Q zzl?gwyZQTNXEb@-lXX)jP<_UyVm-i+@(0%Y2EUe_^_6@n2Lrp%}ZXS@1m<9RFsE(ED;;crir*5pqBso@<@P-%n52^oO#kR*za& z*4{8^_LL0IUWKXk1v$+gecYTdF>MaD4EJLVfMMyizd_K+?N+C*>Z!&g?{t?I#U9^r zX325=n%%)6J1x^ulk;UEFeOFC&0613f#CA$@>cg_8vPOVZoP@->h9s>IL-TKHBPWAs#P;To=weuaJjU2zihXJG`a2Y3OCQ&mw=tN?xXV))h_nczcn7b8Qnu?@Xr>4s^lZIY2)NLq?!&!s{G zKUOOAq%R=3pS81UnNwH--}rwoq^o`$Pms*mSro5LpJ;vS7+PpEpvz1XO9C4JR(}C( zLt)nj&*NJKeflhFEL>SheZ}?^RXLWlUNWWVZ2zMyz4qK{7o1`Xhtivg?eisd*M%!! z#@evYB=g~%`QD;APSLvbU5QKEuU?L>Ri`cU-9F4eYT#u6ncgnY!1|EBR8L}-U6*!c zRj?z~k;VY@hBGP-vxDeWWXr)LH6b@*y*DI$Y3u)2LWkQ!x_ODjw! z9UXf><5j3kZyn@=zz=5To+zw#CpK?DqW}Cb{zFhBBj)&_M77Eq1K`exK`zg|1^|NhMMA#RGy zuZqA*c(2RzJfqijTL+9{aZi@i*g8LBy(6%`ghcJdhs)kOLEaHPx&8DS;s4AMIMdJWFE`^0 z^P~tBKpq@N65bQowyY!avJX4HMVzJHdX0}|K63-zC^}i5?l72wL1E zcgXMRtklMmS(S6x1w_M1Y2<_F)8T%NzMDG(-Gw`Xc4XRq+4E6kxztmuFCukQ%u->{ zSq6~1N64x^0wNxTbIr@qE)%PognJpl*49r)yj;`1t$)CB?`SeCpnj$b%>XK!Cmpb_ zlO-Q%EQaQWN!{um@iyCkn{hgQ>w>7Wp#8G9d-&-DSEWA}v9DFYIp{fC#|X1q!AIO` zF>B#xhU39AxJhNtnTq{o8@CPX(~>?$MIVkgn}lsnhUpDOL|iesSa8|=DO@KZ6X$yi z5vkF$B@Bo3t?OsPwQ$bCEsHw9mgxIfAug2`oU<^fte()iM4B7vZh>oQr&PM@AQBj3 F{|3^Af%yOc diff --git a/reference/vertex_.gif b/reference/vertex_.gif deleted file mode 100644 index a5c127480b90ef3874d7bb1c19d5d661591e9a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2160 zcmV-$2#@ziNk%w1VT1sL0K@l=)q{hB`uh6H%F1+f zbhERwtgNhTY;5W2>E`C<^78UzWMrG0n~I8x+1c65%*^8A;(L30($doG?CkjX`1JJj z_V)Jg@9+Hl{LjzNA^8LV00000EC2ui0E7U9000I5;P+uhz@TtQ6y9(L& zAA-xZ&Kc(C=;`X~?CtLF@bU5)&cl_jBA&L*=N0PICJX6dC_0V zTAm(e`aq7Q%MBcoDqYI7sne%Wqe`7hRqD&0KTmoa`hZ^ti!V877)!RS*|TWVs$I*r zty{Mou0rTQZ(ATtB)U@k`f@CSzkmY^9!$8f;lqd%D^@)As!zLtUg`Y`VT0erm@{kM z%z1EQi*&bX1@Ov&QKT9Gd+;!zb&uDuW6PdRySDAyxO3aq5O?m+yD3dmwye6faoxz1 zD__n$!Drugg&q@LS?pid#$7kx&b@nX1iUvuAB~qf>g(BC?^w^iz5Dm@9-&T{XOWRh%B~v;A{AmnBj>j{L;7Rha>z{1ICxI|t%YPRUQs4lX? zwkvKAF}ixJv+>H?;=A~stFOD`mN{*{|AxqKu>KY-;=$%Ns_?!6ySXm74@=1KrVdwZ zaKv^_Ot8iVUQ8;;8`JA&xA!8PG078(%r46Vx=b<5^vV1&%{6oEt;Y%D{G!Q-3jFQO zKC=oms6z9+a?uv*oN~jJGTrpi_UhX2(o)N3bI)1h>a^7=N8Pp23Dj#W*ie@`w$@*l zi?P^iySFvgaq~&_*=~ z0Ssv2-$;eS9{TWyKn$V~he*UC8u5rk)S>JEgv2H?AOZ()q7~kAMth z9VJiz3Gh*At&xBt7s<#*I`WZ_jHDzdNy$n^@{k_1q$W4X$xeFGkjVSr`367$36%1b zrc5O&SEp;=uGDU#!0FJOu(J+e5X9) zNzZxOv!3|8r#|z^&wct6p9csiJ3SQ8f*SOo2u-L$7s}9vI`p9o9VmbxO3{j1^r9BM zzyU5G(ezyZ;G-Z7sYpjk(vq6=q$o|PN=@3)?5y;qFpa59XUfq~LU5D{xIj*Ks?(nG z^rt=zDo}?i)S?pgs76idQ5Dcq<0#;%P>rfor%KhTTJ@?}&8k+d+SJx;^{ZeFt60U_ z0H)fsgQIMKTGz_fwz~DLaE+^6=StVQ# z#3ywD3X)VZjt2KbAyAI8l&4H(fG|WfCpi%;#IcWw%;U>o4zrlWTo0gVSp>>phBnsB m<~FDrS%^a)!pO6p_sr)$n_0(YSTGJk0029yJcGjk diff --git a/reference/vertex_/index.html b/reference/vertex_/index.html deleted file mode 100644 index 407543d..0000000 --- a/reference/vertex_/index.html +++ /dev/null @@ -1,208 +0,0 @@ ---- -layout: withcc -title: vertex() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    vertex()

    Examples
    example pic
    beginShape(POINTS);
    -
    -vertex(30, 20);
    -
    -vertex(85, 20);
    -
    -vertex(85, 75);
    -
    -vertex(30, 75);
    -
    -endShape();
    example pic
    // Drawing vertices in 3D requires P3D
    -
    -// or OPENGL as a parameter to size()
    -
    -size(100, 100, P3D);
    -
    -beginShape(POINTS);
    -
    -vertex(30, 20, -50);
    -
    -vertex(85, 20, -50);
    -
    -vertex(85, 75, -50);
    -
    -vertex(30, 75, -50);
    -
    -endShape();
    example pic
    noStroke();
    -
    -PImage a = loadImage("arch.jpg");
    -
    -beginShape();
    -
    -texture(a);
    -
    -// "arch.jpg" is 100x100 pixels in size so
    -
    -// the values 0 and 100 are used for the
    -
    -// parameters "u" and "v" to map it directly
    -
    -// to the vertex points
    -
    -vertex(10, 20, 0, 0);
    -
    -vertex(80, 5, 100, 0);
    -
    -vertex(95, 90, 100, 100);
    -
    -vertex(40, 95, 0, 100);
    -
    -endShape();
    DescriptionAll shapes are constructed by connecting a series of vertices. vertex() is used to specify the vertex coordinates for points, lines, triangles, quads, and polygons and is used exclusively within the beginShape() and endShape() function.

    Drawing a vertex in 3D using the z parameter requires the P3D or OPENGL parameter in combination with size as shown in the above example.

    This function is also used to map a texture onto the geometry. The texture() function declares the texture to apply to the geometry and the u and v coordinates set define the mapping of this texture to the form. By default, the coordinates used for u and v are specified in relation to the image's size in pixels, but this relation can be changed with textureMode().
    Syntax
    vertex(x, y); 
    -
    -vertex(x, y, z); 
    -
    -vertex(x, y, u, v); 
    -
    -vertex(x, y, z, u, v);
    Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    xint or float: x-coordinate of the vertex
    yint or float: y-coordinate of the vertex
    zint or float: z-coordinate of the vertex
    uint or float: horizontal coordinate for the texture mapping
    vint or float: vertical coordinate for the texture mapping
    UsageApplication & Web
    RelatedbeginShape()
    - - endShape()
    - - bezierVertex()
    - - curveVertex()
    - - texture()
    - - - diff --git a/reference/vertex_2.gif b/reference/vertex_2.gif deleted file mode 100644 index a826d18287b8292113dd112c2f4da86a1f89e3be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5220 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 - - - - Name - -

    void

    - - - - - - - - Examples - - - -
    void setup() {
    -
    -  size(200, 200);
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  line(10, 100, 190, 100);
    -
    -}
    - - - - - - - - Description - - Keyword used indicate a function returns no value. Each function must either return a value of a specific datatype or use the keyword void to specify it returns nothing. - - - - - - - - - - Syntax - -
    void function {
    -
    -  statements
    -
    -}
    - - - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - -
    functionany function that is being defined or implemented
    statementsany valid statements
    - - - - - - - - Usage - - Web & Application - - - - - - - diff --git a/reference/while_.gif b/reference/while_.gif deleted file mode 100644 index 6ee5cf33c12a95f9e0f233c85fa4f79f25f2f9ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2190 zcmV;92yypENk%w1VT1sL0K@l=)q{hB`uh5Fb92eb z$+NSwXJ=>W>FMU?=JN9L00023t*x7zn~I8x+1c6R;^KUKe9X+u($doG?CkjX`1JJj z_V)Jg@9+Kn{m;+OA^8LV00000EC2ui0E7U9000I5;P+u0PIBizsH*yxI zhL=8wQ^|4zhoeZ7DqYI7sne%Wqe_L^a%azy+=4pL*MVY74jRIW9ZR;X*|TWVs$I*L zEr+TPI>^iR#}bLH61%nxi=eOHzkmY^9!$8f;lqd#hpoz!?w?k8yFS>!H?if*m@{h* zyqKcgY*+!bYCzPe2EQIsr&hqawd>cgW3z@pySDAyxO3~?ja#;F)*9Z%?OFFEX~~pP zrxw8ci1X*rqf4Joy}I@3uMue2;8|X1hsP&_?Yo?L^Xur-t6!hKwRYj3L)#5+n!E?| z=h^Gu&)>TH;M~PmTru>GhroUK3DDpFf($mu+IsqIpLL0<|pNu`cXM!kSFTpWRYmbxt^Lp z&ex=haLTEte_)PSC7U(6iD!;`7K&Y;GS=Xrq<*exDX6e!D665g{(57X z!VbG9N-`sOz`7@tP>LwmOP!w$h5}>ZQ+~E2p;A za%--;Qo>uVsPxvGZl%r2i*JMA25g(S)1Jz1xB2pD@2l-59Oc3X&+G7x5L+wp#4lFt zud28TEHJ_9*2*x#7`LeLn-`Zn<-Wf5i}JrJo6NGJ+rG?k%raBja?OLnyr9P)w>LAn zBd3gWe<$~R^U(|@oocL1FX(izQRmz%&GFg{_0K?q3o^evKb>sVNDpnW#XghG-qa1N z%^%w&yDhZNSl_!e*In!S_0CxyR zw|m!Jbm5X8>iF3kN8Y*rbd+;GI&`HketLANi>}}0dIvr(=vt4xy61w^?zio?vyQmP zgsa~B5v}t+e2>2yTl;U!`v!Zi&Byk6;-L!={q@*qul@F}1)x9x(*qB=00ES5{`u&q zum1Y%x9|S@@UtJj^1H`x|NZ#quRj6vySzIA0RW%?14zID8nA!}JfH#-$iM|Uuz?U% zAOR-Wzpw>sf*8!81~dvCNz;Xfo^*9o8SzmILArOa+>p;=p^ShF_g}By7QgzjOPK? znVj?xm1>kZ7Ko`#XG+tW+VrM4&8bdz%2S-a zQ~*5-SLc_6NM&8uG9%76qg;HL}-tY8OA*uon2u!v2p zVi(KU!upi~9!RDC#Mal!`t`Dw%`9d&tJ%(S_OqT1Eoes@TEPOgv8YY0YFEqJ)3Wxp zu#IhMT`Sw#+Say|p{pTlr<&gS_P4+du5gD-+~OKnxPOtX1(AiJ<~sMe(2cHir%PSu zdY~`=%BA6fm|NZMdiT5Fg>GuFt6NoWH@xUguX?*X-ZoCgLfhr;dgn{u>Z-;s+v$$x zUKQWt`uD#84zPgnE2A|zBr;y9%w`tM;09-=GfG<0U5=v{%D~sb7|w8p7ZV@>^}#L} z*h+XNW16;@_{1nqv5Lp?7VeM;Yazx9io9Z!so40&IL@(-j{=wBc!ydaNJ(Cbl9M7E z`N&94vWw#)mmmKGP(c<4Y4Rc&kXZT3SkAJRcfymo_=H9%35SUHfsitr`OIievp*C9 znvzV&72wE6MB+i`I@|fqcbLO=xXAxf`zd04%_P4`4X@(U6V{ Qw50d^ - - - - Name - -

    while()

    - - - - - - - - Examples - - - -
    example pic
    int i=0;
    -
    -while(i<80) {
    -
    -  line(30, i, 80, i);
    -
    -  i = i + 5;
    -
    -}
    - - - - - - - - Description - - Controls a sequence of repetitions. The while structure executes a series of statements continuously while the expression is true. The expression must be updated during the repetitions or the program will never "break out" of while. - - - -

    - -This function can be dangerous because the code inside the while() loop will not finish until the expression inside while() becomes true. It will lock out all other code from running (mouse events will not be updated, etc.) So be careful because this can lock up your code (and sometimes even the Processing environment itself) if used incorrectly. - - - - - - - - Syntax - -
    while (expression) {
    -
    -  statements
    -
    -
    -
    -}
    - - - - - - - - Parameters - - - - - - - - - - - - - - - - - - - - - - - -
    expressiona valid expression
    statementsone or more statements
    - - - - - - - - - - Usage - - Web & Application - - - - - - - - - - Related - - for()
    - - - - - diff --git a/reference/width.gif b/reference/width.gif deleted file mode 100644 index 2542d62c9facfa9d531603c13c2080bad1dfdb9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1980 zcmV;t2SfNrNk%w1VT1sL0K@FLqY(f$4XwY9ax#KgS3yyD{G+}zys^z_!& z*7EZ5_V)JX=H~D3@6^=P+1c6f@bJ#g&fnkP>gwv++S=gY;N;}w00030|Ns8}{`&g* z`1tty`}_I%`OC}8A^8LV00000EC2ui0E7U9000I5pd^grW1eWLu59bRa4fInDBbs` zf8?qBz@TtQEE41ejE#mc3Zif~JprN9pq@|{(sHv)} ztf3Z%dk}t_5``0=pcf6hyuH4^z`?@9#Kp$P4HvGJ2$u?(W)cXuxx4|_*xB0K+}+;a z;Njxq0ldlwug$W5H`KZf*AxKr^!4`l`1$(#{Qds_04QABr7T^AS!O=H3m|WvgNG0! zN}NcsqQ#3CGiuaGPar{bZPwX1po^hH2N4$ks9edirOTHvW6GRKvu4c*59fJQR_Wlg z5eIfPM5!`?(W6L{DqYI7sne%WqefMUQ|B&_2t*1f>9D9#24KUA9ZR;X*|TWVs$HA* zs7eR(%JIzlQvf`94!nZpz_+j8zkmY^9!$8f;lqW&8hsnE+<{86e!>Gl^eYDs9yVy+ z%(=7Y&!9t#9!b^YhTwuzr6kX z`19+>;6ZhQ1#meAS#y-lCY=Y>4M5-jg8Mb-;DhBAry76&2-uzg?-|Geb=GN+!G{?@ zDB_4BZg5_J>ka5$fzfSP9ep5%NaBn%+GpZ~D6%I~hAnakBZxHyDWrEd{+FYQ7_umx zj~)U!8BWI$|j{_<_W5!qW-C9sf?alXsU_!$f~8T5(?|2tK!*et$N;?B&oX6%4?jya$0Gb z!x9TAow&*xEV9X-S!|oLLK`jrm(v0(sI}KZnQgAyb_?gX&W0%jANt*Yb$WWGcJrU#a$LW zYQXSfT%yLRmOHV>5L&!0$t8oF@4LIAET_uN>f5o)`e z9oQW7(MTt)^wJp&T{O%9i_G-YR979e(?(mZ_10En4Yje=axM1QKYRT!vr)@T_S$Uc zY_^dQZ!C4&bhG{Tl=#NXa@~A$efO6ktKIkDRsS7#;CmCUxYCBB4feB(M-Fu3d8eJY zDh#U}% z;58U{w#s#mOvuQf26sV0xH-;sWNL*7M+k}z;*E14jFAOa$if!7@P#mpp$uJULcp!; zSbE5z4%<+}!`-l26$qjbhe*UC8u5roBw`Og=s*xL;fYZE!4fT)LJ-a1idZzk6j9j3 z57pp{U<{)e$4Ey10cwCm9viRSm$XHg(-qMl)9e! z^rt`#>d=TLA%CtjJ{;nyP?yTork3tHMeEOTe7GV2K<7Y7)ty$i%GIuVm1x8{PkN|o z7unE;I>Je-TGz_fw(_p1a7&Idn3IXgRHj9kA)a3M%Gco;Z#6k`jZf-olDy0&I?_Rm zVi(KU#ya+T{$Y$q5cLzT6zH&s^`2%o%h~R^g+gkYi&laX8;7I>v*t^!YFBGMs=y^6 zS8>gS1VECzoaD6b%dKvAn_HZ`b|>r^>002Ad|0Wm! diff --git a/reference/width/index.html b/reference/width/index.html deleted file mode 100644 index 555deba..0000000 --- a/reference/width/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: withcc -title: width | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    width

    Examples
    example pic
    noStroke();
    -
    -background(0);
    -
    -rect(0, 40, width, 20);
    -
    -rect(0, 60, width/2, 20);
    DescriptionSystem variable which stores the width of the display window. This value is set by the first parameter of the size() function. For example, the function call size(320, 240) sets the width variable to the value 320. The value of width is zero until size() is called.
    UsageWeb & Application
    Relatedheight
    - diff --git a/reference/year_/index.html b/reference/year_/index.html deleted file mode 100644 index 40df365..0000000 --- a/reference/year_/index.html +++ /dev/null @@ -1,146 +0,0 @@ ---- -layout: withcc -title: year() | reference ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name

    year()

    Examples
    void setup() {
    -
    -  PFont metaBold;
    -
    -  metaBold = loadFont("fonts/Meta-Bold.ttf"); 
    -
    -  setFont(metaBold, 44); 
    -
    -  noLoop();
    -
    -}
    -
    -
    -
    -void draw() {
    -
    -  int d = day();    // Values from 1 - 31
    -
    -  int m = month();  // Values from 1 - 12
    -
    -  int y = year();   // 2003, 2004, 2005, etc.
    -
    -  String s = String.valueOf(d);
    -
    -  text(s, 10, 28);
    -
    -  s = String.valueOf(m);
    -
    -  text(s, 10, 56); 
    -
    -  s = String.valueOf(y);
    -
    -  text(s, 10, 84);
    -
    -}
    DescriptionProcessing communicates with the clock on your computer. The year() function returns the current year as an integer (2003, 2004, 2005, etc).
    Syntax
    year()
    Parameters - - - - - - - - - - - -
    UsageWeb & Application
    Related - - millis()
    - - second()
    - - minute()
    - - hour()
    - - day()
    - - month()
    - -
    - - - diff --git a/sketches/2d1.pde b/sketches/2d1.pde deleted file mode 100644 index a7ed223..0000000 --- a/sketches/2d1.pde +++ /dev/null @@ -1,17 +0,0 @@ -int i = 0; -void setup() { - size(200, 200); - background(255); - smooth(); - strokeWeight(15); - frameRate(24); -} -void draw() { - stroke(random(50), random(255), random(255), 100); - line(i, 0, random(0, width), height); - if (i < width) { - i++; - } else { - i = 0; - } -} \ No newline at end of file diff --git a/sketches/bannerSketch.pde b/sketches/bannerSketch.pde deleted file mode 100644 index 4dde740..0000000 --- a/sketches/bannerSketch.pde +++ /dev/null @@ -1,132 +0,0 @@ -/* - PROCESSINGJS.COM HEADER ANIMATION - MIT License - F1lT3R/Hyper-Metrix - Native Processing Compatible - */ - -// Set number of circles -int count = 20; -// Set maximum and minimum circle size -int maxSize = 100; -int minSize = 20; -// Build float array to store circle properties -float[][] e = new float[count][5]; -// Set size of dot in circle center -float ds=2; -// Set drag switch to false -boolean dragging=false; -// integers showing which circle (the first index in e) that's locked, and its position in relation to the mouse -int lockedCircle; -int lockedOffsetX; -int lockedOffsetY; -// If user presses mouse... -void mousePressed () { - // Look for a circle the mouse is in, then lock that circle to the mouse - // Loop through all circles to find which one is locked - for (int j=0;j< count;j++) { - // If the circles are close... - if (sq(e[j][0] - mouseX) + sq(e[j][1] - mouseY) < sq(e[j][2]/2)) { - // Store data showing that this circle is locked, and where in relation to the cursor it was - lockedCircle = j; - lockedOffsetX = mouseX - (int)e[j][0]; - lockedOffsetY = mouseY - (int)e[j][1]; - // Break out of the loop because we found our circle - dragging = true; - break; - } - } -} -// If user releases mouse... -void mouseReleased() { - // ..user is no-longer dragging - dragging=false; -} - -// Set up canvas -void setup() { - // Frame rate - frameRate(60); - // Size of canvas (width,height) - size(940, 78); - // Stroke/line/border thickness - strokeWeight(1); - // Initiate array with random values for circles - for (int j=0;j< count;j++) { - e[j][0]=random(width); // X - e[j][1]=random(height); // Y - e[j][2]=random(minSize, maxSize); // Radius - e[j][3]=random(-.12, .12); // X Speed - e[j][4]=random(-.12, .12); // Y Speed - } -} - -// Begin main draw loop (called 25 times per second) -void draw() { - // Fill background black - background(0); - // Begin looping through circle array - for (int j=0;j< count;j++) { - // Disable shape stroke/border - noStroke(); - // Cache diameter and radius of current circle - float radi=e[j][2]; - float diam=radi/2; - if (sq(e[j][0] - mouseX) + sq(e[j][1] - mouseY) < sq(e[j][2]/2)) - fill(64, 187, 128, 100); // green if mouseover - else - fill(64, 128, 187, 100); // regular - if ((lockedCircle == j && dragging)) { - // Move the particle's coordinates to the mouse's position, minus its original offset - e[j][0]=mouseX-lockedOffsetX; - e[j][1]=mouseY-lockedOffsetY; - } - // Draw circle - ellipse(e[j][0], e[j][1], radi, radi); - // Move circle - e[j][0]+=e[j][3]; - e[j][1]+=e[j][4]; - - - /* Wrap edges of canvas so circles leave the top - and re-enter the bottom, etc... */ - if ( e[j][0] < -diam ) { - e[j][0] = width+diam; - } - if ( e[j][0] > width+diam ) { - e[j][0] = -diam; - } - if ( e[j][1] < 0-diam ) { - e[j][1] = height+diam; - } - if ( e[j][1] > height+diam) { - e[j][1] = -diam; - } - - // If current circle is selected... - if ((lockedCircle == j && dragging)) { - // Set fill color of center dot to white.. - fill(255, 255, 255, 255); - // ..and set stroke color of line to green. - stroke(128, 255, 0, 100); - } - else { - // otherwise set center dot color to black.. - fill(0, 0, 0, 255); - // and set line color to turquoise. - stroke(64, 128, 128, 255); - } - - // Loop through all circles - for (int k=0;k< count;k++) { - // If the circles are close... - if ( sq(e[j][0] - e[k][0]) + sq(e[j][1] - e[k][1]) < sq(diam) ) { - // Stroke a line from current circle to adjacent circle - line(e[j][0], e[j][1], e[k][0], e[k][1]); - } - } - // Turn off stroke/border - noStroke(); - // Draw dot in center of circle - rect(e[j][0]-ds, e[j][1]-ds, ds*2, ds*2); - } -} diff --git a/sketches/basic-example.pde b/sketches/basic-example.pde deleted file mode 100644 index d1ee766..0000000 --- a/sketches/basic-example.pde +++ /dev/null @@ -1,53 +0,0 @@ -/* - PROCESSINGJS.COM - BASIC EXAMPLE - Delayed Mouse Tracking - MIT License - Hyper-Metrix.com/F1LT3R - Native Processing compatible -*/ - -// Global variables -float radius = 50.0; -int X, Y; -int nX, nY; -int delay = 16; - -// Setup the Processing Canvas -void setup(){ - size( 200, 200 ); - strokeWeight( 10 ); - frameRate( 15 ); - X = width / 2; - Y = width / 2; - nX = X; - nY = Y; -} - -// Main draw loop -void draw(){ - - radius = radius + sin( frameCount / 4 ); - - // Track circle to new destination - X+=(nX-X)/delay; - Y+=(nY-Y)/delay; - - // Fill canvas grey - background( 100 ); - - // Set fill-color to blue - fill( 0, 121, 184 ); - - // Set stroke-color white - stroke(255); - - // Draw circle - ellipse( X, Y, radius, radius ); -} - - -// Set circle's next destination -void mouseMoved(){ - nX = mouseX; - nY = mouseY; -} - diff --git a/sketches/jmartinho_tr-lines_2011.pde b/sketches/jmartinho_tr-lines_2011.pde deleted file mode 100644 index 334c45d..0000000 --- a/sketches/jmartinho_tr-lines_2011.pde +++ /dev/null @@ -1,166 +0,0 @@ -// (C) JOAO MARTINHO MOURA, 2011 -// -// www.jmartinho.net -// -// -// HTML5 Visual Art - 'Transversal Lines', 2011 -// -// Transversal Lines: infinite abstract visual b&w line work, -// by Joao Martinho Moura, 2011. -// -// Made in processing & processingJS -// -// -// -// -// http://jmartinho.net/digitalArt-html5/index.php?art=tr-lines -// - - - - -int contadorTempoRefresh = 0; - -int tempoBrancoPreto = 0; -int tempoApaga = 0; -int tempo = 0; - -int tamanhoWIDTH = 575; -int tamanhoHEIGHT = 480; - -int numeroPontos = 30; - -int[] NumerosArrayX = new int[numeroPontos]; -int[] NumerosArrayY = new int[numeroPontos]; - - -int[] RND_NumerosArrayX = new int[numeroPontos]; -int[] RND_NumerosArrayY = new int[numeroPontos]; - - -int contaMouse=0; -int MX = tamanhoWIDTH/2; -int MY = tamanhoHEIGHT/2; - -void setup() { - - frameRate(25); - smooth(); - background(255,255,255); - size(tamanhoWIDTH, tamanhoHEIGHT); - - for (int i = 0; i < numeroPontos; i++) { - NumerosArrayX[i] = tamanhoWIDTH/2; - NumerosArrayY[i] = tamanhoHEIGHT/2; - } - - for (int i = 0; i < numeroPontos; i++) { - RND_NumerosArrayX[i] = tamanhoWIDTH/2; - RND_NumerosArrayY[i] = tamanhoHEIGHT/2; - } - -} - -void draw() { - - tempoApaga ++; - - if (tempoApaga>100) { - fill(255,255,255,10); - noStroke(); - rect(-20,-20,tamanhoWIDTH+20,tamanhoHEIGHT+20); - tempoApaga=0; - } - - tempo++; - if (mousePressed == true) { - MX = mouseX; - MY = mouseY; - } - else { - if (tempo>15) { - MX = int(random (50,tamanhoWIDTH-50)); - MY = int(random (100,tamanhoHEIGHT-100)); - tempo=0; - } - } - - contaMouse ++; - - if (contaMouse < numeroPontos) { - - if ( (MX > 40) && (MX < tamanhoWIDTH-40) ) { - NumerosArrayX[contaMouse] = MX; - RND_NumerosArrayX[contaMouse] = MX + int(random(-10,10)); - } - - if ( (MY > 40) && (MY < tamanhoHEIGHT-40) ) { - NumerosArrayY[contaMouse] = MY; - RND_NumerosArrayY[contaMouse] = MY + int(random(-10,10)); - } - } - else { - contaMouse=0; - } - - tempoBrancoPreto++; - if (tempoBrancoPreto>400) { - tempoBrancoPreto=0; - } - - if (tempoApaga==50) { - strokeWeight(10); - } - else { - strokeWeight(1); - } - - - if (tempoApaga==400) { - strokeWeight(10); - } - else { - strokeWeight(1); - } - - for (int i = 0; i < numeroPontos; i ++) { - if ((i>0) && (i < numeroPontos)) { - stroke(10,10,10,20); - line(RND_NumerosArrayX[i],RND_NumerosArrayY[i],RND_NumerosArrayX[i-1],RND_NumerosArrayY[i-1]); - if (tempoBrancoPreto<200) { - stroke(5,5,5,80); - } - else { - stroke(255,255,255,90); - } - - line(NumerosArrayX[i],NumerosArrayY[i],NumerosArrayX[i-1],NumerosArrayY[i-1]); - } - - NumerosArrayX[i] = NumerosArrayX[i] + int(random(-3,3)); - NumerosArrayY[i] = NumerosArrayY[i] + int(random(-3,3)); - - - RND_NumerosArrayX[i] = RND_NumerosArrayX[i] + int(random(-5,5)); - RND_NumerosArrayY[i] = RND_NumerosArrayY[i] + int(random(-5,5)); - - - if (NumerosArrayX[i]<0 || NumerosArrayX[i]>width) NumerosArrayX[i] = random(0,width); - if (NumerosArrayY[i]<0 || NumerosArrayY[i]>height) NumerosArrayY[i] = random(0,height); - - if (RND_NumerosArrayX[i]<0 || RND_NumerosArrayX[i]>width) RND_NumerosArrayX[i] = random(0,width); - if (RND_NumerosArrayY[i]<0 || RND_NumerosArrayY[i]>height) RND_NumerosArrayY[i] = random(0,height); - - - } - - contadorTempoRefresh++; - if (contadorTempoRefresh>1600) { - background(255); - contadorTempoRefresh=0; - } - -} - - - diff --git a/sketches/my-life-aquatic/Boid.pde b/sketches/my-life-aquatic/Boid.pde deleted file mode 100644 index 7d5310a..0000000 --- a/sketches/my-life-aquatic/Boid.pde +++ /dev/null @@ -1,134 +0,0 @@ -class Boid { - - private PVector location; - - private PVector velocity; - private PVector acceleration; - private PVector location; - - private float maxForce; - private float maxSpeed; - private float wanderTheta; - - private boolean hasArrive; - - // constructor used by fish - public Boid( PVector _location, float _maxSpeed, float _maxForce) { - createBoid(_location, _maxSpeed, _maxForce); - velocity = new PVector( random( -maxSpeed, maxSpeed ), random( -maxSpeed, maxSpeed ) ); - } - - // constructor used by bubbles - public Boid( PVector _location, float _maxSpeed, float _maxForce, PVector velocity) { - this.velocity = velocity.get(); - createBoid(_location, _maxSpeed, _maxForce); - } - - private void createBoid(PVector _location, float _maxSpeed, float _maxForce) { - location = _location.get(); - maxSpeed = _maxSpeed; - maxForce = _maxForce; - acceleration = new PVector( 0, 0 ); - wanderTheta = 0; - hasArrive = false; - } - - protected void update() { - velocity.add(acceleration); - velocity.limit(maxSpeed); - location.add(velocity); - acceleration.mult(0); - } - - protected void debugRender() { - noStroke(); - fill(255, 0, 0); - ellipse(location.x, location.y, 10, 10); - } - - private PVector steer( PVector _target, boolean _slowdown ) { - PVector steer; - PVector desired = PVector.sub( _target, location ); - - float dist = desired.mag(); - - if ( dist > 0 ) { - desired.normalize(); - - if ( _slowdown && dist < 60 ) { - desired.mult( maxSpeed * (dist / 60) ); - if ( dist < 10 ) { - hasArrive = true; - } - } - else { - desired.mult( maxSpeed ); - } - - steer = PVector.sub( desired, velocity ); - steer.limit( maxForce ); - } - else { - steer = PVector( 0, 0 ); - } - - return steer; - } - - protected void seek(PVector _target) { - acceleration.add( steer( _target, false ) ); - } - - protected void arrive( PVector _target ) { - acceleration.add( steer( _target, true ) ); - } - - protected void flee( PVector _target ) { - acceleration.sub( steer( _target, false ) ); - } - - protected void wander() { - float wanderR = 5; - float wanderD = 100; - float change = 0.05; - - wanderTheta += random( -change, change ); - - PVector circleLocation = velocity.get(); - circleLocation.normalize(); - circleLocation.mult( wanderD ); - circleLocation.add( location ); - - PVector circleOffset = new PVector( wanderR * cos( wanderTheta), wanderR * sin( wanderTheta ) ); - PVector target= PVector.add( circleLocation, circleOffset ); - - seek( target ); - } - - protected void evade( PVector _target ) { - float lookAhead = location.dist( _target ) / (maxSpeed * 2); - PVector predictedTarget = new PVector( _target.x - lookAhead, _target.y - lookAhead ); - flee( predictedTarget ); - } - - public float getMaxSpeed() { - return maxSpeed; - } - - public float getMaxForce() { - return maxForce; - } - - public PVector getVelocity() { - return velocity; - } - - public void setVelocity(PVector velocity) { - this.velocity = velocity; - } - - public PVector getLocation() { - return this.location; - } -} - diff --git a/sketches/my-life-aquatic/Bubble.pde b/sketches/my-life-aquatic/Bubble.pde deleted file mode 100644 index 01bb6c2..0000000 --- a/sketches/my-life-aquatic/Bubble.pde +++ /dev/null @@ -1,27 +0,0 @@ -class Bubble extends Boid { - float diameter; - Color mainColor; - String id; - - Bubble(Color myColor) { - PVector location = new PVector(int(random(0, width - 1)), height - 1); - diameter = int(random(30, 50)); - super(location, 0.8, 0.2, new PVector(0, -1)); - mainColor = myColor; - } - - void render() { - smooth(); - stroke(mainColor); - strokeWeight(3); - noFill(); - ellipseMode(CENTER); - ellipse(location.x, location.y, diameter, diameter); - } - - void update() { - velocity.x = random(-0.4, 0.4); - super.update(); - } -} - diff --git a/sketches/my-life-aquatic/Fish.pde b/sketches/my-life-aquatic/Fish.pde deleted file mode 100644 index 97df87f..0000000 --- a/sketches/my-life-aquatic/Fish.pde +++ /dev/null @@ -1,400 +0,0 @@ -class Fish extends Boid { - - private Flagellum body; - private Flagellum tailR; - private Flagellum tailL; - private Flagellum finR; - private Flagellum finL; - - // After eating, this gets set to frameRate/2. It is decremented - // each loop by one until it hits zero. While it is non-zero, we display - // the fish's mouth - private int lastAteTimer; - private int numBodySegments; - private int numTailSegments; - private int numFinSegments; - private int foodEaten; - private int transparency; - private int explosionTimer; - - private float bodySizeW; - private float bodySizeH; - private float tailSizeW; - private float tailSizeH; - - private Color mainColor; - private Color stripeColor; - private Color outlineColor; - - private PVector mousePosition; - private PVector mousePositionOld; - - private boolean isExploding; - - // Constructor to create your personal, local fish - public Fish(PVector location, float maxSpeed, float maxForce) { - stripeColor = color(int(random(255)), int(random(255)), int(random(255))); - bodySizeW = random( 100, 200 ); - bodySizeH = (bodySizeW * 0.3 + random( 5 )); - mousePosition = new PVector(0, 0); - lastAteTimer = 0; - isExploding = false; - foodEaten = 0; - transparency = 255; - - createFish(location, maxSpeed, maxForce); - } - - private void createFish(PVector location, float maxSpeed, float maxForce) { - mousePositionOld = new PVector(mousePosition.x, mousePosition.y); - super(location, maxSpeed, maxForce); - mainColor = #000000; - outlineColor = #D8D8C0; - - numBodySegments = 10; - - numTailSegments = 10; - tailSizeW = bodySizeW * 0.6; - tailSizeH = bodySizeH * 0.25; - - body = new Flagellum( bodySizeW, bodySizeH, numBodySegments ); - - tailR = new Flagellum( tailSizeW, tailSizeH, numTailSegments ); - tailL = new Flagellum( tailSizeW * 0.8, tailSizeH * 0.8, numTailSegments ); - - numFinSegments = 9; - finR = new Flagellum( tailSizeW * 0.5, tailSizeH, numFinSegments ); - finL = new Flagellum( tailSizeW * 0.5, tailSizeH, numFinSegments ); - } - - public void update() { - super.update(); - - checkBorders(); - // super.wander(); - - body.muscleFreq = norm(super.velocity.mag(), 0, 1) * 0.05; - - // Align body to velocity - body.theta = super.velocity.heading2D(); - body.swim(); - - float diffX = body.spine[numBodySegments-1][0] - body.spine[numBodySegments-2][0]; - float diffY = body.spine[numBodySegments-1][1] - body.spine[numBodySegments-2][1]; - float angle = atan2( diffY, diffX ); - - tailR.muscleFreq = norm( super.velocity.mag(), 0, 1 ) * 0.08; - tailR.theta = angle + (PI * 0.95); - tailR.swim(); - - tailL.muscleFreq = norm( super.velocity.mag(), 0, 1 ) * 0.08; - tailL.theta = angle + (PI * 1.05); - tailL.swim(); - - finR.muscleFreq = norm( super.velocity.mag(), 0, 1 ) * 0.04; - finR.swim(); - - finL.muscleFreq = norm( super.velocity.mag(), 0, 1 ) * 0.04; - finL.swim(); - - // only change fish velocity if the mouse moved. this makes the fish keep moving as opposed - // to "seizuring up" when they reach the mouse - if(mousePosition.x != mousePositionOld.x || - mousePosition.y != mousePositionOld.y) - seek(mousePosition); - mousePositionOld = mousePosition; - - // logic to explode if fish ate too much (called from explode method) - if(isExploding) { - bodySizeW = bodySizeW * 1.3; - bodySizeH = bodySizeH * 1.3; - - transparency = (explosionTimer / frameRate) * 255; - - explosionTimer--; - } - } - - public void render() { - noStroke(); - - // render fins - PVector finLLocation = new PVector( super.location.x + body.spine[3][0], super.location.y + body.spine[3][1] ); - PVector finRLocation = new PVector( super.location.x + body.spine[3][0], super.location.y + body.spine[3][1] ); - - fill(mainColor, transparency); - renderFin(finR, finLLocation, bodySizeH * 0.5, 1); - fill(mainColor, transparency); - renderFin(finL, finRLocation, -bodySizeH * 0.5, -1); - - // render body - fill(outlineColor, transparency); - renderBody( body, super.location, 1.1, 0.1 ); - fill(stripeColor, transparency); - renderBody( body, super.location, 0.8, 0.15 ); - fill(mainColor, transparency); - renderBody( body, super.location, 0.5, 0.25 ); - - // render tails - PVector tailLocation = new PVector( super.location.x + body.spine[numBodySegments - 1][0], super.location.y + body.spine[numBodySegments - 1][1] ); - fill(mainColor, transparency); - renderTail( tailR, tailLocation, 0.75 ); - fill(mainColor, transparency); - renderTail( tailL, tailLocation, 0.75 ); - - // render head - PVector headLocation = new PVector( super.location.x + body.spine[1][0], super.location.y + body.spine[1][1] ); - renderHead( headLocation, bodySizeW * 0.1, bodySizeW * 0.06 ); - - // render mouth if fish ate recently - fill(250, 128, 114, transparency); - if(lastAteTimer > 0) { - lastAteTimer--; - float mouthSize = (bodySizeW*.05) * (float) lastAteTimer / (frameRate/2) - ellipse(location.x,location.y,mouthSize,mouthSize); - } - } - - private void renderHead( PVector _location, float _eyeSize, float _eyeDist ) { - float diffX = body.spine[2][0] - body.spine[1][0]; - float diffY = body.spine[2][1] - body.spine[1][1]; - float angle = atan2( diffY, diffX ); - - pushMatrix(); - translate( _location.x, _location.y ); - rotate( angle ); - - fill(mainColor, transparency); - ellipse( 0, _eyeDist, _eyeSize, _eyeSize ); - - fill(stripeColor, transparency); - ellipse( -3, _eyeDist, _eyeSize * 0.35, _eyeSize * 0.35 ); - - popMatrix(); - - pushMatrix(); - translate( _location.x, _location.y ); - rotate( angle ); - - fill(mainColor, transparency); - ellipse( 0, -_eyeDist, _eyeSize, _eyeSize ); - - fill(stripeColor, transparency); - ellipse( -3, -_eyeDist, _eyeSize * 0.35, _eyeSize * 0.35 ); - - popMatrix(); - } - - private void renderBody( Flagellum _flag, PVector _location, float _sizeOffsetA, float _sizeOffsetB ) { - pushMatrix(); - translate( _location.x, _location.y ); - beginShape( TRIANGLE_STRIP ); - for ( int n = 0; n < _flag.numNodes; n++ ) { - float dx, dy; - if ( n == 0 ) { - dx = _flag.spine[1][0] - _flag.spine[0][0]; - dy = _flag.spine[1][1] - _flag.spine[0][1]; - } - else { - dx = _flag.spine[n][0] - _flag.spine[n - 1][0]; - dy = _flag.spine[n][1] - _flag.spine[n - 1][1]; - } - - float theta = -atan2( dy, dx ); - - float t = n / float(_flag.numNodes - 1); - float b = bezierPoint( 3, bodySizeH * _sizeOffsetA, bodySizeH * _sizeOffsetB, 2, t ); - - float x1 = _flag.spine[n][0] - sin( theta ) * b; - float y1 = _flag.spine[n][1] - cos( theta ) * b; - - float x2 = _flag.spine[n][0] + sin( theta ) * b; - float y2 = _flag.spine[n][1] + cos( theta ) * b; - - vertex( x1, y1 ); - vertex( x2, y2 ); - } - - endShape(); - popMatrix(); - } - - - private void renderTail( Flagellum _flag, PVector _location, float _sizeOffset ) { - pushMatrix(); - translate( _location.x, _location.y ); - - beginShape( TRIANGLE_STRIP ); - for ( int n = 0; n < _flag.numNodes; n++ ) { - float dx, dy; - if ( n == 0 ) { - dx = _flag.spine[1][0] - _flag.spine[0][0]; - dy = _flag.spine[1][1] - _flag.spine[0][1]; - } - else { - dx = _flag.spine[n][0] - _flag.spine[n - 1][0]; - dy = _flag.spine[n][1] - _flag.spine[n - 1][1]; - } - - float theta = -atan2( dy, dx ); - - float t = n / float(_flag.numNodes - 1); - float b = bezierPoint( 2, _flag.sizeH, _flag.sizeH * _sizeOffset, 0, t ); - - float x1 = _flag.spine[n][0] - sin( theta ) * b; - float y1 = _flag.spine[n][1] - cos( theta ) * b; - - float x2 = _flag.spine[n][0] + sin( theta ) * b; - float y2 = _flag.spine[n][1] + cos( theta ) * b; - - vertex( x1, y1 ); - vertex( x2, y2 ); - } - endShape(); - - popMatrix(); - } - - - private void renderFin( Flagellum _flag, PVector _location, float _posOffset, int _flip ) { - float diffX = body.spine[2][0] - body.spine[1][0]; - float diffY = body.spine[2][1] - body.spine[1][1]; - float angle = atan2( diffY, diffX ); - - pushMatrix(); - translate( _location.x, _location.y ); - rotate( angle ); - - pushMatrix(); - translate( 0, _posOffset ); - - beginShape(TRIANGLE_STRIP); - for ( int n = 0; n < _flag.numNodes; n++ ) { - float dx, dy; - if ( n == 0 ) { - dx = _flag.spine[1][0] - _flag.spine[0][0]; - dy = _flag.spine[1][1] - _flag.spine[0][1]; - } - else { - dx = _flag.spine[n][0] - _flag.spine[n - 1][0]; - dy = _flag.spine[n][1] - _flag.spine[n - 1][1]; - } - - float theta = -atan2( dy, dx ); - - float t = n / float(_flag.numNodes - 1); - float b = bezierPoint( 0, _flip * _flag.sizeH * 0.75, _flip * _flag.sizeH * 0.75, 0, t ); - float v = bezierPoint( 0, _flip * _flag.sizeH * 0.05, _flip * _flag.sizeH * 0.65, 0, t ); - - float x1 = _flag.spine[n][0] - sin( theta ) * v; - float y1 = _flag.spine[n][1] - cos( theta ) * v; - - float x2 = _flag.spine[n][0] + sin( theta ) * b; - float y2 = _flag.spine[n][1] + cos( theta ) * b; - - vertex( x1, y1 ); - vertex( x2, y2 ); - } - - endShape(); - popMatrix(); - popMatrix(); - } - - /** - * ensure that the fish wraps around the the other end of the pond - * if it goes past the edge. Also keeps unModdedLocations in sync with - * location - */ - private void checkBorders() { - if ( location.x < -bodySizeW ) { - location.x = width; - } - if ( location.x > width + bodySizeW ) { - location.x = 0; - } - if ( location.y < -bodySizeW ) { - location.y = height; - } - if ( location.y > height + bodySizeW ) { - location.y = 0; - } - } - - public void explode() { - explosion.play(); // play explosion sound with buzz - //prevent the mouth from rendering during explosion - lastAteTimer = 0; - isExploding = true; - explosionTimer = frameRate; - } - - // Getters - public Color getStripeColor() { - return stripeColor; - } - - public float getBodySizeW() { - return bodySizeW; - } - - public float getBodySizeH() { - return bodySizeH; - } - - public PVector getMousePosition() { - return mousePosition; - } - - public void setMousePosition(PVector position) { - mousePosition = position; - } - - public float getBodySizeH(){ - return bodySizeH; - } - - public void setBodySizeH(float bodySizeH){ - this.bodySizeH = bodySizeH; - } - - public float getBodySizeW(){ - return bodySizeW; - } - - public void setBodySizeW(float bodySizeW){ - this.bodySizeW = bodySizeW; - } - - public int getLastAteTimer() { - return lastAteTimer; - } - - public void setLastAteTimer(int lastAteTimer) { - this.lastAteTimer = lastAteTimer; - } - - public boolean getIsExploding(){ - return isExploding; - } - - public int getFoodEaten(){ - return foodEaten; - } - - public void setFoodEaten(int foodEaten){ - this.foodEaten = foodEaten; - } - - public int getTransparency() { - return transparency; - } - - public void setTransparency(int transparency) { - this.transparency = transparency; - } - - public int getExplosionTimer() { - return explosionTimer; - } -} \ No newline at end of file diff --git a/sketches/my-life-aquatic/Flagellum.pde b/sketches/my-life-aquatic/Flagellum.pde deleted file mode 100644 index bcecbce..0000000 --- a/sketches/my-life-aquatic/Flagellum.pde +++ /dev/null @@ -1,79 +0,0 @@ -class Flagellum { - - int numNodes; - - float[][] spine; - - float MUSCLE_RANGE = 0.15; - float muscleFreq = 0.08; - - float sizeW, sizeH; - float spaceX, spaceY; - float theta; - float count; - - - - Flagellum( float _sizeW, float _sizeH, int _numNodes ) { - - sizeW = _sizeW; - sizeH = _sizeH; - - numNodes = _numNodes; - - spine = new float[numNodes][2]; - - spaceX = sizeW / float(numNodes + 1); - spaceY = sizeH / 2.0; - - count = 0; - theta = PI; - thetaVel = 0; - - - // Initialize spine positions - for ( int n = 0; n < numNodes; n++ ) { - float x = spaceX * n; - float y = spaceY; - - spine[n][0] = x; - spine[n][1] = y; - } - } - - - void swim() { - spine[0][0] = cos( theta ); - spine[0][1] = sin( theta ); - - count += muscleFreq; - float thetaMuscle = MUSCLE_RANGE * sin( count ); - - spine[1][0] = -spaceX * cos( theta + thetaMuscle ) + spine[0][0]; - spine[1][1] = -spaceX * sin( theta + thetaMuscle ) + spine[0][1]; - - for ( int n = 2; n < numNodes; n++ ) { - float x = spine[n][0] - spine[n - 2][0]; - float y = spine[n][1] - spine[n - 2][1]; - float l = sqrt( (x * x) + (y * y) ); - - if ( l > 0 ) { - spine[n][0] = spine[n - 1][0] + (x * spaceX) / l; - spine[n][1] = spine[n - 1][1] + (y * spaceX) / l; - } - } - } - - - void debugRender() { - for ( int n = 0; n < numNodes; n++ ) { - stroke( 0 ); - if ( n < numNodes - 1 ) { - line( spine[n][0], spine[n][1], spine[n + 1][0], spine[n + 1][1] ); - } - fill( 90 ); - ellipse( spine[n][0], spine[n][1], 6, 6 ); - } - } - -} \ No newline at end of file diff --git a/sketches/my-life-aquatic/Food.pde b/sketches/my-life-aquatic/Food.pde deleted file mode 100644 index 63356c5..0000000 --- a/sketches/my-life-aquatic/Food.pde +++ /dev/null @@ -1,105 +0,0 @@ -class Food { - - private PVector location; - private PVector velocity; - - private int age; - private int ageSpan; - private int color; - private int[] colours = new int(); - - private int numSides = 8; - private float[][] verts = new float[numSides][2]; - - private boolean isDead; - private boolean isDummy; - - //constructor used to create your personal local food - public Food(PVector location) { - velocity = new PVector( random( -.5, .5 ), random( -.5, .5 ) ); - - age = 0; - - colors = [#C96164, #E8C64D, #9EB53F, #5D966C]; - int c = int(random( 4 )); - - createFood(location, colors[c], false); - } - - private void createFood(PVector location, int color, boolean isDead) { - this.location = location; - ageSpan = 300; //random( 100, 200 ); - this.color = color; - this.isDead = isDead; - this.isDummy = false; - - float k = TWO_PI / (float) numSides; - for ( int i = 0; i < numSides; i++ ) { - verts[i][0] = cos( k * i ) * random( 3, 15 ); - verts[i][1] = sin( k * i ) * random( 3, 15 ); - } - } - - public void update() { - location.add( velocity ); - - age++; - if ( age >= ageSpan ) { - isDead = true; - } - } - - public void render() { - noStroke(); - fill( color ); - pushMatrix(); - translate( location.x, location.y ); - scale(1 - age / ageSpan); - beginShape( TRIANGLE_FAN ); - for ( int i = 0; i < numSides; i++ ) { - vertex( verts[i][0], verts[i][1] ); - } - endShape(); - popMatrix(); - } - - public boolean getIsDead() { - return isDead; - } - - public void setIsDead(boolean isDead) { - this.isDead = isDead; - } - - public PVector getVelocity() { - return velocity; - } - - public PVector getLocation() { - return location; - } - - public void setLocation(PVector location){ - this.location = location; - } - - public int getColor() { - return this.color; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - public void setIsDummy(boolean isDummy) { - this.isDummy = isDummy; - } - - public boolean getIsDummy() { - return this.isDummy; - } -} \ No newline at end of file diff --git a/sketches/my-life-aquatic/explosion.mp3 b/sketches/my-life-aquatic/explosion.mp3 deleted file mode 100644 index 9b23473597dfb7b41ccb10363535f82b012f64a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17308 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 aF#dN>|83{Lqw+uh?cdz~XGZ_si2n;%zPbwl diff --git a/sketches/my-life-aquatic/explosion.ogg b/sketches/my-life-aquatic/explosion.ogg deleted file mode 100644 index 8580431b10f926c0f0747c6445e46621ef1b83d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14286 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 diff --git a/sketches/my-life-aquatic/gulp.mp3 b/sketches/my-life-aquatic/gulp.mp3 deleted file mode 100644 index 3840356a333534f34b4517bbadc697e5c86e396a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9613 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 diff --git a/sketches/my-life-aquatic/gulp.ogg b/sketches/my-life-aquatic/gulp.ogg deleted file mode 100644 index 7f6c5bf6ae391a521dbda1d3d66e2db4ea114d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 foregroundBubbles; -ArrayList backgroundBubbles; -ArrayList foods; -Fish myFish; - -public void setup() { - int pondWidth = 575; - int pondHeight = 480; - - size(pondWidth, pondHeight); - - frameRate(45); //45 - - PVector location = new PVector(random(0.2 * pondWidth, 0.8 * pondWidth), - random(0.2 * pondHeight, 0.8 * pondHeight)); - myFish = new Fish(location, random( 2.0, 2.5 ), 0.2); - - foregroundBubbles = new ArrayList(); - backgroundBubbles = new ArrayList(); - - foods = new ArrayList(); -} - - -public void draw() { - background( 105, 210, 231, 0); - - randomNumber = random(0, 1000); - - if(randomNumber > 980) { - foregroundBubbles.add(new Bubble( color(int(random(100, 255)), 200))); - } - else if(randomNumber < 20) { - backgroundBubbles.add(new Bubble( color(int(random(100, 255)), 100))); - } - - for(int i = backgroundBubbles.size()-1; i >= 0; i--) { - Bubble bubble = backgroundBubbles.get(i); - if (bubble.getLocation().y < -50) - backgroundBubbles.remove(i); - else { - bubble.update(); - bubble.render(); - } - } - - myFish.update(); - myFish.render(); - if(myFish.getFoodEaten() > 11 && !myFish.getIsExploding()) { - myFish.explode(); - } - - for(int i = foregroundBubbles.size()-1; i >= 0; i--) { - Bubble bubble = foregroundBubbles.get(i); - if (bubble.getLocation().y < -50) - foregroundBubbles.remove(i); - else { - bubble.update(); - bubble.render(); - } - } - - if(randomNumber <= 6) { - PVector foodLocation = new PVector(random(100, width-100), random(100,height-100)); - Food food = new Food(foodLocation); - foods.add(food); - } - - for(int i = foods.size()-1; i >= 0; i--) { - Food food = foods.get(i); - boolean foodEaten = false; - if (!food.getIsDead()) { - food.update(); - food.render(); - foodEaten = myFishAteFood(food); - } - else - foods.remove(i); - if (foodEaten) - foods.remove(i); - } -} - -public boolean myFishAteFood(Food food) { - boolean foodEaten = false; - - float distanceToFood = PVector.sub(myFish.getLocation(), food.getLocation()).mag(); - if (distanceToFood < 10){ - foodEaten = true; - gulp.play(); - myFish.setBodySizeH(myFish.getBodySizeH() * 1.1); - myFish.setBodySizeW(myFish.getBodySizeW() * 1.1); - myFish.setLastAteTimer(int(frameRate/2)); - myFish.setFoodEaten(myFish.getFoodEaten() + 1); - } - - return foodEaten; -} - -public void mouseMoved() { - PVector mousePosition = new PVector(mouseX, mouseY); - myFish.setMousePosition(mousePosition); -} \ No newline at end of file diff --git a/sketches/mysketch.pde b/sketches/mysketch.pde deleted file mode 100644 index 96b1cec..0000000 --- a/sketches/mysketch.pde +++ /dev/null @@ -1,268 +0,0 @@ - -boolean play = false; - - - -Bouncer[] bouncer = new Bouncer[3]; - - - -void setup() { - - size(200,200); - - frameRate(24); - - if(!play) noLoop(); - - bouncer[0] = new Ball(width/3-20, 20, 20); - - bouncer[1] = new Box(width/2-10, 20, 20, 20); - - bouncer[2] = new Ball((2*width/3)+20, 20, 20); - -} - - - -void draw() { - - for(int b=0, end=bouncer.length; b"); - -} - - - -void draw() { - - background(255); - - stroke(0); - - for(int px=0; px 3) { - flapSpeed *= -1; - } - if (ang < -3) { - flapSpeed *= -1; - } - // Increment angles - ang2 += 0.01; - ang3 += 2.0; - ang4 += 0.75; - } \ No newline at end of file diff --git a/tools/jsbeautify.js b/tools/jsbeautify.js deleted file mode 100644 index 9c647d8..0000000 --- a/tools/jsbeautify.js +++ /dev/null @@ -1,974 +0,0 @@ -/*jslint onevar: false, plusplus: false */ -/* - - JS Beautifier ---------------- - - - Written by Einar Lielmanis, - http://jsbeautifier.org/ - - Originally converted to javascript by Vital, - - You are free to use this in any way you want, in case you find this useful or working for you. - - Usage: - js_beautify(js_source_text); - js_beautify(js_source_text, options); - - The options are: - indent_size (default 4) — indentation size, - indent_char (default space) — character to indent with, - preserve_newlines (default true) — whether existing line breaks should be preserved, - indent_level (default 0) — initial indentation level, you probably won't need this ever, - - space_after_anon_function (default false) — if true, then space is added between "function ()" - (jslint is happy about this); if false, then the common "function()" output is used. - - e.g - - js_beautify(js_source_text, {indent_size: 1, indent_char: '\t'}); - - -*/ - - - -function js_beautify(js_source_text, options) { - - var input, output, token_text, last_type, last_text, last_last_text, last_word, flags, flag_store, indent_string; - var whitespace, wordchar, punct, parser_pos, line_starters, digits; - var prefix, token_type, do_block_just_closed; - var indent_level, wanted_newline, just_added_newline, n_newlines; - - - options = options || {}; - var opt_indent_size = options.indent_size || 4; - var opt_indent_char = options.indent_char || ' '; - var opt_preserve_newlines = typeof options.preserve_newlines === 'undefined' ? true : options.preserve_newlines; - var opt_indent_level = options.indent_level || 0; // starting indentation - var opt_space_after_anon_function = options.space_after_anon_function === 'undefined' ? false : options.space_after_anon_function; - var opt_keep_array_indentation = typeof options.keep_array_indentation === 'undefined' ? true : options.keep_array_indentation; - - just_added_newline = false; - - - function trim_output() { - while (output.length && (output[output.length - 1] === ' ' || output[output.length - 1] === indent_string)) { - output.pop(); - } - } - - function print_newline(ignore_repeated) { - - if (opt_keep_array_indentation && is_array(flags.mode)) { - return; - } - - ignore_repeated = typeof ignore_repeated === 'undefined' ? true : ignore_repeated; - - flags.if_line = false; - trim_output(); - - if (!output.length) { - return; // no newline on start of file - } - - if (output[output.length - 1] !== "\n" || !ignore_repeated) { - just_added_newline = true; - output.push("\n"); - } - for (var i = 0; i < indent_level; i += 1) { - output.push(indent_string); - } - } - - - - function print_single_space() { - var last_output = ' '; - if (output.length) { - last_output = output[output.length - 1]; - } - if (last_output !== ' ' && last_output !== '\n' && last_output !== indent_string) { // prevent occassional duplicate space - output.push(' '); - } - } - - - function print_token() { - just_added_newline = false; - output.push(token_text); - } - - function indent() { - indent_level += 1; - } - - - function unindent() { - if (indent_level) { - indent_level -= 1; - } - } - - - function remove_indent() { - if (output.length && output[output.length - 1] === indent_string) { - output.pop(); - } - } - - function print_javadoc_comment() { - var lines = token_text.split('\n'); - output.push(lines[0]); - for (var i = 1; i < lines.length; i++) { - print_newline(); - output.push(' '); - output.push(lines[i].replace(/^\s+/, '')); - } - } - - - function set_mode(mode) { - if (flags) { - flag_store.push(flags); - } - flags = { - mode: mode, - var_line: false, - var_line_tainted: false, - if_line: false, - in_case: false, - indentation_baseline: -1 - }; - } - - function is_expression(mode) { - return mode === '[EXPRESSION]' || mode === '[INDENTED-EXPRESSION]' || mode === '(EXPRESSION)'; - } - - function is_array(mode) { - return mode === '[EXPRESSION]' || mode === '[INDENTED-EXPRESSION]'; - } - - function restore_mode() { - do_block_just_closed = flags.mode === 'DO_BLOCK'; - if (flag_store.length > 0) { - flags = flag_store.pop(); - } - } - - - function in_array(what, arr) { - for (var i = 0; i < arr.length; i += 1) { - if (arr[i] === what) { - return true; - } - } - return false; - } - - // Walk backwards from the colon to find a '?' (colon is part of a ternary op) - // or a '{' (colon is part of a class literal). Along the way, keep track of - // the blocks and expressions we pass so we only trigger on those chars in our - // own level, and keep track of the colons so we only trigger on the matching '?'. - - - function is_ternary_op() { - var level = 0, - colon_count = 0; - for (var i = output.length - 1; i >= 0; i--) { - switch (output[i]) { - case ':': - if (level === 0) { - colon_count++; - } - break; - case '?': - if (level === 0) { - if (colon_count === 0) { - return true; - } else { - colon_count--; - } - } - break; - case '{': - if (level === 0) { - return false; - } - level--; - break; - case '(': - case '[': - level--; - break; - case ')': - case ']': - case '}': - level++; - break; - } - } - } - - - function get_next_token() { - n_newlines = 0; - - if (parser_pos >= input.length) { - return ['', 'TK_EOF']; - } - - var c = input.charAt(parser_pos); - parser_pos += 1; - - - var keep_whitespace = opt_keep_array_indentation && is_array(flags.mode); - wanted_newline = false; - - if (keep_whitespace) { - - // - // slight mess to allow nice preservation of array indentation and reindent that correctly - // first time when we get to the arrays: - // var a = [ - // ....'something' - // we make note of whitespace_count = 4 into flags.indentation_baseline - // so we know that 4 whitespaces in original source match indent_level of reindented source - // - // and afterwards, when we get to - // 'something, - // .......'something else' - // we know that this should be indented to indent_level + (7 - indentation_baseline) spaces - // - var whitespace_count = 0; - - while (in_array(c, whitespace)) { - - if (c === "\n") { - trim_output(); - output.push("\n"); - just_added_newline = true; - whitespace_count = 0; - } else { - if (c === '\t') { - whitespace_count += 4; - } else { - whitespace_count += 1; - } - } - - if (parser_pos >= input.length) { - return ['', 'TK_EOF']; - } - - c = input.charAt(parser_pos); - parser_pos += 1; - - } - if (flags.indentation_baseline === -1) { - flags.indentation_baseline = whitespace_count; - } - - if (just_added_newline) { - for (var i = 0; i < indent_level + 1; i += 1) { - output.push(indent_string); - } - if (flags.indentation_baseline !== -1) { - for (var i = 0; i < whitespace_count - flags.indentation_baseline; i++) { - output.push(' '); - } - } - } - - } else { - while (in_array(c, whitespace)) { - - if (c === "\n") { - n_newlines += 1; - } - - - if (parser_pos >= input.length) { - return ['', 'TK_EOF']; - } - - c = input.charAt(parser_pos); - parser_pos += 1; - - } - - if (opt_preserve_newlines) { - if (n_newlines > 1) { - for (var i = 0; i < n_newlines; i += 1) { - print_newline(i === 0); - just_added_newline = true; - } - } - } - wanted_newline = n_newlines > 0; - } - - - if (in_array(c, wordchar)) { - if (parser_pos < input.length) { - while (in_array(input.charAt(parser_pos), wordchar)) { - c += input.charAt(parser_pos); - parser_pos += 1; - if (parser_pos === input.length) { - break; - } - } - } - - // small and surprisingly unugly hack for 1E-10 representation - if (parser_pos !== input.length && c.match(/^[0-9]+[Ee]$/) && (input.charAt(parser_pos) === '-' || input.charAt(parser_pos) === '+')) { - - var sign = input.charAt(parser_pos); - parser_pos += 1; - - var t = get_next_token(parser_pos); - c += sign + t[0]; - return [c, 'TK_WORD']; - } - - if (c === 'in') { // hack for 'in' operator - return [c, 'TK_OPERATOR']; - } - if (wanted_newline && last_type !== 'TK_OPERATOR' && !flags.if_line && (opt_preserve_newlines || last_text !== 'var')) { - print_newline(); - } - return [c, 'TK_WORD']; - } - - if (c === '(' || c === '[') { - return [c, 'TK_START_EXPR']; - } - - if (c === ')' || c === ']') { - return [c, 'TK_END_EXPR']; - } - - if (c === '{') { - return [c, 'TK_START_BLOCK']; - } - - if (c === '}') { - return [c, 'TK_END_BLOCK']; - } - - if (c === ';') { - return [c, 'TK_SEMICOLON']; - } - - if (c === '/') { - var comment = ''; - // peek for comment /* ... */ - if (input.charAt(parser_pos) === '*') { - parser_pos += 1; - if (parser_pos < input.length) { - while (! (input.charAt(parser_pos) === '*' && input.charAt(parser_pos + 1) && input.charAt(parser_pos + 1) === '/') && parser_pos < input.length) { - comment += input.charAt(parser_pos); - parser_pos += 1; - if (parser_pos >= input.length) { - break; - } - } - } - parser_pos += 2; - return ['/*' + comment + '*/', 'TK_BLOCK_COMMENT']; - } - // peek for comment // ... - if (input.charAt(parser_pos) === '/') { - comment = c; - while (input.charAt(parser_pos) !== "\x0d" && input.charAt(parser_pos) !== "\x0a") { - comment += input.charAt(parser_pos); - parser_pos += 1; - if (parser_pos >= input.length) { - break; - } - } - parser_pos += 1; - if (wanted_newline) { - print_newline(); - } - return [comment, 'TK_COMMENT']; - } - - } - - if (c === "'" || // string - c === '"' || // string - (c === '/' && ((last_type === 'TK_WORD' && in_array(last_text, ['return', 'do'])) || (last_type === 'TK_START_EXPR' || last_type === 'TK_START_BLOCK' || last_type === 'TK_END_BLOCK' || last_type === 'TK_OPERATOR' || last_type === 'TK_EOF' || last_type === 'TK_SEMICOLON')))) { // regexp - var sep = c; - var esc = false; - var resulting_string = c; - - if (parser_pos < input.length) { - if (sep === '/') { - // - // handle regexp separately... - // - var in_char_class = false; - while (esc || in_char_class || input.charAt(parser_pos) !== sep) { - resulting_string += input.charAt(parser_pos); - if (!esc) { - esc = input.charAt(parser_pos) === '\\'; - if (input.charAt(parser_pos) === '[') { - in_char_class = true; - } else if (input.charAt(parser_pos) === ']') { - in_char_class = false; - } - } else { - esc = false; - } - parser_pos += 1; - if (parser_pos >= input.length) { - // incomplete string/rexp when end-of-file reached. - // bail out with what had been received so far. - return [resulting_string, 'TK_STRING']; - } - } - - } else { - // - // and handle string also separately - // - while (esc || input.charAt(parser_pos) !== sep) { - resulting_string += input.charAt(parser_pos); - if (!esc) { - esc = input.charAt(parser_pos) === '\\'; - } else { - esc = false; - } - parser_pos += 1; - if (parser_pos >= input.length) { - // incomplete string/rexp when end-of-file reached. - // bail out with what had been received so far. - return [resulting_string, 'TK_STRING']; - } - } - } - - - - } - - parser_pos += 1; - - resulting_string += sep; - - if (sep === '/') { - // regexps may have modifiers /regexp/MOD , so fetch those, too - while (parser_pos < input.length && in_array(input.charAt(parser_pos), wordchar)) { - resulting_string += input.charAt(parser_pos); - parser_pos += 1; - } - } - return [resulting_string, 'TK_STRING']; - } - - if (c === '#') { - // Spidermonkey-specific sharp variables for circular references - // https://developer.mozilla.org/En/Sharp_variables_in_JavaScript - // http://mxr.mozilla.org/mozilla-central/source/js/src/jsscan.cpp around line 1935 - var sharp = '#'; - if (parser_pos < input.length && in_array(input.charAt(parser_pos), digits)) { - do { - c = input.charAt(parser_pos); - sharp += c; - parser_pos += 1; - } while (parser_pos < input.length && c !== '#' && c !== '='); - if (c === '#') { - return [sharp, 'TK_WORD']; - } else { - return [sharp, 'TK_OPERATOR']; - } - } - } - - if (c === '<' && input.substring(parser_pos - 1, parser_pos + 3) === '') { - parser_pos += 2; - if (wanted_newline) { - print_newline(); - } - return ['-->', 'TK_COMMENT']; - } - - if (in_array(c, punct)) { - while (parser_pos < input.length && in_array(c + input.charAt(parser_pos), punct)) { - c += input.charAt(parser_pos); - parser_pos += 1; - if (parser_pos >= input.length) { - break; - } - } - - return [c, 'TK_OPERATOR']; - } - - return [c, 'TK_UNKNOWN']; - } - - //---------------------------------- - indent_string = ''; - while (opt_indent_size > 0) { - indent_string += opt_indent_char; - opt_indent_size -= 1; - } - - indent_level = opt_indent_level; - - input = js_source_text; - - last_word = ''; // last 'TK_WORD' passed - last_type = 'TK_START_EXPR'; // last token type - last_text = ''; // last token text - last_last_text = ''; // pre-last token text - output = []; - - do_block_just_closed = false; - - whitespace = "\n\r\t ".split(''); - wordchar = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$'.split(''); - digits = '0123456789'.split(''); - - //