DES 212 · Design Media II

Planes in Grasshopper

Planes are fundamental to parametric modeling because they define local coordinate systems. While a point defines a location and a vector defines a direction, a plane provides a full frame of reference: an origin combined with X, Y, and Z axes. This tutorial outlines the construction and application of planes as the basis for geometric orientation.

Use the same Rhino and Grasshopper files "Vectors and Planes" to follow along.

Referenced video tutorial (Optional)

1. What is a Plane?

A plane is a mathematical construct representing a flat, infinite surface. It is defined by an origin point and two vectors that establish its local X and Y axes. The Z-axis is always perpendicular to both X and Y. In Grasshopper, a plane is described as {P, X, Y}, where P is the origin point.

image.png

The Right-Hand Rule

The orientation of a plane follows the Right-Hand Rule. This rule determines the direction of the local Z-axis (the normal).

If you point your right thumb in the direction of the local X-axis and your index finger in the direction of the local Y-axis, your middle finger (pointing inward toward your palm) indicates the positive Z-axis. Understanding this is essential because flipping the order of points or vectors when creating a plane will invert the Z-axis, causing geometry like extrusions or offsets to move in the opposite direction.

image.png

 

2. World Planes

Grasshopper provides three default components that correspond to the global coordinate system:

  • XY Plane: The horizontal "ground" plane (Z=0).
  • XZ Plane: The vertical "front" plane (Y=0).
  • YZ Plane: The vertical "side" plane (X=0).

These are the most common starting points for creating grids, circles, or polygons.

image.png

3. How to Create a Plane

Beyond the world defaults, you can construct custom planes to align with specific design intentions.

Plane (Origin)

The simplest way to create a plane is to provide a new origin point. By default, this component creates an XY plane centered at that point. This is the standard method for translating the global coordinate system to a new location without changing its orientation.

image.png

Construct Plane

This is the most comprehensive method for building a plane from scratch. It requires an origin point, a vector for the X-axis, and a vector for the Y-axis. Grasshopper will automatically ensure the axes are perpendicular to each other to maintain a valid coordinate system.

image.png

Plane 3Pt

This component defines a plane based on three points:

  1. Origin (O): The center of the plane.
  2. Point A: Establishes the direction of the local X axis.
  3. Point B: Defines the plane's orientation in space, which determines the Y axis. This is essential for creating skewed or angled coordinate systems based on existing geometric vertices.

Plane Normal

The Plane Normal component requires an origin point and a Z axis vector. It is the most common way to make a plane "look" at something or follow a specific direction. For example, using a surface normal as the input vector will align the plane perfectly flat against that surface.

 

4. Extracting Planes/Frames from Geometry (Analogy to Vectors)

While basic division components extract tangents or normals as vectors, more advanced evaluation components extract full coordinate systems, often called "Frames", as planes.

Perp Frames (Curve)

The Perpendicular Frames (Perp Frames) component is analogous to the "Tangent" output of a Divide Curve component. While a tangent only gives you a direction, a Perp Frame gives you a full plane that is perpendicular to the curve at a specific point. This is the mandatory starting point for Sweep operations or creating cross-sections along a path.

Note: There are other components designed to retrieve frames from curves depending on the desired orientation. For instance, Horizontal Frames (HFrames) ensures the local X-axis remains parallel to the XY plane, which is vital for architectural elements like stair treads or railings. Additionally, Evaluate Curve can provide a frame at a specific curve parameter.

Surface Frames

When working with surfaces, the Divide Surface component primarily returns points and normal vectors. To obtain full coordinate systems, use the Surface Frames component, which generates planes across the surface grid. These frames align their local X and Y axes with the U and V iso-curves of the surface, while the Z axis remains consistent with the surface normal. This establishes a precise mapping for the orientation of components relative to the local curvature and flow of the surface.

Note: Similar to Evaluate Curve, the Evaluate Surface component provides a frame at a specific U,V coordinate.

image.png

image.png

5. What to use Planes for?

Planes are the required input for any component that needs more than just a location. Geometry like Circle, Rectangle, and Box all require a plane to determine their orientation in space. Without a custom plane, these components default to the World XY plane.

Orient

The Orient component is perhaps the most powerful application of planes. It re-maps geometry from a Source plane to a Target plane. By using extracted frames (like those from Perp Frames or Surface Frames) as target planes, you can accurately place complex geometry along curves or across surfaces, ensuring that the local orientation of the object matches the local coordinate system of the host geometry.

image.png

image.png