Introduction: Why the Jitterbug?
Understanding why this geometry is the perfect teaching vehicle for Grasshopper and Kangaroo.
The Jitterbug is not just a geometry ā it's a kinematic mechanism. By learning to model it correctly, you'll master the fundamental skills that separate parametric tinkering from true computational design.
What is the Jitterbug?
Discovered by Buckminster Fuller, the Jitterbug is a transforming polyhedron that demonstrates the relationship between several Platonic and Archimedean solids. It's a mechanism made of 24 rigid bars of equal length connected at 12 joints.
| Edge Length | 6 inches ā CONSTANT throughout all transformations |
| Triangular Faces (8) | STRUCTURAL ā rigid, angles stay 60° |
| Square/Rhombus Faces (6) | MOBILE ā angles change from 90° to 60° to 0° |
| Vertices | 12 joints that can rotate freely |
The Three States
| State | Rhombus Angle | Description |
|---|---|---|
| Vector Equilibrium | 90° / 90° | Cuboctahedron ā rhombi are squares |
| Icosahedron | 60° / 120° | Short diagonal = edge length |
| Octahedron | 0° / 180° | Rhombi fully collapsed |
Why This Teaches Grasshopper Well
The Jitterbug requires you to understand:
- Data structures ā managing 12 points, 24 edges, 14 faces
- Topology ā which vertices connect to which
- Constraints ā maintaining fixed edge lengths
- Physics simulation ā using Kangaroo to solve mechanisms
- Parametric thinking ā driving geometry with parameters
Most parametric models scale or deform geometry. The Jitterbug requires constant edge lengths while angles change. This is a constrained kinematic problem ā and Kangaroo is the perfect tool to solve it.
Setup & Installation
Preparing your Rhino 6 environment with Grasshopper and Kangaroo 2.
Requirements
| Rhino | Version 6 or later |
| Grasshopper | Built into Rhino 6+ |
| Kangaroo 2 | Physics engine for constraints |
Installation Steps
Open Rhino 6
Launch Rhinoceros 6. Grasshopper is included by default.
Launch Grasshopper
Type Grasshopper in the Rhino command line and press Enter. The Grasshopper window will open.
Install Kangaroo 2
In Grasshopper, go to File ā Special Folders ā Components Folder. Download Kangaroo 2 from Food4Rhino and place the files in this folder. Restart Rhino.
Verify Installation
After restarting, you should see a Kangaroo2 tab in Grasshopper. If you see it, you're ready!
Kangaroo 2 works excellently with Rhino 6. Some features may differ from Rhino 7/8, but all core constraint-solving functionality is available.
Grasshopper Basics
The fundamental concepts you need before building the Jitterbug.
The Canvas
Grasshopper is a visual programming environment. Instead of writing code line by line, you connect components (nodes) with wires.
Data flows left to right through connected components
Essential Components
For the Jitterbug, you'll use these core components:
| Component | Tab | Purpose |
|---|---|---|
Point |
Params ā Geometry | Store point coordinates |
Line |
Curve ā Primitive | Create edges between points |
Construct Point |
Vector ā Point | Create point from X, Y, Z |
List Item |
Sets ā List | Get specific item from list |
Number Slider |
Params ā Input | Interactive parameter control |
Panel |
Params ā Input | Display data / enter values |
Data Matching
Grasshopper processes lists of data. Understanding how lists combine is crucial:
| Shortest | Stops when shortest list ends |
| Longest | Repeats last item of shorter list |
| Cross Reference | Every combination (AĆB) |
Exercise: Create 12 Points
Before moving on, try this:
- Place a
Panelcomponent - Enter:
0,0,0(a 3D coordinate) - Connect it to a
Construct Point - You should see a point at the origin in Rhino
Jitterbug Geometry
Understanding the topology before we build it.
The 12 Vertices
The cuboctahedron (Vector Equilibrium) has 12 vertices. In a coordinate system with edge length 6", these are permutations of (±a, ±a, 0) where a = 6/ā2 ā 4.243.
# Vertex coordinates (edge length = 6")
a = 4.242640687 # 6 / sqrt(2)
V0 = ( a, a, 0)
V1 = ( a, -a, 0)
V2 = (-a, a, 0)
V3 = (-a, -a, 0)
V4 = ( a, 0, a)
V5 = ( a, 0, -a)
V6 = (-a, 0, a)
V7 = (-a, 0, -a)
V8 = ( 0, a, a)
V9 = ( 0, a, -a)
V10 = ( 0, -a, a)
V11 = ( 0, -a, -a)
The 24 Edges
Each edge connects two vertices. The edge length is always 6".
Every edge in the Jitterbug is exactly 6 inches. This never changes. When Kangaroo solves the mechanism, it maintains these constraints.
Edge Classification
| Type | Colour | Count | Behaviour |
|---|---|---|---|
| Triangle Edges | Teal | 24 | Form rigid triangular faces |
| Rhombus Edges | Orange | 24 | Form mobile rhombus faces |
Note: Each edge belongs to both a triangle AND a rhombus, totalling 24 unique edges.
The 14 Faces
| Face Type | Count | Colour | Behaviour |
|---|---|---|---|
| Triangular | 8 | Blue (25% opacity) | STRUCTURAL ā rigid, stay equilateral |
| Square/Rhombus | 6 | Orange (25% opacity) | MOBILE ā angles change 90°ā60°ā0° |
Downloads
Grasshopper definitions and Python scripts for the Jitterbug.
Jitterbug_Complete.gh
Complete Grasshopper definition with Kangaroo solver
Jitterbug_Topology.gh
Module 4: Building the vertex/edge/face topology
Jitterbug_GHPython.py
Python script for GHPython component
Jitterbug_Dynamo_Complete.py
Basic Dynamo Python script
Jitterbug_Dynamo_Full.py
Full script with vertices, edges, faces, axes ā colour-coded outputs
Jitterbug_Kinematic.py
Kinematic transformation with constraints ā pipes for edges, rotation slider
jitterbug_vertices.csv
Vertex coordinates for VE state (6" edges)
Revit Family Guide (Manual vs Dynamo)
Comprehensive guide: pure Revit or hybrid Dynamo automation
Jitterbug_FamilyAutomation.py
Dynamo script ā automates parameter and type creation in Family Editor
Jitterbug_Positions.csv
Pre-computed vertex coordinates for 10 transformation states
Jitterbug_Fast.py
Optimised Dynamo script for live transformation preview
Glossary
Key terms and their definitions.
| Vector Equilibrium (VE) | Fuller's name for the cuboctahedron ā the state where rhombus faces are squares (90°) |
| Jitterbug | The kinematic transformation between VE, Icosahedron, and Octahedron |
| Rhombus | A quadrilateral with all four sides equal length. A square is a special rhombus with 90° angles. |
| Kinematic Mechanism | A system of rigid bodies connected by joints, where motion is determined by constraints |
| Constraint | A rule that must be maintained (e.g., "this edge must be 6 inches") |
| Kangaroo | Physics engine for Grasshopper that solves constraint systems |
| STRUCTURAL | In the Jitterbug, refers to triangular faces that remain rigid |
| MOBILE | In the Jitterbug, refers to square/rhombus faces whose angles change |
| Axis A/B/C/D | The four axes passing through centres of opposite triangular faces |