<s> from pi3d . util . Utility import from_polar <EOL> import numpy as np <EOL> """<STR_LIT>""" <EOL> def rotate_vec ( rx , ry , rz , xyz ) : <EOL> if isinstance ( xyz , np . ndarray ) and len ( xyz . shape ) > <NUM_LIT:1> : <EOL> return _rotate_vec_numpy ( rx , ry , rz , xyz ) <EOL> else : <EOL> return _rotate_vec_normal ( rx , ry , rz , xyz ) <EOL> def _rotate_vec_normal ( rx , ry , rz , xyz ) : <EOL> x , y , z = xyz <EOL> if ry : <EOL> ca , sa = from_polar ( ry ) <EOL> zz = z * ca - x * sa <EOL> x = z * sa + x * ca <EOL> z = zz <EOL> if rx : <EOL> ca , sa = from_polar ( rx ) <EOL> yy = y * ca - z * sa <EOL> z = y * sa + z * ca <EOL> y = yy <EOL> if rz : <EOL> ca , sa = from_polar ( rz ) <EOL> xx = x * ca - y * sa <EOL> y = x * sa + y * ca <EOL> x = xx <EOL> return x , y , z <EOL> def _rotate_vec_numpy ( rx , ry , rz , xyz ) : <EOL> if ry : <EOL> ca , sa = from_polar ( ry ) <EOL> zz = xyz [ : , <NUM_LIT:2> ] * ca - xyz [ : , <NUM_LIT:0> ] * sa <EOL> xyz [ : , <NUM_LIT:0> ] = xyz [ : , <NUM_LIT:2> ] * sa + xyz [ : , <NUM_LIT:0> ] * ca <EOL> xyz [ : , <NUM_LIT:2> ] = zz <EOL> if rx : <EOL> ca , sa = from_polar ( rx ) <EOL> yy = xyz [ : , <NUM_LIT:1> ] * ca - xyz [ : , <NUM_LIT:2> ] * sa <EOL> xyz [ : , <NUM_LIT:2> ] = xyz [ : , <NUM_LIT:1> ] * sa + xyz [ : , <NUM_LIT:2> ] * ca <EOL> xyz [ : , <NUM_LIT:1> ] = yy <EOL> if rz : <EOL> ca , sa = from_polar ( rz ) <EOL> xx = xyz [ : , <NUM_LIT:0> ] * ca - xyz [ : , <NUM_LIT:1> ] * sa <EOL> xyz [ : , <NUM_LIT:1> ] = xyz [ : , <NUM_LIT:0> ] * sa + xyz [ : , <NUM_LIT:1> ] * ca <EOL> xyz [ : , <NUM_LIT:0> ] = xx <EOL> return xyz </s>
