2/7/18 2:55PM

This commit is contained in:
Phone Thant Ko 2018-07-02 14:55:22 +06:30
parent 90ee44541e
commit fa305fc987

View File

@ -40,6 +40,8 @@ void setup() {
// Normally, we put all the static codes inside the setup() method as the name suggest since it only runs once. // Normally, we put all the static codes inside the setup() method as the name suggest since it only runs once.
// It can range from setting the background colours, setting the canvas size. // It can range from setting the background colours, setting the canvas size.
background(color); // setting the background colour
size(width,height,[renderer]); // setting the canvas size with optional parameter defining renderer
// You will see more of them throughout this document. // You will see more of them throughout this document.
// If you want to run the codes indefinitely, it has to be placed in draw() method. // If you want to run the codes indefinitely, it has to be placed in draw() method.
@ -204,7 +206,7 @@ redraw(); // runs the draw() method once more.
exit(); // This stops the program. It is useful for programs with draw() running continuously. exit(); // This stops the program. It is useful for programs with draw() running continuously.
``` ```
## Drawing with Processing ## Drawing with Processing
Since you will have understood the basics of the language, we will now look into the best part of Processing; DRAWING. Since you will have understood the basics of the language by now, we will now look into the best part of Processing; DRAWING.
```processing ```processing
/* ------ /* ------
@ -222,27 +224,99 @@ point(x, y, z); // In 3D space
// Line // Line
line(x1, y1, x2, y2); // In 2D space line(x1, y1, x2, y2); // In 2D space
line(x1, y1, z1, x2, y2, z2); // In 3D space line(x1, y1, z1, x2, y2, z2); // In 3D space
// Draws a line connecting two points defined by (x1, y1) and (x2, y2) // Draws a line connecting two points defined by (x1, y1) and (x2, y2).
// Triangle
triangle(x1, y1, x2, y2, x3, y3);
// Draws a triangle connecting three points defined by coordinate paramters.
// Rectangle // Rectangle
rect(a, b, c, d, [r]); // With optional parameter defining the radius of all corners rect(a, b, c, d, [r]); // With optional parameter defining the radius of all corners
rect(a, b, c, d, tl, tr, br, bl); // With optional set of parameters defining radius of each corner rect(a, b, c, d, [tl, tr, br, bl]); // With optional set of parameters defining radius of each corner
// Draws a rectangle with {a, b} as a top left coordinate and c and d as width and height respectively. // Draws a rectangle with {a, b} as a top left coordinate and c and d as width and height respectively.
// Quad // Quad
quad(x,y,x2,y2,x3,y3,x4,y4) quad(x, y, x2, y2, x3, y3, x4, y4);
// Draws a quadrilateral with parameters defining coordinates of each corner point. // Draws a quadrilateral with parameters defining coordinates of each corner point.
// Arc; // Ellipse
ellipse(x, y, width, height);
// Draws an eclipse at point {x, y} with width and height specified.
// Arc
arc(x, y, width, height, start, stop, [mode]); arc(x, y, width, height, start, stop, [mode]);
// While the first four parameters are self-explanatory, // While the first four parameters are self-explanatory,
// start and end defined the angles the arc starts and ends (in radians). // start and end defined the angles the arc starts and ends (in radians).
// Optional parameter [mode] defines the filling; // Optional parameter [mode] defines the filling;
// PIE gives pie-like outline, CHORD gives the chord-like outline and OPEN is CHORD without strokes // PIE gives pie-like outline, CHORD gives the chord-like outline and OPEN is CHORD without strokes
// Curves
// Processing provides two implementation of curves; using curve() and bezier().
// Since I plan to keep this simple I won't be discussing any further details.
// However, if you want to implement it in your sketch, here are the references:
// (https://processing.org/reference/curve_.html)(https://processing.org/reference/bezier_.html)
// 3D Shapes
// 3D space can be configured by setting "P3D" to the renderer parameter in size() method.
size(width, height, P3D);
// In 3D space, you will have to translate to the particular coordinate to render the 3D shapes.
// Box
box(size); // Cube with same length defined by size
box(w, h, d); // Box with width, height and depth separately defined
// Sphere
sphere(radius); // Its size is defined using the radius parameter
// Mechanism behind rendering spheres is implemented by tessellating triangles.
// That said, how much detail being rendered is controlled by function sphereDetail(res)
// More information here: (https://processing.org/reference/sphereDetail_.html)
// Irregular Shapes
// What if you wanted to draw something that's not made available by Processing's functions?
// You can use beginShape(), endShape(), vertex(x,y) to define shapes by specifying each point.
// More information here: (https://processing.org/reference/beginShape_.html)
/* ---------------
Transformations
---------------
*/
// Transformations are particularly useful to keep track of the coordinate space
// and the vertices of the shapes you have drawn.
// Particularly, matrix stack methods; pushMatrix(), popMatrix() and translate(x,y)
pushMatrix(); // Saves the current coordinate system to the stack
// ... apply all the transformations here ...
popMatrix(); // Restores the saved coordinate system
// Using them, the coordinate system can be preserved and visualized without causing any conflicts.
// Translate
translate(x, y); // Translates to point{x, y} i.e. - setting origin to that point
translate(x, y, z); // 3D counterpart of the function
// Rotate
rotate(angle); // Rotate the amount specified by the angle parameter
// It has 3 3D counterparts to perform rotation, each for every dimension,
// namely: rotateX(angle), rotateY(angle), rotateZ(angle)
// Scale
scale(s); // Scale the coordinate system by either expanding or contracting it.
/* --------------------
Styling and Textures
--------------------
*/
/* -------
Imports
-------
*/
// The power of Processing can be further visualized when we import libraries and packages into our sketches.
// Import statement can be written as below at the top of the source code.
import processing.something.*;
``` ```
Processing is easy to learn and is particularly useful to create multimedia contents (even in 3D) without Processing is easy to learn and is particularly useful to create multimedia contents (even in 3D) without