Vasarely Redux & Resolved

This posting showed various approaches for creating an image that was similar to paintings by the artist Vasarely. All of the images used a surface initially created in Rhino. When I tried to use a similarly shaped surface created in GH I was unable to get comparable results.

H S Kim was able to explain why this was the case: the Rhino surface had a Cartesian coordinate system, but the GH surface I created had a polar coordinate system. As a result the SrfMap function, which is the key to the entire process, behaved differently with the 2 surfaces.

Fortunately for me this posting appeared shortly later and it showed how to make a similarly shaped surface in GH that had a Cartesian coordinate system. So I incorporated that method into my GH script, tweaked the parameters a bit (actually a pretty big bit) and produced this surface:

Using this one I was able to properly map an array of circles onto it and then use SrfSplit to get this:

A thing of beauty is it not? But then I also got this:

And of course this:

Interestingly enough the top view of this exact same geometry looks like this:

Things I have yet to figure out are

  1. Why, in the top view, the circles still look like circles, even though the image shading clearly shows the 3D-ness of the geometry.
  2. Why the orange circle at the center looks flat and lacks the 3D curvature of the base surface’s rounded point.
  3. Why the circles around the outside perimeter are much more distorted than they should be.

I’m going to try some alternate shapes for the cutouts (ellipses and stars) to see what they will show. I’m also going to try to understand how the formula that generates the surface (z * sin(pi * y * x) * exp(u * x)) works.

Many thanks to everyone who contributed to this; it has been a great learning experience for me.

1 Like

Heh, heh, it looks exactly like the same issue we wrestled with and solved in the other thread:

Why a new thread? And how about posting some code?

1 Like

Why the circles around the outside perimeter are much more distorted than they should be.

Because you are using uv’s. Turn on the control points of any surface to understand your distortion, look how spacing differs at surface edges. I still don’t get why you would make this 2d effect via a 3d surface (even in the past post) when you can do it mathematically in 2d via vectors.

Joseph - You are correct; it is the same issue that you previously posted. I looked at what you did and was about ready to make use of your solution when I found the one HS Kim posted. That one was much simpler in terms of the GH components involved, and it also allowed for multiple waves in the generated surface. Frankly I couldn’t figure out how to get that same kind of result from the solution you posted.

I opted for a new thread because the original one is fairly long and I needed to reference it and the one who’s code I actually used. It just seemed cleaner to make a new one.

I do plan on posting my code, but right now it’s a mess because it’s got a bunch of parts that don’t work right and never will. I’ll be cleaning it up and (hopefully) improving it over the next few days.

Michael - it seems I really am missing something about how surfaces are defined. I used the GH CP (Control Points) object to show the control points of my surface (really HS KIM’s) and for the one Joseph generated. The top view of each is the same - a square of evenly spaced points.

I also used the GH Iso component to show the ISO curves of each, and in each case the curves are parallel straight lines when viewed from the top.

It is clear to me that the 2 surfaces have different characteristics in terms of how the surface is stretched/formed over it’s areas of 3D curvature. I think this has to do with the fact that Joseph’s surface is made using pDeform (in a way I have yet to understand) and MapSrf,whereas the one HS Kim provided uses SrfGrid to make a surface based on a set of pre-calculated points that are in a rectanglular grid configuration.

Attach your surface.

About using vectors, you can see the example I put on the other discussion: Attractor on Grasshopper (Vasarely like)

and if you want to use graphs check out atträctor

I am very well acquainted with using multiple waves to generate a surface (“ripplies”):

Displacement of grid points is purely in the Z direction, unlike the other Vasarely thread where points are spread apart radially. I’m not even sure that what you are doing here is “Vasarely” if the goal is to have all the circles appear identical in size from the top view? Simple Project will work for that.

Without seeing some code or geometry from you, I’m hesitant to comment any further.

The key to resolving the same issue you are having now, though, was to rebuild the surface with ‘Degree = 3’, creating a “grid” of control points that are not evenly spaced but closer together at the edges. Manipulating those control points instead of evenly spaced grid points solved the same problem for me. More detail in the other thread. (Maybe too much?) (14.0 KB)

I have attached the GH file I used to make my original posting in this thread. Please note the following:

1.The Cutouts group makes either stars or ellipses/circles. As it stands it makes only circles. Stars take a very long time to compute.
2. The whole process breaks if any of the cutouts extend over the edge of the surface. I’ve tried to use BBox to control this, but I’m not sure I’ve done it properly.
3. The Wavy group is very sensitive to the values of the y, z, and u settings.
4. The Rhino group contains the original single-hump surface created in Rhino.
5. The Revolution group is the way I had hoped to create the surface, because this allows the simplest way to control the basic shape. I realize now this method will never work correctly.

Obviously I’ve got a long way to go on understanding what is the best approach for this concept. I will definitely take a look at Joseph’s latest update and see if I can incorporate it into what I’ve done so far. (90.8 KB)

I’m sorry @Birk_Binnard, I’m not going to be able to follow this in R6, and frankly, pretty much covered the subject in the other thread.


“latest update”? What I posted above is not an update, just a simple example of the effect of rebuild surface on control points. It looks to me like you could Project your circles onto the wavy surface, use SrfSplit to cut holes and call it done?