Bulging Sticks Grasshopper pattern: rows of vertical sticks crowding together along a curve

Bulging Sticks

Attractor curve stick pattern

Rows of thin sticks that crowd together near a curve and spread out away from it, so the panel appears to bulge along a line. The sticks keep the same width; only the spacing changes.


Price

Free

Plugins

None, native components only

Works with

Rhino 7 & 8, Mac and Windows

Level

Beginner

Inputs

Reference in Rhino

Surfaceinput Srf

The surface the pattern is built on. It must be a planar (flat) surface.

Reference in Rhino

Curveinput Crv

The line the bulge follows. It should cross the whole surface, in the direction of the sticks.

Main Sliders

SliderWhat it changesDefault
Divisions U / VThe number of rows of sticks. More rows means shorter sticks.1 / 20
Sticks DensityHow many sticks are packed into the bulge on each side of the curve.19
Attractor RangeHow far the bulge reaches along each row, on both sides of the curve, as a share of the row length.0.42
Rectangle WidthThe width of every stick. It stays the same everywhere; only the spacing changes.0.09

Also try: reshape the two Graph Mapper components to make the bulge sharper or softer.

Notes

  • Let the curve cross the whole surface, in the same direction as the sticks. A row the curve doesn’t cross won’t get a bulge.
  • The sticks never get thicker. Every stick has the same width; the bulge comes from the spacing alone.
  • Any curve shape works as long as it crosses each row once. A straight diagonal gives a clean bulge; a wavy curve makes it meander.
  • Balance Sticks Density and Rectangle Width. With a high density and wide sticks, the sticks near the curve merge into a solid band.

Design Logic

How the script builds the pattern. The groups on the canvas follow the same order.

StepHow the script does it
1. Split the surface into rowsDivide Surface makes a grid of points. Flip Matrix and Nurbs Curve join them into one curve per row, and Extend Curve lets each row run slightly past the edge.
2. Find where each row crosses your curveCurve | Curve returns the position of the crossing along each row. That’s the centre of the bulge.
3. Pack the sticks toward the crossingRange creates evenly spaced values. Construct Domain and Remap Numbers fit them into the stretch just before and just after the crossing, and a Graph Mapper on each side bends the spacing so the sticks crowd toward the curve.
4. Keep an even rhythm elsewhereSub Curve takes the rest of each row, where the sticks stay evenly spaced.
5. Turn the values into positionsEvaluate Curve places a point at every value. Includes and Cull Pattern remove any that fall outside their stretch.
6. Draw the sticksLine SDL draws a line from each point in the direction of the sticks. Extrude with Amplitude gives it its width, and Move centres it on the point.
7. Trim to the surfaceRegion Intersection keeps only what falls inside the surface.

Want to learn how to build scripts like this on your own? Check out the Grasshopper Pro course.

On this page

Free to use, also commercially

Use and change this script in your own projects, personal or commercial.

Please don't re-upload or redistribute the file. If you share it, link to this page so people always get the latest version.

© Hopific