Welcome to Python Mode for Processing!
            Start by visiting http://processing.org/download
                and selecting the Mac, Windows, or Linux version, depending
                on what machine you have. Installation on each machine is
                straightforward:
            
                - On Windows, you'll have a .zip file. Double-click it,
                    and drag the folder inside to a location on your hard
                    disk. It could be Program Files or simply the desktop,
                    but the important thing is for the processing folder to
                    be pulled out of that .zip file. Then double-click
                    processing.exe to start.
- The Mac OS X version is also a .zip file.
                    Double-click it and drag the Processing icon to the
                    Applications folder. If you're using someone else's
                    machine and can't modify the Applications folder, just
                    drag the application to the desktop. Then double-click
                    the Processing icon to start.
- The Linux version is a .tar.gz file, which should be
                    familiar to most Linux users. Download the file to your
                    home directory, then open a terminal window, and
                    type:
 tar xvfz processing-xxxx.tgz
 (Replace xxxx with the rest of the file's name, which is
                    the version number.) This will create a folder named
                    processing-2.0 or something similar. Then change to that
                    directory:
 cd processing-xxxx
 and run it:
 ./processing
With any luck, the main Processing window will now be
                visible. Everyone's setup is different, so if the program
                didn't start, or you're otherwise stuck, visit the troubleshooting
                    page for possible solutions.
            
                The Processing Development Environment.
            Python Mode
            Processing doesn't include support for the Python
                programming language by default. In order to enable Python
                support, you'll need to install an add-on called Python
                Mode. You can do this by clicking on the drop-down menu on
                the right side of the tool bar and selecting "Add Mode..."
                A window with the title "Mode Manager" will appear. Scroll
                down until you see "Python" and press "Install." 
                    More information here.
            After you've installed Python Mode, you can switch back
                and forth between the Python and Java versions of
                Processing using the drop-down menu in the tool bar. If you
                find yourself getting strange syntax errors or exceptions
                when running your program, make sure you have the right
                mode selected!
            Your First Program
            You're now running the Processing Development
                Environment (or PDE), with Python Mode installed. There's
                not much to it; the large area is the Text Editor, and
                there's a row of buttons across the top; this is the
                toolbar. Below the editor is the Message Area, and below
                that is the Console. The Message Area is used for one line
                messages, and the Console is used for more technical
                details.
            In the editor, type the following:
            ellipse(50, 50, 80, 80)
  
  
            This line of code means "draw an ellipse, with the
                center 50 pixels over from the left and 50 pixels down from
                the top, with a width and height of 80 pixels." Click the
                Run button, which looks like this:
            
            If you've typed everything correctly, you'll see this
                appear in the Display Window:
            
            If you didn't type it correctly, the Message Area will
                turn red and complain about an error. If this happens, make
                sure that you've copied the example code exactly: the
                numbers should be contained within parentheses and have
                commas between each of them.
            One of the most difficult things about getting started
                with programming is that you have to be very specific about
                the syntax. The Processing software isn't always smart
                enough to know what you mean, and can be quite fussy about
                the placement of punctuation. You'll get used to it with a
                little practice.
            Next, we'll skip ahead to a sketch that's a little more
                exciting. Delete the text from the last example, and try
                this:
            
            def setup():
      size(480, 120)
  
  def draw():
      if  mousePressed:
          fill(0)
      else:
          fill(255)
      ellipse(mouseX, mouseY, 80, 80)
  
            This program creates a window that is 480 pixels wide
                and 120 pixels high, and then starts drawing white circles
                at the position of the mouse. When a mouse button is
                pressed, the circle color changes to black. We'll explain
                more about the elements of this program in detail later.
                For now, run the code, move the mouse, and click to
                experience it.
            Note: Be careful about how you indent each line!
                Indentation is important in Python, and indenting
                incorrectly or inconsistently can cause your program to
                work differently from how you intended, or not work at all.
                You can use any number of spaces, as long as you're
                consistent about the number of spaces you use. (Many Python
                programmers prefer four spaces, others prefer two.) You can
                also use the tab key to indent your code, but don't use
                tabs and spaces for indentation in the same program.
            Show
            So far we've covered only the Run button, though you've
                probably guessed what the Stop button next to it does:
            
            If you don't want to use the buttons, you can always use
                the Sketch menu, which reveals the shortcut Ctrl-R (or
                Cmd-R on the Mac) for Run. Below Run in the Sketch menu is
                Present, which clears the rest of the screen to present
                your sketch all by itself:
            
            You can also use Present from the toolbar by holding
                down the Shift key as you click the Run button.
            Save
            The next command that's important is Save. It's the
                downward arrow on the toolbar:
            
            You can also find it under the File menu. By default,
                your programs are saved to the "sketchbook," which is a
                folder that collects your programs for easy access.
                Clicking the Open button on the toolbar (the arrow pointing
                up) will bring up a list of all the sketches in your
                sketchbook, as well as a list of examples that are
                installed with the Processing software:
            
            It's always a good idea to save your sketches often. As
                you try different things, keep saving with different names,
                so that you can always go back to an earlier version. This
                is especially helpful if - no, when - something
                breaks. You can also see where the sketch is located on the
                disk with Show Sketch Folder under the Sketch menu.
            You can also create a new sketch by pressing the New
                button on the toolbar:
            
            
            Examples and Reference
            Learning how to program with Processing and Python
                involves exploring lots of code: running, altering,
                breaking, and enhancing it until you have reshaped it into
                something new. With this in mind, the Processing software
                download includes dozens of examples that demonstrate
                different features of the software. To open an example,
                select Examples from the File menu or click the Open icon
                in the PDE. The examples are grouped into categories based
                on their function, such as Form, Motion, and Image. Find an
                interesting topic in the list and try an example.
            
            The Processing Reference explains every code element
                with a description and examples. The reference programs are
                much shorter (usually four or five lines) and easier to
                follow than the longer code found in the Examples folder.
                We recommend keeping the reference open while you're
                reading this book and while you're programming. It can be
                navigated by topic or alphabetically; sometimes it's
                fastest to do a text search within your browser window.
            The reference was written with the beginner in mind; we
                hope that we've made it clear and understandable. We're
                grateful to the many people who've spotted errors over the
                years and reported them. If you think you can improve a
                reference entry or you find a mistake, please let us know
                by clicking on the link at the top of each reference
                page.
         
        
            Processing is a simple programming environment that was
                created to make it easier to develop visually oriented
                applications with an emphasis on animation and providing
                users with instant feedback through interaction. The
                developers wanted a means to "sketch" ideas in
                code. As its capabilities have expanded over the past
                decade, Processing has come to be used for more advanced
                production-level work in addition to its sketching role.
                Originally built as a domain-specific extension to Java
                targeted towards artists and designers, Processing has
                evolved into a full-blown design and prototyping tool used
                for large-scale installation work, motion graphics, and
                complex data visualization.
                
                Python Mode for Processing is an extension to Processing,
                allowing you to write Processing programs in the Python
                programming language (instead of the Java-like Processing
                programming language). Program elements in Processing are
                fairly simple, regardless of which language you're learning
                to program in. If you're familiar with Python, it's best to
                forget that Processing has anything to do with it for a
                while, until you get the hang of how the API works.
                
                The latest version of Processing can be downloaded at
                http://processing.org/download
                
                An important goal for the project was to make this type of
                programming accessible to a wider audience. For this
                reason, Processing is free to download, free to use, and
                open source. But projects developed using the Processing
                environment and core libraries can be used for any purpose.
                This model is identical to GCC, the GNU Compiler
                Collection. GCC and its associated libraries (e.g. libc)
                are open source under the GNU Public License (GPL), which
                stipulates that changes to the code must be made available.
                However, programs created with GCC (examples too numerous
                to mention) are not themselves required to be open
                source.
                
                Python Mode for Processing consists of:
            
                - The Processing Development Environment (PDE). This is
                    the software that runs when you double-click the
                    Processing icon. The PDE is an Integrated Development
                    Environment (IDE) with a minimalist set of features
                    designed as a simple introduction to programming or for
                    testing one-off ideas.
- A collection of functions (also referred to as
                    commands or methods) that make up the "core"
                    programming interface, or API, as well as several
                    libraries that support more advanced features such as
                    sending data over a network, reading live images from a
                    webcam, and saving complex imagery in PDF format.
- The Python Mode add-on, which makes it possible to
                    write programs in Python that look and behave like
                    Processing programs and have access the Processing
                    API.
- An active online community, based at http://processing.org.
            For this reason, references to "Processing" can
            be somewhat ambiguous. Are we talking about the API, the
            language, the development environment, or the web site?
            We'll be careful in this text when referring to each.
            
Sketching with Processing
            A Processing program is called a sketch. The
                idea is to make programming feel more like scripting, and
                adopt the process of scripting to quickly write code.
                Sketches are stored in the sketchbook, a folder
                that's used as the default location for saving all of your
                projects. Sketches that are stored in the sketchbook can be
                accessed from File → Sketchbook. Alternatively, File
                → Open... can be used to open a sketch from elsewhere
                on the system.
                
                Advanced programmers need not use the PDE, and may instead
                choose to use its libraries with the Python environment of
                choice. However, if you're just getting started, it's
                recommended that you use the PDE for your first few
                projects to gain familiarity with the way things are done.
                To better address our target audience, the conceptual model
                (how programs work, how interfaces are built, and how files
                are handled) is somewhat different from other programming
                environments.
            Hello world
            The Processing equivalent of a "Hello World" program is
                simply to draw a line:
            line(15, 25, 70, 90)
            Enter this example and press the Run button, which is an
            icon that looks like the Play button from any audio or
            video device. Your code will appear in a new window, with a
            gray background and a black line from coordinate (15, 25)
            to (70, 90). The (0, 0) coordinate is the upper left-hand
            corner of the display window. Building on this program to
            change the size of the display window and set the
            background color, type in the code below:
            
            
size(400, 400)
background(192, 64, 0)
stroke(255)
line(150, 25, 270, 350)
            This version sets the window size to 400 x 400 pixels, sets
            the background to an orange-red, and draws the line in
            white, by setting the stroke color to 255. By default,
            colors are specified in the range 0 to 255. Other
            variations of the parameters to the 
stroke()
            function provide alternate results:
            
            
stroke(255)               # sets the stroke color to white
stroke(255, 255, 255)     # identical to the line above
stroke(255, 128, 0)       # bright orange (red 255, green 128, blue 0)
stroke("#FF8000")         # bright orange as a web color
stroke(255, 128, 0, 128)  # bright orange with 50% transparency
            The same alternatives work for the 
fill()
            function, which sets the fill color, and the
            
background() function, which clears the display
            window. Like all Processing functions that affect drawing
            properties, the fill and stroke colors affect all geometry
            drawn to the screen until the next fill and stroke
            functions.
            
            
Hello mouse
            A program written as a list of statements (like the
                previous examples) is called a static sketch. In a
                static sketch, a series of functions are used to perform
                tasks or create a single image without any animation or
                interaction. Interactive programs are drawn as a series of
                frames, which you can create by adding functions titled
                setup() and draw() as shown in the code
                below. These are built-in functions that are called
                automatically.
                
            def setup():
    size(400, 400)
    stroke(255)
    background(192, 64, 0)
def draw():
    line(150, 25, mouseX, mouseY)
            The 
setup() block runs once, and the
            
draw() block runs repeatedly. As such,
            
setup() can be used for any initialization; in
            this case, setting the screen size, making the background
            orange, and setting the stroke color to white. The
            
draw() block is used to handle animation. The
            
size() function must always be the first line
            inside 
setup().
            
            Because the 
background() function is used only
            once, the screen will fill with lines as the mouse is
            moved. To draw just a single line that follows the mouse,
            move the 
background() function to the
            
draw() function, which will clear the display
            window (filling it with orange) each time 
draw()
            runs.
            
            
def setup():
    size(400, 400)
    stroke(255)
def draw():
    background(192, 64, 0)
    line(150, 25, mouseX, mouseY)
            Static programs are most commonly used for extremely simple
            examples, or for scripts that run in a linear fashion and
            then exit. For instance, a static program might start, draw
            a page to a PDF file, and exit.
            
            Most programs will use the 
setup() and
            
draw() blocks. More advanced mouse handling can
            also be introduced; for instance, the
            
mousePressed() function will be called whenever
            the mouse is pressed. In the following example, when the
            mouse is pressed, the screen is cleared via the
            
background() function:
            
            
def setup():
    size(400, 400)
    stroke(255)
      
def draw():
    line(150, 25, mouseX, mouseY)
     
def mousePressed():
    background(192, 64, 0)
            
            
            Creating images from your work
            If you don't want to distribute the actual project, you
                might want to create images of its output instead. Images
                are saved with the saveFrame() function. Adding
                saveFrame() at the end of draw() will
                produce a numbered sequence of TIFF-format images of the
                program's output, named screen-0001.tif,
                screen-0002.tif, and so on. A new file will be
                saved each time draw() runs - watch out,
                this can quickly fill your sketch folder with hundreds of
                files. You can also specify your own name and file type for
                the file to be saved with a function like:
            saveFrame("output.png")
            To do the same for a numbered sequence, use # (hash marks)
            where the numbers should be placed:
            
            
saveFrame("output-####.png")
            For high quality output, you can write geometry to PDF
            files instead of the screen, as described in the later
            section about the 
size() function.
            
Examples and reference
            While many programmers learn to code in school, others
                teach themselves and learn on their own. Learning on your
                own involves looking at lots of other code: running,
                altering, breaking, and enhancing it until you can reshape
                it into something new. With this learning model in mind,
                the Processing software download includes hundreds of
                examples that demonstrate different features of the
                environment and API.
                
                The examples can be accessed from the File → Examples
                menu. They're grouped into categories based on their
                function (such as Motion, Typography, and Image) or the
                libraries they use (PDF, Network, and Video).
                
                Find an interesting topic in the list and try an example.
                You'll see functions that are familiar, e.g.
                stroke(), line(), and
                background(), as well as others that have not yet
                been covered.
                
            
            More about size()
            The size() function sets the global variables
                width and height. For objects whose size is dependent on
                the screen, always use the width and height variables
                instead of a number. This prevents problems when the size()
                line is altered.
            size(400, 400)
# The wrong way to specify the middle of the screen
ellipse(200, 200, 50, 50); 
# Always the middle, no matter how the size() line changes
ellipse(width/2, height/2, 50, 50);
            In the earlier examples, the 
size() function
            specified only a width and height for the window to be
            created. An optional parameter to the 
size()
            function specifies how graphics are rendered. A renderer
            handles how the Processing API is implemented for a
            particular output function (whether the screen, or a screen
            driven by a high-end graphics card, or a PDF file). The
            default renderer does an excellent job with high-quality 2D
            vector graphics, but at the expense of speed. In
            particular, working with pixels directly is slow. Several
            other renderers are included with Processing, each having a
            unique function. At the risk of getting too far into the
            specifics, here's a description of the other possible
            drawing modes to use with Processing.
            
            
size(400, 400, P2D)
            The P2D renderer uses OpenGL for faster rendering of
            two-dimensional graphics, while using Processing's simpler
            graphics APIs and the Processing development environment's
            easy application export.
            
            
size(400, 400, P3D)
            The P3D renderer also uses OpenGL for faster rendering. It
            can draw three-dimensional objects and two-dimensional
            object in space as well as lighting, texture, and
            materials.
            
            
size(400, 400, PDF, "output.pdf")
            The PDF renderer draws all geometry to a file instead of
            the screen. To use PDF, in addition to altering your size()
            function, you must select Import Library, then PDF from the
            Sketch menu. This is a cousin of the default renderer, but
            instead writes directly to PDF files.
            
            
Loading and displaying data
            One of the unique aspects of the Processing API is the
                way files are handled. The loadImage() and
                loadStrings() functions each expect to find a file
                inside a folder named data, which is a
                subdirectory of the sketch folder.
                
                File handling functions include loadStrings(),
                which reads a text file into an array of String objects,
                and loadImage() which reads an image into a PImage
                object, the container for image data in Processing.
                
            # Examples of loading a text file and a JPEG image
# from the data folder of a sketch.
lines = loadStrings("something.txt")
img = loadImage("picture.jpg")
            The 
loadStrings() function returns an array of
            Python string objects, which is assigned to a variable
            named 
lines; it will presumably be used later in
            the program under this name. The reason
            
loadStrings creates an array is that it splits the
            
something.txt file into its individual lines. The
            following function returns a 
PImage object, which
            is assigned to a variable named 
img.
            
            To add a file to the data folder of a Processing sketch,
            use the Sketch → Add File menu option, or drag the
            file into the editor window of the PDE. The data folder
            will be created if it does not exist already.
            
            To view the contents of the sketch folder, use the Sketch
            → Show Sketch Folder menu option. This opens the
            sketch window in your operating system's file browser.
            
Libraries add new features
            A library is a collection of code in a
                specified format that makes it easy to use within
                Processing. Libraries have been important to the growth of
                the project, because they let developers make new features
                accessible to users without needing to make them part of
                the core Processing API.
                
                Several core libraries come with Processing. These can be
                seen in the Libraries section of the online reference (also
                available from the Help menu from within the PDE.) These
                libraries can be seen at http://processing.org/reference/libraries/
                
                One example is the PDF Export library. This library makes
                it possible to write PDF files directly from Processing.
                These vector graphics files can be scaled to any size and
                output at very high resolutions.
                
                To use the PDF library in a Python Mode project, choose
                Sketch → Import Library → pdf. This will add the
                following line to the top of the sketch:
            add_library('pdf')
            This line instructs Processing to use the indicated library
            when running the sketch.
            
            Now that the PDF library is imported, you may use it to
            create a file. For instance, the following line of code
            creates a new PDF file named 
lines.pdf that you
            can draw to.
            
            
beginRecord(PDF, "lines.pdf")
            Each drawing function such as 
line() and
            
ellipse() will now draw to the screen as well as
            to the PDF.
            
            Other libraries provide features such as reading images
            from a camera, sending and receiving MIDI and OSC commands,
            sophisticated 3D camera control, and access to MySQL
            databases.
            
Sketching and scripting
            Processing sketches are made up of one or more tabs,
                with each tab representing a piece of code. The environment
                is designed around projects that are a few pages of code,
                and often three to five tabs in total. This covers a
                significant number of projects developed to test and
                prototype ideas, often before embedding them into a larger
                project or building a more robust application for broader
                deployment.
                
                Processing assembles our experience in building software of
                this kind (sketches of interactive works or data-driven
                visualization) and simplifies the parts that we felt should
                be easier, such as getting started quickly, and insulating
                new users from issues like those associated with setting up
                complicated programming frameworks.
            Don't start by trying to build a cathedral
            If you're already familiar with programming, it's
                important to understand how Processing differs from other
                development environments and languages. The Processing
                project encourages a style of work that builds code
                quickly, understanding that either the code will be used as
                a quick sketch, or ideas are being tested before developing
                a final project. This could be misconstrued as software
                engineering heresy. Perhaps we're not far from
                "hacking,"" but this is more appropriate for the
                roles in which Processing is used. Why force students or
                casual programmers to learn about graphics contexts,
                threading, and event handling functions before they can
                show something on the screen that interacts with the mouse?
                The same goes for advanced developers: why should they
                always need to start with the same two pages of code
                whenever they begin a project?
                
                In another scenario, the ability to try things out quickly
                is a far higher priority than sophisticated code structure.
                Usually you don't know what the outcome will be, so you
                might build something one week to try an initial
                hypothesis, and build something new the next based on what
                was learned in the first week. To this end, remember the
                following considerations as you begin writing code with
                Processing:
            
                - Be careful about creating unnecessary structures in
                    your code. As you learn about encapsulating your code
                    into classes, it's tempting to make ever-smaller classes,
                    because data can always be distilled further. Do you need
                    classes at the level of molecules, atoms, or quarks? Just
                    because atoms go smaller doesn't mean that we need to
                    work at a lower level of abstraction. If a class is half
                    a page, does it make sense to have six additional
                    subclasses that are each half a page long? Could the same
                    thing be accomplished with a single class that is a page
                    and a half in total?
- Consider the scale of the project. It's not always
                    necessary to build enterprise-level software on the first
                    day. Explore first: figure out the minimum code necessary
                    to help answer your questions and satisfy your
                    curiosity.
                The argument is not to avoid continually rewriting,
                but rather to delay engineering work until it's
                appropriate. The threshold for where to begin engineering a
                piece of software is much later than for traditional
                programming projects because there is a kind of
                art to the early process of quick iteration.
                
                Of course, once things are working, avoid the urge to
                rewrite for its own sake. A rewrite should be used when
                addressing a completely different problem. If you've
                managed to hit the nail on the head, you should refactor to
                clean up function names and class interactions. But a full
                rewrite of already finished code is almost always a bad
                idea, no matter how "ugly" it may seem.
            
         
        
            
                Before we begin programming with Processing, we must first channel our eighth grade selves, pull out a
                piece of graph paper, and draw a line. The shortest distance between two points is a good old fashioned
                line, and this is where we begin, with two points on that graph paper.
            
             
            
                The above figure shows a line between point A (1,0) and point B (4,5). If you wanted to direct a friend
                of yours to draw that same line, you would give them a shout and say "draw a line from the point
                one-zero to the point four-five, please." Well, for the moment, imagine your friend was a computer and
                you wanted to instruct this digital pal to display that same line on its screen. The same command
                applies (only this time you can skip the pleasantries and you will be required to employ a precise
                formatting). Here, the instruction will look like this:
            
            line(1,0,4,5);
            Even without having studied the syntax of writing code, the above statement should make a fair amount of
            sense. We are providing a 
command (which we will refer to as a "function") for the machine to
            follow entitled "line." In addition, we are specifying some arguments for how that line should be drawn,
            from point A (1,0) to point B (4,5). If you think of that line of code as a sentence, the function is a verb
            and the arguments are the objects of the sentence. The code sentence also ends with a semicolon instead of a
            period.
            
            
            
 
            
            The key here is to realize that the computer screen is nothing more than a fancier piece of graph paper.
            Each pixel of the screen is a coordinate - two numbers, an "x" (horizontal) and a "y" (vertical) - that
            determines the location of a point in space. And it is our job to specify what shapes and colors should
            appear at these pixel coordinates.
            
            Nevertheless, there is a catch here. The graph paper from eighth grade ("Cartesian coordinate system")
            placed (0,0) in the center with the y-axis pointing up and the x-axis pointing to the right (in the positive
            direction, negative down and to the left). The coordinate system for pixels in a computer window, however,
            is reversed along the y-axis. (0,0) can be found at the top left with the positive direction to the right
            horizontally and down vertically.
            
            
            
 
            
            Simple Shapes
            
                The vast majority of the programming examples you'll see with Processing are visual in nature. These
                examples, at their core, involve drawing shapes and setting pixels. Let's begin by looking at four
                primitive shapes.
                
                
                 For each shape, we will ask ourselves what information is required to specify the location and size (and
                later color) of that shape and learn how Processing expects to receive that information. In each of the
                diagrams below, we'll assume a window with a width of 10 pixels and height of 10 pixels. This isn't
                particularly realistic since when you really start coding you will most likely work with much larger
                windows (10x10 pixels is barely a few millimeters of screen space.) Nevertheless for demonstration
                purposes, it is nice to work with smaller numbers in order to present the pixels as they might appear on
                graph paper (for now) to better illustrate the inner workings of each line of code.
                For each shape, we will ask ourselves what information is required to specify the location and size (and
                later color) of that shape and learn how Processing expects to receive that information. In each of the
                diagrams below, we'll assume a window with a width of 10 pixels and height of 10 pixels. This isn't
                particularly realistic since when you really start coding you will most likely work with much larger
                windows (10x10 pixels is barely a few millimeters of screen space.) Nevertheless for demonstration
                purposes, it is nice to work with smaller numbers in order to present the pixels as they might appear on
                graph paper (for now) to better illustrate the inner workings of each line of code.
                
                A point() is the easiest
                of the shapes and a good place to start. To draw a point, we only need an x and y coordinate.
                
                
                 
                
                A line() isn't terribly
                difficult either and simply requires two points: (x1,y1) and (x2,y2):
                
                
                 
                
                Once we arrive at drawing a rect(), things become a
                bit more complicated. In Processing, a rectangle is specified by the coordinate for the top left corner
                of the rectangle, as well as its width and height.
                
                
                 
                
                A second way to draw a rectangle involves specifying the centerpoint, along with width and height. If we
                prefer this method, we first indicate that we want to use the "CENTER" mode before the instruction for
                the rectangle itself. Note that Processing is case-sensitive.
                
                
                 
                
                Finally, we can also draw a rectangle with two points (the top left corner and the bottom right corner).
                The mode here is "CORNERS".
                
                
                 
                
                Once we have become comfortable with the concept of drawing a rectangle, an ellipse() is a snap.
                In fact, it is identical to rect() with the difference being that an ellipse is drawn
                where the bounding box of the rectangle would be. The default mode for ellipse() is "CENTER",
                rather than "CORNER."
                
                 
                
                 
                
                 
                
                It is important to acknowledge that these ellipses do not look particularly circular. Processing has a
                built-in methodology for selecting which pixels should be used to create a circular shape. Zoomed in
                like this, we get a bunch of squares in a circle-like pattern, but zoomed out on a computer screen, we
                get a nice round ellipse. Processing also gives us the power to develop our own algorithms for coloring
                in individual pixels (in fact, we can already imagine how we might do this using
                "point" over and over again), but for now, we are content with allowing the "ellipse" statement to do
                the hard work. (For more about pixels, start with: the pixels reference page, though be warned
                this is a great deal more advanced than this tutorial.)
                
                Now let's look at what some code with shapes in more realistic setting, with window dimensions of 200 by
                200. Note the use of the size() function to
                specify the width and height of the window.
                
                 
                
            
            size(200,200);
rectMode(CENTER);
rect(100,100,20,100);
ellipse(100,70,60,60);
ellipse(81,70,16,32); 
ellipse(119,70,16,32); 
line(90,150,80,160);
line(110,150,120,160);