Example #1
0
def rotation_z(angle: float) -> Matrix:
    result = identity(4)
    result[0, 0] = math.cos(angle)
    result[0, 1] = -math.sin(angle)
    result[1, 0] = math.sin(angle)
    result[1, 1] = math.cos(angle)
    return result
Example #2
0
def shearing(x_y: float, x_z: float, y_x: float, y_z: float, z_x: float,
             z_y: float) -> Matrix:
    result = identity(4)
    result[0, 1] = x_y
    result[0, 2] = x_z
    result[1, 0] = y_x
    result[1, 2] = y_z
    result[2, 0] = z_x
    result[2, 1] = z_y
    return result
Example #3
0
def check_attribute(context, var, att, expected):
    if expected == "identity_matrix":
        exp = identity(4)  # type: Union[Matrix, float]
    elif is_number(expected):
        exp = float(expected)
    elif expected == "true":
        exp = True
    elif expected == "false":
        exp = False
    else:
        exp = context.variables[expected]

    my_variable = context.variables[var]
    if att == "count":
        assert len(my_variable) == exp
    elif isinstance(exp, float) or isinstance(exp, int):
        assert equals(exp, getattr(my_variable, att))
    else:
        assert getattr(my_variable, att) == exp, f"{getattr(my_variable, att)} == {exp}"
Example #4
0
def identity_pre(context, var):
    matrix = context.variables[var]
    identity_matrix = identity(matrix.num_rows)
    assert identity_matrix * matrix == matrix
Example #5
0
def check_equality(context, var_1, var_2):
    matrix_1 = context.variables[var_1]
    matrix_2 = identity(
        4) if var_2 == "identity_matrix" else context.variables[var_2]
    assert matrix_1 == matrix_2
Example #6
0
def assign_identity_transpose(context, var):
    identity_matrix = identity(4)
    context.variables[var] = transpose(identity_matrix)
    context.variables["identity_matrix"] = identity_matrix
Example #7
0
 def __init__(self) -> None:
     self.origin = point(0, 0, 0)
     self.radius = 1.0
     self.transform = identity(4)
     self.material = Material()
Example #8
0
def translation(x: float, y: float, z: float) -> Matrix:
    result = identity(4)
    result[0, 3] = x
    result[1, 3] = y
    result[2, 3] = z
    return result
Example #9
0
def scaling(x: float, y: float, z: float) -> Matrix:
    result = identity(4)
    result[0, 0] = x
    result[1, 1] = y
    result[2, 2] = z
    return result