Generative Design Variations M.3.4.01 Deconstructing the mesh | A single grid

I quote a piece of the introduction text from the Generative Design book: ‘Admittedly, the forms generated up to now (at least the simple ones) can be produced more quickly in any 3D program. The effort involved in calculating and drawing your own mesh pays off when you want to go beyond the usual representation methods. Until now we have generated contiguous connected grids. The variety of shapes can be expanded when the random function comes into play to dissolve the mesh. It is already laid out in the mesh class: a value can be set using setMeshDistortion (), ensuring that the mesh points will not be drawn on their calculated positions, but rather at a random distance from them.’ Until here the introduction. You can find the original tool here.

This program is presented as a tool. So I did not modify a lot at the program itself. Did not change the global variable names but I found it necessary to modify the lights. So I imported them from my earlier examples. I think it would be a good thing to get through all the meshes again. Since we have additional possibilities to navigate and to modify  I think this could lead to very different images than the program generated in the earlier sessions. And because I did not change much in the program I did not feel the need to put code on the loftmatic website this time. I did prepare a Flickr Album which contains all the images I have made during this assignment. You can find that clicking this link:

I just go through all meshes I have used. And I see that the plane mesh is skipped in the program so I start with the tube mesh. Increased the mesh scale to 500. And I added the smooth (8) function. Don’t know if that helps when using the OpenGL render engine.

Next is the sphere mesh. Spend a lot of time with modifying the sphere to a 2-dimensional object. How strange can it be. You have the opportunity to work in three dimensions and you spend most of your time working in two dimensions.

The torus mesh. Spend most of the time in the torus itself fiddling with the parameters.I did not feel the need to use the meshdistortion. Don’t know why. Looking back to all examples I have made I did not use it very much.

The paraboloid mesh was a real challenge. But I think the results are good. I begin to miss the fact that you only can rotate in the x- and y angle. But allas we don’t have a mouseZ function.

The steinbachscrew is an intriguing object. It gives you so much unexpected images. And when the object is interesting. And the lighting is good. The compositions grow from themself.

The sine mesh give me a bit fewer possibilities. Or maybe I did not take enough time to better check it out. But anyway if you run through it with the paramextra slider the objects you can create are almost endless.

I think I only scratched the surface of the figure8torus mesh. I would have had hundreds of images if I had continued. Now I have only 217. By the way. The need to deconstruct these objects is decaying the longer I work with them. Maybe its because it behaves too much as a filter.

The elliptictorus mesh had another kind of behavior. I could not get that line-pattern on the mesh. Do’nt know why this was not possible. You can use it on some of the meshes but not all meshes will allow you to do that.

The corkscrew mesh was a bit difficult to handle. But in the end there were a few  interesting results.

The bohemiandome gave me very different images than the previous examples. There was not much of a pattern or structure to look for. There just wasn’t any available. I am still not really finished with the bow mesh. The maedersowl mesh did give me several interesting shapes.

The longer I work with this tool the more I get the impression that it has endless possibilities. And I only came to vcount 7  (of 400) during working with the astroidalellipsoid. Anyway that 400 can easily changed to a higher number.

Made some variations with the triaxialtritorus. The limpettorus mesh stays in a way a UFO. The horn mesh gives interesting rounded shapes. Not ready yet with the shell mesh. The kidney mesh gave me some funny results. Which is also true for the lemniscape and the trianguloid mesh. I think I found the superformula mesh the least interesting. I could not get very interesting images from it. But maybe that will happen in the next session.

Generative Design Variations M.3.3 The mesh class

Here is the Generative Design book text: ‘The calculation and rendering of the grids for the rest of the additional examples in this chapter are encapsulated in a class. This means that all the parameters for the mesh and the functions for calculating and drawing it are summarized in a separate part of the program, making it easier to generate the mesh; the code is also clearer. In addition, many standard forms are predefined in the class. The following two lines, for example, suffice to generate and draw a mesh. Here is an example of the ‘Steinbach screw,’ a form that features 100 tiles in the u and v directions, a value range for u from -3 to 3, and a value range for v from -Pi to PI:

Mesh myMesh = new Mesh(Mesh.STEINBACHSCREW, 100, 100, -3, 3, -PI, PI);

The mesh class is also contained in the Generative Design library documented in detail at A short reference for the mesh class is located at the end of this chapter.’ Until here the Generative Design book. You can find the original code here:

I have prepared a Flickr Album which contains all the images I have made during this assignment. You can find that clicking this link:

And because these programs do not work in JavaScript I have put all code involved on my loftmatic page. When you click on the previews you get to see the Processing code only.

There are a few things which I had to make clear to myself. I have the impression that this example was made to get used and use the mesh class. Not everything in the mesh class is clear to me. So to make good use of it I tried to merge some of the functionality of the earlier examples. One is the screendump function. I don’t know why the choice is made for saveFrame in the original program. Using saveFrame means that every time you run the program a screendump is made. But maybe I am missing something. And I would like to rotate and zoom the object. Maybe I can find a solution for that. Ok… So it is not possible to get the key-functionality from the earlier examples into this program without modifying it a bit. I think it is because the draw-block is encapsulated into the mesh class. And I do not want to make any changes in the class. But does my lights setup of the previous examples work. No because the program has another light functionality. Its added in setup. And I am supposed to work alone in setup? So I could change the light settings in setup? Lets try that. What is lightSpecular? Sets the specular color for light. It is set to 230, 230, 230 that is a light grey in RGB. But the mesh class uses HSB. So I have imported the light settings of my earlier examples in the setup block. It seems not to be necessary to uncomment the HSB line in the mesh class. Another thing is that I found that the 5th parameter in myMesh.setColorRange gives a nice pattern when you make it lower than 90.

There are 22 predefined meshes in the mesh class. They are called: plane, tube, sphere, torus, paraboloid, steinbachscrew, sine, figure8torus, elliptictorus, corkscrew, bohemiandome, bow, maedersowl, astroidallipsoid, triaxialtritorus, limpettorus, horn, shell, kidney, lemniscape, trianguloid and the superformula. I started to experiment with the steinbachscrew. Just because it was already incorporated in the code. I took the time for  playing with the parameters in the steinbach screw. After working with it for a while it seems possible to break the mesh down to very simple shapes. Which gave me some unexpected images. I also made a draw block in the first tab. This solved a few things for me. I can get my zoomFactor back using my up and down keys. And I can use the s-key for saving a frame. And it seems that it is giving me a better image quality.

Ok. I have noticed that all other examples of this program are the same. Except for the fact that they load a new predefined mesh shape from the mesh-class. My idea is to explore all the predefined meshes. I will generally describe what I have done. So I will not describe every change per mesh. After working with the steinbachscrew I continued with the plane mesh. But after a while it did not look very interesting to me. It’s a plane mesh. So I played with a few parameters but than I replaced the object for a tube mesh. Rotated it on the x-angle because it seems that it doesn’t make any difference to rotate it on the y-angle. So I replace that by rotation on the z-angle. You can make a very narrow band (or ribbon) with it. You can make it larger or smaller. Or you could introduce more tubes.

Used the sphere mesh. Decreased the value range for v from -1 to 1. Which gives me a very thin ellipse. Increased the value range for v from -100 to 1. This gives me a kind of bowl. And it seems that there is a gap in the bottom. Ok… if you increase -100 to -180. The bowl is complete. The hole has gone. There are a lot of possibilities already available when you work with this sphere.

A torus (to say it rough) is a donut shaped object. I removed the top half of it. And I made a version in which I removed the top sides. Wich gives me another kind of bowl. looked from various angles to the mesh and finally I have cut away the bottom and a part of the sides.

Warszawa Ochota railway station and the Calgary Saddledome are an example of a hyperbolic paraboloid. We are working with an elliptic paraboloid. Which is shaped like an oval cup. Why I have two of them on top of each other is a mystery to me. Tried to look at it from different angles. And a few views from the top into the paraboloid. Rotated the paraboloid almost 360º and stripped the sides. Reduced the value range for v from -30 to 30.

I skipped the steinbach screw because I started with that. I will continue with the sine mesh. I increased the value range for u from -5000 to 5000. Decreased the value range for u from -50 to 50. Which renders a very odd object. A very strange object. It is difficult to judge how this object would look like when it was would be printed in 3d (or 3d-printed).

What is a figure8torus? Checked that and a figure 8 torus is also known as a figure eight torus. The figure eight torus is an immersion of the torus which has a single (circular) double curve down the middle. Hope that makes sense. Started with the plane object. No changed angles whatsoever. Rotated the object on the x-angle -1.5. No rotation on the x-angle. -1.0 on the y-angle. Rotated the object -1.5 on the x-angle, -2.5 on the y-angle and 0.5 on the z-angle. Changed the radians to -90 and 90. Rotated the object on the x-angle by -0.5.

An elliptictorus is a surface of revolution which is a generalization of the ring torus. In other words the object has an inside pointy cavity in an elliptic shape on the outside. I have rotated it -0.4 on the x-angle. Cut off the top and bottom of the elliptictorus. Looking from the top inside the object. Is it a coincidence that this object is rotated 3.14 (pi) degrees on the x-axis? Filled the bottom again which shows the point element better. One image shows the bottom (or the inside) of the object. And another image shows the top of the object. Which looks like an apple.

The corkscrew mesh gives me a corkscrew-ish image. It looks like there are two corkscrews involved which are tangled into each other. When you decrease the radians from -10 to 10 you can get very nice shaped ribbon-like objects. Making the ribbon thicker gives you other objects. Lowered the amount of tiles to -600. And decreased the radian value rage to -180 and 1 makes the ribbon thicker.

Next one is the bohemiandome. It’s quite simple: If you rotate a circle which is parallel to a plane in a circle that is perpendicular (a straight line at an angle of 90°) to the same plane, the resulting envelope is a bohemian dome. Well… it is not really clear to me yet. So we have this tube. I have cut a part of it. But it still doesn’t make a lot of sense. Ok. And than it folds inside on the lower part. And it folds over the upper part. Ah… got it. And those inner and upper foldings connect to each other in the final bohemian dome object.

The bow mesh. I think with bow they mean arc? A continuous part of the circumference of a circle (circular arc) of an other curve. Hmmm… think I am wrong here. This object doens’t look like a bow. It is a bow-ish object though (from the side (a little)). I’am now almost sure that rotating 3.14 on the x, y or z angle is a full circle round the object. Rotating 1.57 is half the circle. Cut away the lower part. The ends connect fine at 90º. Cut away the side parts.

The meadersowl mesh seems to be a flat object. Or it exists out of flat planes if you look at the object under a zero angle. But rotated on the y axis it seems it exists out of ellipses wich are sticked to each other but not in a random way. Decreased the v-value range radians to 0. Which seems not a good idea. So I increased it to 90. Made some examples with the same viewpoint. But I increased the v-value-range to -360. And decreased the v-value-range radians from -360 to -180.

I checked what an astroidal ellipsoid is. Again its very simple: The surface which is the inverse of the ellipsoid in the sense that it ‘goes in’ where the ellipsoid ‘goes out.’ Sounds logical. But what to imagen with that? Rotated the object on the x-axes for 1.0 degrees. Rotated the object on the y-axis for 0.785 degrees? This is a very strange object. It behaves totally unexpected on my input. I rotated it 3.57 degrees on the x and -0.785 degrees on the y axis.

I could not find any theoretical explanation about what a triaxialtritorus is. And it looked pretty complicated when it showed up for the first time in my display window. Rotated it on the y-axis for 1.57 degrees but that shows me just the opposite of the object which is still very complex. Rotated it 0.785 on the x-axis but the object stays a mystery to me. It is still not completely clear to me. I rotated the object now 0.5 on the x-axis and -0.2 on the y-axis. A kind of ashtray object. Is there anyone out there who knows what an ashtray is? I rotated the object on the y-axis – 0.785 degrees.

The limpet torus. I did not find any description. And when opening the object it doesn’t have a specific shape. Looks like an ellipse with a hole in the middle. I rotated the object 2.0 degrees on the x-axis. And now it looks very UFO-ish (seen from the bottom-side). Rotated it 3.14 degrees. I have cut away the bottom? And I have cut away some piece of the front.

The horn. But it looks like there are two horns involved. I have cut away the inside of the horns. And I have broken down both horns by decreasing the u value range to -1, 1. Ah… I have noticed that you also can use floats. It doesn’t have to be integers. That gives me some more freedom. Could make a not so perfect ‘c’. And a not so perfect ‘6’.

The shell mesh. It is possible to make the inner and outer swirl longer. But that is not endless because when you continue to make the outer swirl longer you end up with lesser and lesser points. It’s u and v direction value range is now -32 but if you double that amount the tiles are going to show up. I have cut away the top of the shell. Rotated the shell mesh -0.2 degrees on the x-axis. The value range for v is changed to -40, 30. I have increased the u-value range to -64.0, 6.3. And because the tiles showed up I had to increase the tiles to 1000 x 1000.

The kidney mesh looks like two squashed balls on top of each. Rotating it on the z-axis seems to make no difference. Except when yo cut a part of the object away. Decreased the value range for v from -50 to 180. Rotated the object 1.57 degrees on the y-axis.

The lemniscape mesh looks like a flattened four-leaf clover. The anti-aliasing doesn’t work well here. Specially in the middle it doesn’t do a good job. I’ve rotated the object 1.0 degrees on the x-axis. Which gives me a total different object. Rotated it again on the z-axis for 1.0 degrees. Yet another different object. Rotated it -2.0 on the x-axis and 2.0 on the z-axis. Again a totally different object. I don’t see how this object is related to the four-leaf clover. Tried to find an angle in which you can see the original four leaf clover but also the other shape it can have. It stays a mystery for me how this object behaves.

The trianguloid mesh is a kind of knot (I think). Hmmm… when you rotate it on the y-axis it is a very complicated knot. And when you cut away a lot you can see that the basic shape looks a bit like the Toyota logo. If you cut away a little less you can see how it all is related to the final object. I have added a bit more material. Don’t know if this makes sense for the recognition of the object.

And the last mesh is the superformula. It can be used to describe many complex shapes and curves that are found in nature. But I only see a not so perfect sphere. Eh… So I have cut away one-sixt part and I get a 3-dimensional-pacman-like object with a pointy head? When you look into the mouth of the pacman you see the inside of a sphere. Which seems straightforward to me. I have put the object on its side and made an opening in it. But there seems to be a copy of itself inside the object.

Generative Design Variations M.3.2.5 Optimizing the code

This is the fifth example of the ‘Formulated bodies’ chapter. The Generative Design book describes this example as follows: ‘Generally speaking, all three-dimensional forms defined by mathematical functions can be generated with the last version of the previous program. Since rendering with complicated functions or a very large number of grid points can be very CPU-intensive, a simple optimization of the code should be performed. At the moment, all the grid points are newly calculated for each frame (i.e., each time the grid is drawn). It would suffice, however, to calculate the x-, y-, and z-coördinates just once at the beginning. In addition, almost all points are calculated twice: the lower points of a tile row correspond in the end to upper tiles of the next row. It is therefore better to calculate the points at the beginning and to store them in a two-dimensional array..’ Here is the original code from the Generative Design book:

I have prepared a Flickr Album which contains all the images I have made during this assignment. You can find that clicking this url:

And because these programs do not work in JavaScript I have put all code involved on my loftmatic page. When you click on the previews you get to see the Processing code only.

Because this assignment is about optimizing code I will still try to make different shapes. Maybe I will repeat myself doing that. I started with adding the arrow down / up with: Zoom – / +. And I imported my light settings from the previous examples. Also changed the global variable names. I also closed the object which was open in the example. It’s now only open at the sides of the object. I definitely do need a screendump function. Used the s-key for that.

Used that single object to make a pattern with two for loops which I also used in the other assignments. And I used some of the functionality which was in the previous sketch series (M.3.2.4). I adjusted the H- & V-MinMaxValue Range during the initialization at the top the program. And I picked up my last bending possibility from M.3.2.4. using rotateX for a minimal bending of the total object.

Increased the amount of objects to a matrix of 32 x 32 objects.

Increased the amount of objects to 64 x 64. And I had to decrease the H & V GridDefinition to 10. Otherwise the sketch would react very lazy.

These are two equal objects. Except one of them is rotated an extra 90 degrees. 90 Degrees gave me better results than rotating it 180 degrees. This is now a matrix of 256 x 256 objects.

Decreased the H & V GridDefinition to 4. But I think at this moment the object gives me too much noise and moiré effects. This can be nice sometimes but it is not in this case.

Still a bit noisy but it’s getting better. Especially when you get up closer to the object. Decreased the H & V GridDefinition to 2. At this point you could ask yourself why still use objects. And that is a very relevant question which I cannot answer. Sometimes you arrive at points which are not really based on logic. But just by doing things step by step you accept that you have arrived at that moment in the process . Hopefully that makes sense. But I agree that this would work with ellipses or rectangles. Because the objects are now of such a size that it is almost only 1 pixel.

In this example I used a matrix of 512 x 512 objects. That makes a total of 262.144 objects. Both rotated by rotateX. But one of them is rotated 90 degrees extra.

In fact this is exactly the same sketch as the previous one. The only difference is that in the for loop (on line 122) j += 2 and on line 123 i++. Everything is copied and an extra rotation of 90 degrees is added. Than I replaced the vertices by the 3D Primitive box. Using 262.144 boxes is of course slowing down my machine. Fortunately I am not in a hurry. But I will half the amount of boxes. That seems not to be enough so I halved the amount again to a matrix of 64 x 64. Which is still 4096 boxes.

This is the same object as the previous sketch. I only modified the for loops.

Generative Design Variations M.3.2.4 Drawing a mesh using u-v-coördinates

This is the fourth example of the ‘Formulated bodies’ chapter. The Generative Design book describes this example as follows: ‘Obtaining the values of x and y becomes much simpler if they are calculated using a formula rather than taken directly. The shapes that can be generated use the same formulas and are also rotated the same way in space. The different value ranges for u and v make sure that a different part of the formula’s entire surface is drawn.’ Here is the original code:

I have prepared a Flickr Album which contains all the images I have made during this assignment. You can find that clicking this url:

And because these programs do not work in JavaScript I have prepared the code on my loftmatic page. When you click on the previews you get to see the Processing code only:

I was so impolite to remove the arrow left / right: uMin, uMax – / + and replace the arrow down / up with: Zoom – / +. They were used twofold (you can find the same functionality under the keys 1-8). I did this because I needed those keys for my zoom in and out functionality. It seems that you can make pretty abstract objects with this program. Let’s see where we are going this time.

I tried to reconstruct the examples of M.3.2.4  from the Generative Design book. But the settings from the book gave me totally different objects than the printed examples. And because that did not work out I started working on more than one object. Using a for loop I have repeated the object 9 times. Horizontal and vertical. This gives me the possibility to make complex patterns with 81 3-dimensional objects.

I am trying to get the total number of 81 higher. Of course this is a tradeoff between the amount of objects and the image quality / H & V GridDefinition. I have now 18 objects horizontal and vertical = 324 objects in total. And they are still listening to my keystrokes of 1 – 8.

Made some variations by adjusting the horizontal and vertical min-max value range.

Used a small modification on line 128 and 135. Changed that setting from 0.75 to 1.01.

What if I decrease the H & V GridDefinition to 1? Than I can increase the complexity again. But 1 gives me a dull flat object. 2 Makes a difference. Doubled the amount of objects.

Introduced a second field with meshes. And this makes the program terribly slow. Rotated one field 45 degrees. Because this is not working I decreased the H & V GridDefinition to 10.

The same two objects but now one of them is rotated on the x-angle.

Increased the amount of objects to 100 (-50, 50). Kept the H & V GridDefinition to a very low 4. This gives me plenty of room to use more objects. And because I will not be close with the camera I am able to do this without losing image quality. Used 1 * 1.5, 2.0, 2.5, 3.0 and 3.5 for bending the object. Now I can use the original objects to put a structure on the model. After a while I found out that it was no problem to go up closer with the camera into the object. The image quality is good enough.

Introduced a copy of the first object. Rotated it on the y. And mostly made screendumps on the inside of the object. I think the object itself is too complicated for showing it totally. But the separate parts close-up are fine.

Generative Design Variations M.3.2.3 A second coördinate system

I quote the Generative Design book here: ‘Especially with complicated formulas, it’s easiest to keep track of the original grid and the three-dimensional form using two different coördinate systems: one for the original two-dimensional grid and another for the positions in the three-dimensional space. From now on, u and v will be used to represent the axes of the grid coördinate system, x, y, and z will continue to be used for the three-dimensional space. The values uMin, uMax, vMin and vMax are used to define the value range for u and v. The introduction of a second coördinate system becomes especially noticeable in the source code, in the new names for some variables.’ Here is the original code:

I have made a summary page on Flickr. Almost all images I made during this assignment can be found there.

And because none of the programs I changed work in JavaScript you can find my variations of the original code if you click on the previews of this loftmatic page.

I found it very confusing to introduce a second coördinate system. And why using u for horizontal an v for the vertical grid definition? V I could understand as an abbreviation of vertical. But U for horizontal? I changed that to H for the global variable H_GridDefinition. But maybe after working with those two coordinate systems it will all fall in its place. We will see. I used the same tactics as in the earlier examples. Repeated the shape four times. Which lead to a bit boring setup if you ask me. Increased the H & V_GridDefinition to 300. But in a later stage I found a GridDefinition of 400 better. I changed that afterwards. And because I need sometimes to zoom in and out of an object I gave the up and down key’s zoom functionality.

Increasing the H & V Min and MaxValueRange from 40 to 80 leads to a combination of the four objects. Which on itself leads to interesting patterns.

Rotated the four rectangles 45 degrees.

Instead of rotate I used a combination of rotateX and rotateY in this example.

I increased the H & V GridDefinition to 600. Increased it again to 800. I think this is hard work for my system. The response is very tiresome. But it gives interesting images. And that is where I am after.

I have thrown all my earlier copied objects away until there was only one left. It would be interesting to see what you can do with just one object. I increased the z-value 6 times.

Added a second copy of the same object. The only difference is that it is rotated at the x-axis for 90 degrees.

Added a third copy of the same object. The only difference is that it is rotated at the y-axis for 90 degrees.

I have now five identical objects intersecting each other. The first one is not rotated at all. Second one is rotated on the x-side for 90 degrees. The third one rotated on the y-side for 90 degrees. Forth rotated-y 135 degrees and the fifth shape is y-rotated for 225 degrees.

I could add two more shapes to this which complete the object. Added a shape rotated x with a rotation of 135 degrees and one shape rotated on the x with a rotation of 225.

Generative Design Variations M.3.2.2 Bending the grid with a radial wave

I have been working on the third example of the M.3 Formulated bodies chapter. The Generative Design book describes this example as follows: ‘This is the second example of the effects of two different formulas. In this example the x- and y-coordinates served as the parameter. It is also possible to use formulas for the x- and y-coordinates in order to move a point to an arbitrary location in space.’ You can find the original code here:

I made a Flickr summary page with all the images I made during this assignment. And because JavaScript does not work with these programs you find the slightly changed code on my loftmatic page.

In the earlier example I could perfectly match 4 rectangles together without any gaps between them. In this example the rectangles and the waves in it are not symmetrical so they cannot match perfectly to each other. That means that I have to find another solution. But sometimes you don’t have to find another solution. Because when the separate rectangles cannot match then I can make a proposal with rectangles that do not match to each other. That doesn’t solve the matching problem but it gives you new opportunities to create other images with new compositions.

I had an object drawn in my sketchbook but during the making of it turned out that an unfinished version of it would be much more suitable to make good compositions. Those happy incidents sometimes happen. ‘These happy instincts which do occur to one sometimes so unaccountably & fortunately.’ as Ada Lovelace wrote in one of her letters to Charles Babbage. I do not know if that quote makes sense in this context. But there are similarities in it.

Some background information. Because the objects are all the same (only their positions in 3D space are different) I have given them bright colors to recognize them better during the positioning. When the position of the rectangles is fine I comment out those colors and restore the light settings.

A fence! And I have increased the grid points to 400. Oops! I get another java.lang.ArrayindexOutOfBoundsException when I hit the ‘p’ key. So I will not be able to save .pdf-s. Knowing that error from the previous session I just save every image as png.

Until now I have only worked with squares. Used rectangels of different sizes in this example.

I have taken my ‘old’ ModifyDistance variable from the previous M.3.2.1 session into this sketch. Fact is that the values of ModifyDistance can be used to open up the objects. Because the objects have patterns made of parallel lines you sometimes get interesting moiré patterns. But I will try to use that optical illusion better in the next variation.

In this sketch the rectangles are overlapping each other. Which makes the chance on chaos or interesting moiré patterns even greater. Made a few variations with it.

In the previous sketch the gaps in the rectangles were pretty close to each other. I doubled the size of the gaps. And I used rotateX for two of the rectangles. Increased the grid points from 100 to 200. This might give me more moiré patterns.

I have connected all four rectangles to the same origin point (which is in the middle of the display screen). This gives me fewer options to see unexpected compositions. But it is also less chaotic in that way. Experimented with rotateX and rotateY.

Used rotateZ too. Increased the number of grid points from 100 to 150. Which made the program slow. But it gave me a few extra variations.

Generative Design Variations M.3.2.1 Bending the grid

I am continuing with the second example of the M.3 Formulated bodies chapter. The Generative Design book describes this example as follows: ‘The next step to creating a three-dimensional form is easy. The values of x and y are used to find a value for the z-position–the grid point is now transferred into the third dimension. This kind of transformation is an ‘elevation contour’ since the x- and y-coordinates of the grid points are not altered.’ You can find the original code here:

I made a Flickr summary page with all the images I made during this assignment. And because JavaScript does not work with these programs you find the slightly changed code on this loftmatic page.

When I started I was a little confused by the fact that a formula was discussed in the Generative Design book while I could not find that formula in the code. The formula should be on line 87 of the program but that line says: float z = sin(x); So I thought that it would be worth a try to use the formula from the book in the program in a later stage. But then I saw that this formula was used in the next program (M_3_2_02). For changing the code I will go through the same routine as I used in M_3_1_01. I put the origin point in the middle of the display window. Copy and paste the mesh four times. Ok… I have a large curtain now. Used the same light settings as I used in M_3_1_01. And writing everything away as a .pdf Which gives me a java.lang.ArrayindexOutOfBoundsException. So I write it to .png

I have introduced a global value called ModifyDistance. Which multiplies the value of a variable. This is not something new but it gives you the possibility to modify certain parts of the grid curtain. And what’s even more notable is that it gives you the possibility to make interesting compositions with it. I also found a way to break the curtain. Which might come in handy.

I’ve broken up another part of the curtain. This might be a good theme to continue.

So now it’s not alone about bending the grid but also about breaking the mesh.

Made all the loops the same. Which is of course a bit silly. But although this change is very simple it still gives me interesting images. Switched off all the strokes. Which gives even nicer images. The object has now changed from a curtain to a kind of windshield.

Used x + 2 for the z value. Which makes the windshield a bit more complex than the earlier version.

Used x / 2 for the z value.

Made a filled rectangle which is located horizontal. At least that is what I thought at that moment. But what I saw at a later stage is that it is not 1 rectangle but there are 16 rectangles located each above each other.

Used rotation for this sketch. Used ModifyDistance for the amount of radians.

I did not change much here. I only replaced the rotate command for rotateY in the for loops. And that makes a big difference for the images. Finally there is not much left from the grid. But it sure is bended and broken apart.