question: same result as calling #normalize after #cross vectorxyz , but avoids creating a temporary vector concode_field_sep VectorXYZ NULL_VECTOR concode_elem_sep double x concode_elem_sep double y concode_elem_sep VectorXYZ X_UNIT concode_elem_sep double z concode_elem_sep VectorXYZ Z_UNIT concode_elem_sep VectorXYZ Y_UNIT concode_field_sep VectorXZ xz concode_elem_sep VectorXYZ mult concode_elem_sep AxisAlignedBoundingBoxXZ getAxisAlignedBoundingBoxXZ concode_elem_sep double dot concode_elem_sep double distanceToXZ concode_elem_sep double distanceToXZ concode_elem_sep int hashCode concode_elem_sep VectorXYZ normalize concode_elem_sep VectorXYZ xyz concode_elem_sep VectorXYZ rotateX concode_elem_sep VectorXYZ rotateY concode_elem_sep VectorXYZ rotateZ concode_elem_sep VectorXYZ add concode_elem_sep VectorXYZ add concode_elem_sep VectorXYZ add concode_elem_sep double angleTo concode_elem_sep double lengthSquared concode_elem_sep VectorXYZ invert concode_elem_sep double distanceToSquared concode_elem_sep List<VectorXYZ> addYList concode_elem_sep VectorXYZ subtract concode_elem_sep VectorXYZ subtract concode_elem_sep double length concode_elem_sep VectorXYZ cross concode_elem_sep double distanceTo concode_elem_sep double getX concode_elem_sep double getY concode_elem_sep double getZ concode_elem_sep VectorXYZ addY concode_elem_sep boolean equals concode_elem_sep VectorXYZ x concode_elem_sep VectorXYZ y concode_elem_sep String toString concode_elem_sep VectorXYZ z concode_elem_sep VectorXYZ rotateVec concode_elem_sep VectorXYZ rotateVec
target: VectorXYZ function ( VectorXYZ arg0 ) { double loc0 = this . y * arg0 . loc2 - this . z * arg0 . loc1 ; double loc1 = this . z * arg0 . loc0 - this . x * arg0 . loc2 ; double loc2 = this . x * arg0 . loc1 - this . y * arg0 . loc0 ; double loc3 = sqrt ( loc0 * loc0 + loc1 * loc1 + loc2 * loc2 ) ; return new VectorXYZ ( loc0 / loc3 , loc1 / loc3 , loc2 / loc3 ) ; }