Пример #1
0
    def get_number_mobject(self, x,
                           direction=None,
                           buff=None,
                           scale_val=None,
                           # number_config=None,
                           **number_config):
        number_config = merge_dicts_recursively(
            self.decimal_number_config,
            number_config or {},
        )
        if scale_val is None:
            scale_val = self.number_scale_val
        if direction is None:
            direction = self.line_to_number_direction
            #direction = self.label_direction
        if buff is None:
            buff = self.line_to_number_buff
        #buff = buff or self.line_to_number_buff

        num_mob = DecimalNumber(x, **number_config)
        num_mob.scale(scale_val)
        num_mob.next_to(
            self.number_to_point(x),
            direction=direction,
            buff=buff
        )
        if x < 0 and self.line_to_number_direction[0] == 0:
            # Align without the minus sign
            num_mob.shift(num_mob[0].get_width() * LEFT / 2)
        return num_mob
Пример #2
0
    def get_number_mobject(
            self,
            number,  # input number should be a origin_x
            number_config=None,
            scale_val=None,
            direction=None,
            buff=None,
            number_is_origin_x=True):
        number_config = merge_dicts_recursively(
            self.decimal_number_config,
            number_config or {},
        )
        if scale_val is None:
            scale_val = self.number_scale_val
        if direction is None:
            direction = self.label_direction
        buff = buff or self.line_to_number_buff

        num_mob = DecimalNumber(self.log_factor * (self.log_base**(number)),
                                **number_config)
        num_mob.scale(scale_val)
        num_mob.next_to(self.number_to_point(number, number_is_origin_x),
                        direction=direction,
                        buff=buff)
        return num_mob
Пример #3
0
    def get_number_mobject(
        self,
        x: float,
        direction: np.ndarray | None = None,
        buff: float | None = None,
        **number_config
    ) -> DecimalNumber:
        number_config = merge_dicts_recursively(
            self.decimal_number_config, number_config
        )
        if direction is None:
            direction = self.line_to_number_direction
        if buff is None:
            buff = self.line_to_number_buff

        num_mob = DecimalNumber(x, **number_config)
        num_mob.next_to(
            self.number_to_point(x),
            direction=direction,
            buff=buff
        )
        if x < 0 and direction[0] == 0:
            # Align without the minus sign
            num_mob.shift(num_mob[0].get_width() * LEFT / 2)
        return num_mob
Пример #4
0
 def create_axis(self, range_terms: Sequence[float], axis_config: dict[str],
                 length: float) -> NumberLine:
     new_config = merge_dicts_recursively(self.axis_config, axis_config)
     new_config["width"] = length
     axis = NumberLine(range_terms, **new_config)
     axis.shift(-axis.n2p(0))
     return axis
 def create_axis(self, min_val, max_val, axis_config):
     new_config = merge_dicts_recursively(
         self.axis_config,
         {"x_min": min_val, "x_max": max_val},
         axis_config,
     )
     return NumberLine(**new_config)
Пример #6
0
 def __init__(self, **kwargs):
     digest_config(self, kwargs)
     if self.camera_config["pixel_width"] == PRODUCTION_QUALITY_CAMERA_CONFIG["pixel_width"]:
         config = {}
     else:
         config = self.low_quality_config
     config = merge_dicts_recursively(config, kwargs)
     ThreeDScene.__init__(self, **config)
Пример #7
0
 def __init__(self, **kwargs):
     digest_config(self, kwargs)
     if self.camera_config["pixel_width"] == PRODUCTION_QUALITY_CAMERA_CONFIG["pixel_width"]:
         config = {}
     else:
         config = self.low_quality_config
     config = merge_dicts_recursively(config, kwargs)
     ThreeDScene.__init__(self, **config)
 def create_axis(self, *args):
     if args[2] is not None and not isinstance(args[2], (int, float)):
         min_val, max_val, axis_config = args
         new_config = merge_dicts_recursively(
             self.number_line_config,
             {
                 "x_min": min_val,
                 "x_max": max_val
             },
             axis_config,
         )
         return NumberLine(**new_config)
     else:
         range_terms, axis_config, length = args
         new_config = merge_dicts_recursively(self.axis_config, axis_config)
         new_config["width"] = length
         axis = NumberLine(range_terms, **new_config)
         axis.shift(-axis.n2p(0))
         return axis
Пример #9
0
 def __init__(self, **kwargs):
     digest_config(self, kwargs)
     self.low_quality_config = vars(self)['low_quality_config']
     self.three_d_axes_config = vars(self)['three_d_axes_config']
     self.cut_axes_at_radius = vars(self)['cut_axes_at_radius']
     self.sphere_config = vars(self)['sphere_config']
     self.default_angled_camera_position = vars(
         self)['default_angled_camera_position']
     if self.camera_config[
             "pixel_width"] == PRODUCTION_QUALITY_CAMERA_CONFIG[
                 "pixel_width"]:
         config = {}
     else:
         config = self.low_quality_config
     config = merge_dicts_recursively(config, kwargs)
     ThreeDScene.__init__(self, **config)
Пример #10
0
    def get_vector(self, coords, **kwargs):
        vector_config = merge_dicts_recursively(self.vector_config, kwargs)

        output = np.array(self.func(*coords))
        norm = get_norm(output)
        if norm > 0:
            output *= self.length_func(norm) / norm

        origin = self.coordinate_system.get_origin()
        _input = self.coordinate_system.c2p(*coords)
        _output = self.coordinate_system.c2p(*output)

        vect = Arrow(origin, _output, buff=0, **vector_config)
        vect.shift(_input - origin)
        vect.set_rgba_array([[*self.value_to_rgb(norm), self.opacity]])
        return vect
Пример #11
0
 def get_sphere(self, **kwargs):
     """
     Returns a sphere with the passed **kwargs
     as properties.
     Parameters
     ----------
     **kwargs
         Some valid kwargs are:
             Any param of a Sphere or ParametricSurface.
     
     Returns
     -------
     Sphere
         The sphere object.
     """
     config = merge_dicts_recursively(self.sphere_config, kwargs)
     return Sphere(**config)
Пример #12
0
def get_custom_defaults():
    filename = "custom_defaults.yml"
    manim_defaults_file = os.path.join(get_manim_dir(), filename)
    with open(manim_defaults_file, "r") as file:
        custom_defaults = yaml.safe_load(file)

    # See if there's a custom_defaults file in current directory,
    # and if so, it further updates the defaults based on it.
    if os.path.exists(filename):
        with open(filename, "r") as file:
            local_defaults = yaml.safe_load(file)
        if local_defaults:
            custom_defaults = merge_dicts_recursively(
                custom_defaults,
                local_defaults,
            )

    return custom_defaults
    def get_coordinate_labels(self, *numbers, **kwargs):
        if len(numbers) == 0:
            numbers = self.get_default_coordinate_values()

        self.coordinate_labels = VGroup()
        for number in numbers:
            z = complex(number)
            if abs(z.imag) > abs(z.real):
                axis = self.get_y_axis()
                value = z.imag
                kwargs = merge_dicts_recursively(
                    kwargs,
                    {"number_config": {"unit": "i"}},
                )
            else:
                axis = self.get_x_axis()
                value = z.real
            number_mob = axis.get_number_mobject(value, **kwargs)
            self.coordinate_labels.add(number_mob)
        return self.coordinate_labels
Пример #14
0
    def get_number_mobject(self,
                           number,
                           number_config=None,
                           scale_val=None,
                           direction=None,
                           buff=None):
        number_config = merge_dicts_recursively(
            self.decimal_number_config,
            number_config or {},
        )
        scale_val = scale_val or self.number_scale_val
        direction = direction or self.label_direction
        buff = buff or self.line_to_number_buff

        num_mob = DecimalNumber(number, **number_config)
        num_mob.scale(scale_val)
        num_mob.next_to(self.number_to_point(number),
                        direction=direction,
                        buff=buff)
        return num_mob
Пример #15
0
def get_custom_config():
    filename = "custom_config.yml"
    global_defaults_file = os.path.join(get_manim_dir(), "manimlib",
                                        "default_config.yml")

    if os.path.exists(global_defaults_file):
        with open(global_defaults_file, "r") as file:
            config = yaml.safe_load(file)

        if os.path.exists(filename):
            with open(filename, "r") as file:
                local_defaults = yaml.safe_load(file)
            if local_defaults:
                config = merge_dicts_recursively(
                    config,
                    local_defaults,
                )
    else:
        with open(filename, "r") as file:
            config = yaml.safe_load(file)

    return config
Пример #16
0
    def get_number_mobject(self, number,
                           number_config=None,
                           scale_val=None,
                           direction=None,
                           buff=None):
        number_config = merge_dicts_recursively(
            self.decimal_number_config,
            number_config or {},
        )
        if scale_val is None:
            scale_val = self.number_scale_val
        if direction is None:
            direction = self.label_direction
        buff = buff or self.line_to_number_buff

        num_mob = DecimalNumber(number, **number_config)
        num_mob.scale(scale_val)
        num_mob.next_to(
            self.number_to_point(number),
            direction=direction,
            buff=buff
        )
        return num_mob
 def create_axis(self, range_terms, axis_config, length):
     new_config = merge_dicts_recursively(self.axis_config, axis_config)
     new_config["width"] = length
     axis = NumberLine(range_terms, **new_config)
     axis.shift(-axis.n2p(0))
     return axis
Пример #18
0
 def get_sphere(self, **kwargs):
     config = merge_dicts_recursively(self.sphere_config, kwargs)
     return Sphere(**config)
Пример #19
0
 def get_sphere(self, **kwargs):
     config = merge_dicts_recursively(self.sphere_config, kwargs)
     return Sphere(**config)