<< Chapter < Page Chapter >> Page >

Ellipses

The function ellipse() draws an ellipse in the 2D plane. Its four parameters are interpreted, as in the case of rect() , as position followed by width and height. The position can be set in different ways according tothe ellipseMode() , whose parameter can take values CORNER, CORNERS, CENTER, CENTER_RADIUS . The first couple of these possible values have to be referred to the rectangle that iscircumscribed to the ellipse.

3d

Processing offers a very limited repertoire of 3D-object primitives, essentially onlyballs and boxes.

Boxes

The function box() produces a cube when invoked with a single parameter (edge), a parallelepiped when invokedwith three parameters (width, height, depth).

Balls

The function sphere() produces, by an approximating polyhedron, a sphere whose radius is specified as aparameter.The function sphereDetail() can be used to specify the number of vertices of the polyhedron thatapproximates the ideal sphere.

The stack of transformations

A rotation or a translation can be imagined as operations that rotate or translate the Cartesian reference system. In otherterms, after a rotate() or a translate() the following positioning operations of the objects will have a new coordinate system. When variousobjects are positioned in different ways in space, it is useful to keep trace of the coordinate systems that are set,one after the other. The data structure that is suited for containing such systems is the stack of transformations( matrix stack ). With the function pushMatrix() the current coordinate system is put on top of the stack. On the other hand, to revert to thecoordinate system before the last transformation, we have to call a popMatrix() . Actually, the stack contains the affine transformation matrices, according to what isdictated by OpenGL and described in [link] .

In this example two objects are positioned in the 3D space: a planar square and a cube. The first pushMatrix() saves the coordinate system onto the stack, then sometransformations are applied, and finally the square is drawn. To go back to the previous coordinate system and applynew transformations to position the cube, we apply a popMatrix() . Essentially, the pushMatrix() and popMatrix() determine the scope for the geometric positioning of an object.

float angle; void setup(){size(100, 100, P3D); int angle = 0;} void draw(){background(200); angle += 0.003;pushMatrix(); translate(25,50);rotateZ(angle); rotateY(angle);rectMode(CENTER); rect(0,0,20,20);popMatrix(); translate(75,50,-25);rotateX(angle); box(20);}
Got questions? Get instant answers now!

Lighting

The Processing lighting model echoes the model used in OpenGL , that is the Phong reflection model . Such model is not physically justified, but it is particularly efficient. OpenGL considers as illuminated eachpolygon whose normal forms an acute angle with the direction of incoming light. This happens regardless of any maskingobjects. Therefore, shadows are not cast. OpenGL is said to use a local illumination model, since multiple reflections amongsurfaces and cast shadows are not automatically rendered.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Media processing in processing. OpenStax CNX. Nov 10, 2010 Download for free at http://cnx.org/content/col10268/1.14
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Media processing in processing' conversation and receive update notifications?

Ask