Rhino Coordinates System and Right Hand Rule

Rhino uses a right-handed coordinate system, with Z-axis pointing up. The axis arrangement respects the right-hand rule, which can also be used to find Z axis direction given X and Y: put your right-hand index along X, your middle finger along Y, and your thumb will tell you the direction of the Z axis.


Orientation Principles

Placing an object in space requires not only its location (as XYZ coordinates) but also information about its orientation (for example, 3 rotations); all of the required information can be condensed into an Orientation Plane, or Reference Plane; in other terms, a coordinates systems. Imagine having an object attached to the palm of your hand, with your hand in an horizontal position, palm up: your hand is the XY Plane, with the Z axis pointing out of the palm. To move the object around you have to move your hand in a different position and orientation. This operation coincides with the definition of a destination Plane. A transformation that moves an object from one plane to another is called an Orient Transformation.

Orient transformation, from a horizontal to vertical plane

Orient transformation, from a horizontal to vertical plane


Connection principles

In case we want to assemble 2 objects together, we cannot simply match their reference planes with Orient: it would be the equivalent of holding both objects in the palm of your hand, sharing the same space (which is digitally allowed, but violates certain laws of physics....). In this case the planes need to face or "kiss" each other: they share the same origin point but their Z axes point in opposing directions.

Connection (left) vs Orientation (right) using the same couple of planes

Connection (left) vs Orientation (right) using the same couple of planes


Senders and Receivers

When connecting 2 objects together, picture one of them as fixed and the other being moved into a specific position in contact with the fixed one, much akin to a plug-and-socket situation.

By Assembler convention, the “fixed” object is called receiver (the one that “receives” the other object) and the one being moved in sender (the one being “sent”); their respective Handles inherit the same role qualifications (sender Handle, receiver Handle).

Sender and receiver are roles, not types: any AssemblyObject or Handle can act like a sender or receiver according to the role it plays in that moment. When adding an object to an Assemblage, that object acts as a sender, and from the next iteration onward the same object can only act as a receiver for any new object.

In order for an object to enact both parts (sender and receiver), any of its Handles must be able to send and receive. Thus, Handles have both sender and receiver planes.

Given a sender plane, the corresponding receiver plane with 0° rotation is obtained by rotating the sender 180° around its Y-axis, in order to have opposing Z-axis directions.