The idea came from flowing water image in my mind. I thought why not use that completely wild and organic form which we see everyday as our architectural environment. From this point I decided to interpret this idea as a pavilion or a part of interior design.

### A. Creating curved surface as the base geometry.

**Sine**curve is created in Y and Z direction by using**range**of points.

- The curve is flipped by using
**mirror**component and**moved**to X direction.

- Both sine curves are
**divided**to the same number of segments and the points are connected by using**line**. Then A loft is created from lines which is converted to the mesh (**mesh UV**component). The geometry is softened up by using**wbCatmullClark**.

### B. Manipulating points on surface.

- Creating a bunch of points on the surface by using populate geometry.

- Creating a sphere in Rhino and set it as Brep in grasshopper. To keep only those points which are inside the sphere we must use
**Point in Brep**component which eliminates all the points which are outside the sphere.

- Next step is
**Anemone**library – moving the points by using the**Loop start**and**Loop end**. Then, to make the points move on the wavy surface and do not detach from it while moving,**Mesh closest point**component is used. Now all the moved points will always find the closest point on the mesh and snap to it.

- Then we need the direction for the points to start moving. For that I use
**Random vector**component to generate random directions. - For behavior of these points as they are moving, I am using
**Boid**library:

** Ahere to the flock center **component – every point in the flock will try to stay close to a flock center.

** Repulse from the flock **component – if it gets too crowded, the points will try to do social distancing/move away from each other.

** Align to the flock members **component – every point will try to align itself with other points, meaning, if all the points are flying to the left, that single point will also try to steer itself to the left.

Finally, I add values to these components and use addition to add the vectors up.

- The last part is to create a driving force – wind.

Firstly, creating a **Vector XYZ** and using **Rotate vector** to rotate the vector by giving the angle value to X direction. This means that the points now will move the direction which is given by the angle of the vector.

Finally, **Addition **is used again to add this wind vector to all the other vectors.

### C. Creating lines and giving thickness to the geometry.

After we already have the points which are moving on the surface, we need to create lines from those points and record the movement to get the geometry.

- The recorded points are flipped and converted to polylines.

- To convert these polylines to a volume I use
**Curve to volume.**After the radius and volume settings are added we end up with a shape with thickness.

### D. FINAL SCRIPT:

### E. DIFFERENT APPROACH

This is a simple additional script to show another approach of points movement and create different geometry.

Grasshopper file: flowing cave_Monika Markauskaite

Anemone: https://www.food4rhino.com/app/anemone

Boid: https://www.food4rhino.com/app/boid-library

p.s. I tried working with Culebra library as well, but seems it will need more research and time to start actually using it.