Learn Grasshopper Through the Jitterbug

Master parametric design and physics simulation by building Buckminster Fuller's transforming geometry — the kinematic mechanism that connects the Vector Equilibrium to the Icosahedron to the Octahedron.

Module 0

Introduction: Why the Jitterbug?

Understanding why this geometry is the perfect teaching vehicle for Grasshopper and Kangaroo.

Core Philosophy

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.

Key Vocabulary
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
The Core Challenge

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.

Module 1

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!

Rhino 6 Note

Kangaroo 2 works excellently with Rhino 6. Some features may differ from Rhino 7/8, but all core constraint-solving functionality is available.

Module 2

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.

Input Component (does something)

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:

List Matching Modes
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:

  1. Place a Panel component
  2. Enter: 0,0,0 (a 3D coordinate)
  3. Connect it to a Construct Point
  4. You should see a point at the origin in Rhino
Module 3

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".

Critical Rule

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°
Resources

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

Reference

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