
lowerCamelCase__    :		Optional[Any]          =   tuple[float, float, float]
lowerCamelCase__    :		Union[str, Any]          =   tuple[float, float, float]

def 		UpperCamelCase	(      lowercase_ , lowercase_   )		->	Vectorad:


		'''simple docstring'''






		lowercase__  :   int    		=      end_pointa[0] - end_pointa[0]
		lowercase__  :   Tuple    		=      end_pointa[1] - end_pointa[1]
		lowercase__  :   Any    		=      end_pointa[2] - end_pointa[2]
		return (x, y, z)

def 		UpperCamelCase	(      lowercase_ , lowercase_   )		->	Vectorad:


		'''simple docstring'''






		lowercase__  :   Dict    		=      ab[1] * ac[2] - ab[2] * ac[1]  # *i
		lowercase__  :   Union[str, Any]    		=      (ab[0] * ac[2] - ab[2] * ac[0]) * -1  # *j
		lowercase__  :   Optional[Any]    		=      ab[0] * ac[1] - ab[1] * ac[0]  # *k
		return (x, y, z)

def 		UpperCamelCase	(      lowercase_ , lowercase_   )		->	bool:


		'''simple docstring'''






		return tuple(round(lowercase_ , lowercase_   ) for x in vector   ) == (0, 0, 0)



def 		UpperCamelCase	(      lowercase_ , lowercase_ , lowercase_ , lowercase_ = 10   )		->	bool:


		'''simple docstring'''






		lowercase__  :   Union[str, Any]    		=      create_vector(lowercase_ , lowercase_   )
		lowercase__  :   Union[str, Any]    		=      create_vector(lowercase_ , lowercase_   )
		return is_zero_vector(get_ad_vectors_cross(lowercase_ , lowercase_   ) , lowercase_   )








from abc import ABC, abstractmethod
from argparse import ArgumentParser



class       _snake_case   (	UpperCAmelCase_							):


 @staticmethod
 @abstractmethod
 def      lowercase__     (					SCREAMING_SNAKE_CASE_):


   '''simple docstring'''




   raise NotImplementedError()



 @abstractmethod
 def      lowercase__     (					self):


   '''simple docstring'''




   raise NotImplementedError()






