Orienting Shapes: Get Your Axes In Gear

I once read a story about a husband and wife who went shopping for window fans. The husband found one with a switch mounted on the bottom that was very hard to get at. After he had started fuming about the poor design, his wife came along, took one look and turned the fan so the switch was right-side up. Problem solved. This is what kind of happened to me as I wrestled with the problem of making shapes move the way I expected them to when applying translation t( ) operations.

A basic explanation of the problem, illustrated in Figure 1: when I create starting shapes and apply rules to them, their x,y axes do not match those of the compass rose in the bottom left of the Viewport. When I translate a shape +2 units in the x-direction, I should expect it to move 2 units to the east; if I move it +2 on the z axis, I should expect it to move two units to the south… right? Not without understanding that every shape has its own x,y,z axes and that translate operations occur along these axes, however they are aligned (Figure 2).

Figure 1: Alignment of axes on drawn shapes will depend on whether you begin to draw the shape on the right or left sides (black dots indicate starting points). The Translate t( ) operation corresponds to the shape axes, not the compass rose. The “Inspect Model” button is highlighted. Click the button, then double-click your shape to see how its axes are aligned.

Figure 2: Translate operations occur along an individual shape’s axes, however they are aligned

I spent more than a few hours trying to rationalize the relationship of shape axes to the main Viewport axes. DUH. Just grab that window fan and turn it (Figure 3). Click on the Rotate Tool, then on the shape. Enter 0 90 0 with no commas in the entry window and hit ENTER. The shape axes have rotated on the y-axis and they now coincide with the Viewport Axes. If such precision is not needed, just use the Rotate Tool.

Figure 3: Using the Rotate Tool and Numerical Input to rotate the initial shape 90 degrees.

Why did I spend time on this? If I’m working on a city planning model and I apply a translate t( ) operation to a number of shapes, I want them to move in the direction I would expect, if that is somehow an issue.  If they are aligned to the Viewport axes, entering t(#,0,0) should move them east.

Why not simply use the rotate r( ) shape operation?  Because it’s not the same thing. While the translate t( ) operation will simply move the shape on its axes based on its origin (where the three axes come together) rotate( ) will tumble the shape along its axes, starting from the origin. As seen in Figue 4, you could both tumble the cube and then translate it from its origin.

Figure 4: The yellow cube is translated 2 units along its x- and z-axes. The cyan cube is rotated +20 degrees (clockwise) on its x-axis. The green cube is both translated and rotated.

Leave a Reply

Your email address will not be published. Required fields are marked *