public static Vector OrthogonalVector( Vector Normal ) { Vector temp; switch ( Normal.ShortestAxis() ) { case Vector.Axis.X: temp = new Vector( 1.0f, 0.0f, 0.0f ); break; case Vector.Axis.Y: temp = new Vector( 0.0f, 1.0f, 0.0f ); break; default: // Vector.Axis.Z temp = new Vector( 0.0f, 0.0f, 1.0f ); break; } return Vector.CrossProduct( Normal, temp ).Normalize(); }