def test_check_geometry_parameter(): """Test the check_geometry_parameter function of the validation module. """ valid_params = [ 2.0, -2.5, 3, 0, 350 ] expect_type_errors = [ "test", "3.4", "3", (1, 2), [1, 2] ] expect_value_errors = [ float("nan"), float("inf"), float("-inf") ] for param in valid_params: assert isinstance(validation.check_geometry_parameter(param), float) for param in expect_type_errors: with pytest.raises(TypeError): validation.check_geometry_parameter(param) for param in expect_value_errors: with pytest.raises(ValueError): validation.check_geometry_parameter(param)
def __init__(self, center_x, center_y, radius): """Circle2D constructor Args: center_x (float): The x coordinate of the circle center point center_y (float): The y coordinate of the circle center point radius (float): The radius of the circle """ self.center_x = check_geometry_parameter(center_x) self.center_y = check_geometry_parameter(center_y) self.radius = check_radius(radius)
def __init__(self, center_x, center_y, center_z, radius): """Sphere constructor Args: center_x (float): The x coordinate of the sphere center point center_y (float): The y coordinate of the sphere center point center_z (float): The z coordinate of the sphere center point radius (float): The radius of the sphere """ self.center_x = check_geometry_parameter(center_x) self.center_y = check_geometry_parameter(center_y) self.center_z = check_geometry_parameter(center_z) self.radius = check_radius(radius)
def scale_vector(vec, scale): """Multiply each vector element with the scale factor. Args: vec (tuple (float, float, float)): The vector that shall be scaled scale (float): The scale factor Returns: tuple (float, float, float): The scaled vector """ checked_vec = check_vector(vec) checked_scale = check_geometry_parameter(scale) return tuple([checked_scale * vec_elem for vec_elem in checked_vec])
def get_as_rotation_quaternion(axis, angle): """Convert an axis and an angle into a rotation quaternion. Args: axis (tuple (float, float, float)): A vector representing a rotation axis angle (float): The rotation angle (radiant) for a right-handed rotation Returns: tuple (float, float, float, float): The rotation quaternion defined as q = (w, qx, qy, qz) """ checked_axis = normalize_vector(check_direction_vector(axis)) checked_angle = check_geometry_parameter(angle) omega = 0.5 * checked_angle return (math.cos(omega), ) + tuple( [math.sin(omega) * vec_elem for vec_elem in checked_axis])
def __init__(self, normal_vec, d_origin, ref_point, radius): """Plane constructor Args: normal_vec (tuple (float, float, float)): The normal vector of the plane d_origin (float): The smallest distance of the plane from the origin ref_point (tuple (float, float, float)): The center point for the plane point creation radius radius (float): The plane point creation radius """ n_vec = check_direction_vector(normal_vec) self.normal_vec = normalize_vector(n_vec) self.d_origin = check_geometry_parameter(d_origin) self.radius = check_radius(radius) self.ref_point = check_vector(ref_point) if not math.isclose(calc_dot_product(self.normal_vec, self.ref_point) - self.d_origin, 0.0, abs_tol=0.000001): raise ValueError( """Invalid reference point. Expected the reference point to lie on the plane""")