Version: Rhino 4.0
Summary: Demonstrates how to rotate a plane so it's x-axis is parallel to the world using RhinoScript.
I want to rotate a plane (definition, not a planar surface) about it's z-axis until it's x-axis is parallel with the world xy-plane. Is this possible?
The following sample function will do this.
Note, RhinoScript represents planes as zero-based, one-dimensional arrays containing four elements: the plane's origin (3-D point), the plane's x-axis direction (3-D vector), the plane's y-axis direction (3-D vector), and the plane's z-axis direction (3-D vector). See the RhinoScript help file for more details.
Option Explicit '------------------------------------------------------------------------------ ' Subroutine: XParallelPlane ' Purpose: Rotate a plane about it's z-axis so that it's x-axis is parallel with the world xy-plane. ' Parameters: ' plane - A valid plane to rotate ' dir - Direction (True = positive, False = negative) ' Returns: ' A valid plane if successful, Null otherwise. '------------------------------------------------------------------------------ Function XParallelPlane(plane, dir) Dim xaxis, yaxis, zaxis XParallelPlane = Null 'default return value zaxis = Rhino.VectorUnitize(plane(3)) If (dir = True) Then xaxis = Rhino.VectorUnitize(Array(zaxis(1), -zaxis(0), 0.0)) Else xaxis = Rhino.VectorUnitize(Array(-zaxis(0), zaxis(1), 0.0)) End If yaxis = Rhino.VectorCrossProduct(zaxis, xaxis) If IsArray(yaxis) Then yaxis = Rhino.VectorUnitize(yaxis) XParallelPlane = Rhino.PlaneFromFrame(plane(0), xaxis, yaxis) End If End Function