<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">Fade</span></code> as the parent class of <codeclass="docutils literal notranslate"><spanclass="pre">FadeIn</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">FadeOut</span></code></p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">FadeIn</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">FadeOut</span></code> can be passed in <codeclass="docutils literal notranslate"><spanclass="pre">shift</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">scale</span></code> parameters</p></li>
<li><p>Deleted <codeclass="docutils literal notranslate"><spanclass="pre">FadeInFrom,</span><spanclass="pre">FadeInFromDown,</span><spanclass="pre">FadeOutAndShift,</span><spanclass="pre">FadeOutAndShiftDown,</span><spanclass="pre">FadeInFromLarge</span></code>, these can be used <codeclass="docutils literal notranslate"><spanclass="pre">FadeIn,</span><spanclass="pre">FadeOut</span></code> to achieve the same effect more easily</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">FadeTransform</span></code> to cross fade between two objects, and subclass <codeclass="docutils literal notranslate"><spanclass="pre">FadeTransformPieces</span></code></p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">CountInFrom(decimal_mob,</span><spanclass="pre">source_number=0)</span></code> to count <codeclass="docutils literal notranslate"><spanclass="pre">decimal_mob</span></code> from <codeclass="docutils literal notranslate"><spanclass="pre">source_number</span></code> to the current value</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">Rotating</span></code> can directly pass in <codeclass="docutils literal notranslate"><spanclass="pre">angle</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">axis</span></code> without writing keywords <codeclass="docutils literal notranslate"><spanclass="pre">angle=,</span><spanclass="pre">axis=</span></code></p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">Rotate</span></code> has become a subclass of <codeclass="docutils literal notranslate"><spanclass="pre">Rotating</span></code>, and the distortion effect in <codeclass="docutils literal notranslate"><spanclass="pre">Transform</span></code> will not appear</p></li>
<li><p>Removed all camera classes except <codeclass="docutils literal notranslate"><spanclass="pre">Camera</span></code> (<codeclass="docutils literal notranslate"><spanclass="pre">MappingCamera</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">MovingCamera</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">MultiCamera</span></code>) and all functions in <codeclass="docutils literal notranslate"><spanclass="pre">ThreeDCamera</span></code></p></li>
<li><p>Implemented <codeclass="docutils literal notranslate"><spanclass="pre">CameraFrame</span></code> (as a <codeclass="docutils literal notranslate"><spanclass="pre">Mobject</span></code>)</p>
<ul>
<li><p>Can be called by <codeclass="docutils literal notranslate"><spanclass="pre">self.camera.frame</span></code> in <codeclass="docutils literal notranslate"><spanclass="pre">Scene</span></code></p></li>
<li><p>All methods of <codeclass="docutils literal notranslate"><spanclass="pre">Mobject</span></code> can be used, such as <codeclass="docutils literal notranslate"><spanclass="pre">.shift()</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.scale()</span></code>, etc.</p></li>
<li><p>Call <codeclass="docutils literal notranslate"><spanclass="pre">.to_default_state()</span></code> to place in the default position</p></li>
<li><p>Set the Euler angles of the camera by <codeclass="docutils literal notranslate"><spanclass="pre">.set_euler_angles(theta,</span><spanclass="pre">phi,</span><spanclass="pre">gamma)</span></code></p></li>
<li><p>Set three single Euler angles by <codeclass="docutils literal notranslate"><spanclass="pre">.set_theta(theta)</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.set_phi(phi)</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.set_gamma(gamma)</span></code></p></li>
<li><p>Use <codeclass="docutils literal notranslate"><spanclass="pre">.increment_theta(dtheta)</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.increment_phi(dphi)</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.increment_gamma(gamma)</span></code> to increase the three Euler angles by a certain value. Can be used to realize automatic rotation <codeclass="docutils literal notranslate"><spanclass="pre">self.camera.frame.add_updater(lambda</span><spanclass="pre">mob,</span><spanclass="pre">dt:</span><spanclass="pre">mob.increment_theta(0.1</span><spanclass="pre">*</span><spanclass="pre">dt))</span></code></p></li>
</ul>
</li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">Camera</span></code> adds a light source, which is a <codeclass="docutils literal notranslate"><spanclass="pre">Point</span></code>, which can be called by <codeclass="docutils literal notranslate"><spanclass="pre">self.camera.light_source</span></code> in <codeclass="docutils literal notranslate"><spanclass="pre">Scene</span></code> to move and so on. The default position is <codeclass="docutils literal notranslate"><spanclass="pre">(-</span><spanclass="pre">10,</span><spanclass="pre">10,</span><spanclass="pre">10)</span></code></p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">Checkmark</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">Exmark</span></code></p></li>
<li><p>Some unnecessary classes have been removed from <codeclass="docutils literal notranslate"><spanclass="pre">drawings.py</span></code></p></li>
<li><p>Removed <codeclass="docutils literal notranslate"><spanclass="pre">Code</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">Paragraph</span></code> (by mistake)</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">TexMobject</span></code> is renamed to <codeclass="docutils literal notranslate"><spanclass="pre">Tex</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">TextMobject</span></code> is renamed to <codeclass="docutils literal notranslate"><spanclass="pre">TexText</span></code></p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">font_size</span></code> has been added to <codeclass="docutils literal notranslate"><spanclass="pre">Tex</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">TexText</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">Text</span></code></p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">Tex</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">TexText</span></code> added <codeclass="docutils literal notranslate"><spanclass="pre">isolate</span></code>, which is a list, which will be automatically split</p></li>
<li><p>Added a new class <codeclass="docutils literal notranslate"><spanclass="pre">Surface</span></code>, which is the parent class of <codeclass="docutils literal notranslate"><spanclass="pre">ParametricSurface</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">TexturedSurface</span></code>.</p></li>
<li><p>Added the group <codeclass="docutils literal notranslate"><spanclass="pre">SGroup</span></code> for <codeclass="docutils literal notranslate"><spanclass="pre">Surface</span></code></p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">TexturedSurface(uv_surface,</span><spanclass="pre">image_file,</span><spanclass="pre">dark_image_file=None)</span></code>, where <codeclass="docutils literal notranslate"><spanclass="pre">uv_surface</span></code> is a <codeclass="docutils literal notranslate"><spanclass="pre">Surface</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">image_file</span></code> is the image to be posted, and <codeclass="docutils literal notranslate"><spanclass="pre">dark_image_file</span></code> is the image to be posted in the dark (default and <codeclass="docutils literal notranslate"><spanclass="pre">image_file</span></code> is the same)</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">DotCloud</span></code> (a <codeclass="docutils literal notranslate"><spanclass="pre">PMobject</span></code>), which has been greatly optimized</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">gloss</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">shadow</span></code>, which are the numbers between <codeclass="docutils literal notranslate"><spanclass="pre">[0,</span><spanclass="pre">1]</span></code> respectively. There are four methods of <codeclass="docutils literal notranslate"><spanclass="pre">.get_gloss()</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.set_gloss(gloss)</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.get_shadow()</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.set_shadow(shadow)</span></code></p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.get_grid(n_rows,</span><spanclass="pre">n_cols)</span></code> to copy into grid</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.set_color_by_code(glsl_code)</span></code> to use GLSL code to change the color</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.set_color_by_xyz_func(glsl_snippet,</span><spanclass="pre">min_value=-5.0,</span><spanclass="pre">max_value=5.0,</span><spanclass="pre">colormap="viridis")</span></code> to pass in GLSL expression in the form of <codeclass="docutils literal notranslate"><spanclass="pre">x,y,z</span></code>, the return value should be a floating point number</p></li>
<li><p>No longer use <codeclass="docutils literal notranslate"><spanclass="pre">x_min</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">x_max</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">y_min</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">y_max</span></code>, but use <codeclass="docutils literal notranslate"><spanclass="pre">x_range</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">y_range</span></code> as a <codeclass="docutils literal notranslate"><spanclass="pre">np.array()</span></code>, containing three numbers <codeclass="docutils literal notranslate"><spanclass="pre">np.array([</span><spanclass="pre">Minimum,</span><spanclass="pre">maximum,</span><spanclass="pre">step</span><spanclass="pre">size])</span></code></p></li>
<li><p>Added the abbreviation <codeclass="docutils literal notranslate"><spanclass="pre">.i2gp(x,</span><spanclass="pre">graph)</span></code> of <codeclass="docutils literal notranslate"><spanclass="pre">.input_to_graph_point(x,</span><spanclass="pre">graph)</span></code></p></li>
<li><p>Added some functions of the original <codeclass="docutils literal notranslate"><spanclass="pre">GraphScene</span></code></p>
<ul>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.get_v_line(point)</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.get_h_line(point)</span></code> to return the line from <codeclass="docutils literal notranslate"><spanclass="pre">point</span></code> to the two coordinate axes, and specify the line type through the keyword argument of <codeclass="docutils literal notranslate"><spanclass="pre">line_func</span></code> (default <codeclass="docutils literal notranslate"><spanclass="pre">DashedLine</span></code>)</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.get_graph_label(graph,</span><spanclass="pre">label,</span><spanclass="pre">x,</span><spanclass="pre">direction,</span><spanclass="pre">buff,</span><spanclass="pre">color)</span></code> to return the label added to the image</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.get_v_line_to_graph(x,</span><spanclass="pre">graph)</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">.get_h_line_to_graph(x,</span><spanclass="pre">graph)</span></code> to return the line from the point with the abscissa of <codeclass="docutils literal notranslate"><spanclass="pre">x</span></code> on the <codeclass="docutils literal notranslate"><spanclass="pre">graph</span></code> to the two- axis line</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.angle_of_tangent(x,</span><spanclass="pre">graph,</span><spanclass="pre">dx=EPSILON)</span></code>, returns the inclination angle of <codeclass="docutils literal notranslate"><spanclass="pre">graph</span></code> at <codeclass="docutils literal notranslate"><spanclass="pre">x</span></code></p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.slope_of_tangent(x,</span><spanclass="pre">graph,</span><spanclass="pre">dx=EPSILON)</span></code>, returns the slope of tangent line of <codeclass="docutils literal notranslate"><spanclass="pre">graph</span></code> at <codeclass="docutils literal notranslate"><spanclass="pre">x</span></code></p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.get_tangent_line(x,</span><spanclass="pre">graph,</span><spanclass="pre">length=5)</span></code> to return the tangent line of <codeclass="docutils literal notranslate"><spanclass="pre">graph</span></code> at <codeclass="docutils literal notranslate"><spanclass="pre">x</span></code></p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.get_riemann_rectangles(graph,</span><spanclass="pre">x_range,</span><spanclass="pre">dx,</span><spanclass="pre">input_sample_type,</span><spanclass="pre">...)</span></code> to return Riemann rectangles (a <codeclass="docutils literal notranslate"><spanclass="pre">VGroup</span></code>)</p></li>
</ul>
</li>
<li><p>The attribute <codeclass="docutils literal notranslate"><spanclass="pre">number_line_config</span></code> of <codeclass="docutils literal notranslate"><spanclass="pre">Axes</span></code> is renamed to <codeclass="docutils literal notranslate"><spanclass="pre">axis_config</span></code></p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">Axes</span></code> original <codeclass="docutils literal notranslate"><spanclass="pre">.get_coordinate_labels(x_values,</span><spanclass="pre">y_values)</span></code> method was renamed to <codeclass="docutils literal notranslate"><spanclass="pre">.add_coordinate_labels(x_values,</span><spanclass="pre">y_values)</span></code> (but it is not added to the screen)</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">.add_coordinate_labels(numbers)</span></code> of <codeclass="docutils literal notranslate"><spanclass="pre">ComplexPlane</span></code> will directly add the coordinates to the screen</p></li>
<li><p>No longer use <codeclass="docutils literal notranslate"><spanclass="pre">x_min</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">x_max</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">tick_frequency</span></code>, but use <codeclass="docutils literal notranslate"><spanclass="pre">x_range</span></code>, which is an array containing three numbers <codeclass="docutils literal notranslate"><spanclass="pre">[min,</span><spanclass="pre">max,</span><spanclass="pre">step]</span></code></p></li>
<li><p>The original <codeclass="docutils literal notranslate"><spanclass="pre">label_direction</span></code> attribute changed to the <codeclass="docutils literal notranslate"><spanclass="pre">line_to_number_direction</span></code> attribute</p></li>
<li><p>Replace <codeclass="docutils literal notranslate"><spanclass="pre">tip_width</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">tip_height</span></code> with <codeclass="docutils literal notranslate"><spanclass="pre">tip_config</span></code> (dictionary) attributes</p></li>
<li><p>The original <codeclass="docutils literal notranslate"><spanclass="pre">exclude_zero_from_default</span></code> attribute is modified to the <codeclass="docutils literal notranslate"><spanclass="pre">numbers_to_exclude</span></code> attribute (default is None)</p></li>
<li><p>The original <codeclass="docutils literal notranslate"><spanclass="pre">.add_tick_marks()</span></code> method was changed to the <codeclass="docutils literal notranslate"><spanclass="pre">.add_ticks()</span></code> method</p></li>
<li><p>Delete the <codeclass="docutils literal notranslate"><spanclass="pre">.get_number_mobjects(*numbers)</span></code> method, only use the <codeclass="docutils literal notranslate"><spanclass="pre">.add_numbers(x_values=None,</span><spanclass="pre">excluding=None)</span></code> method</p></li>
</ul>
</li>
<li><p>Three-dimensional objects</p>
<ul>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">SurfaceMesh(uv_surface)</span></code>, pass in a <codeclass="docutils literal notranslate"><spanclass="pre">Surface</span></code> to generate its uv mesh</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">ParametricSurface</span></code> no longer uses <codeclass="docutils literal notranslate"><spanclass="pre">u_min,</span><spanclass="pre">u_max,</span><spanclass="pre">v_min,</span><spanclass="pre">v_max</span></code>, but instead uses <codeclass="docutils literal notranslate"><spanclass="pre">u_range,</span><spanclass="pre">v_range</span></code>, which is a tuple (<codeclass="docutils literal notranslate"><spanclass="pre">(min,</span><spanclass="pre">max)</span></code>), and <codeclass="docutils literal notranslate"><spanclass="pre">resolution</span></code> can be set larger, don’t worry Speed issue</p></li>
<li><p>Improved <codeclass="docutils literal notranslate"><spanclass="pre">Cube</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">Prism</span></code>, the usage remains unchanged</p></li>
</ul>
</li>
<li><p>Other objects</p>
<ul>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">ParametricFunction</span></code> is renamed to <codeclass="docutils literal notranslate"><spanclass="pre">ParametricCurve</span></code>. Instead of using <codeclass="docutils literal notranslate"><spanclass="pre">t_min,</span><spanclass="pre">t_max,</span><spanclass="pre">step_size</span></code>, use <codeclass="docutils literal notranslate"><spanclass="pre">t_range</span></code>, which is an array of three numbers (<codeclass="docutils literal notranslate"><spanclass="pre">[t_min,</span><spanclass="pre">t_max,</span><spanclass="pre">step_size]</span></code>). <codeclass="docutils literal notranslate"><spanclass="pre">dt</span></code> was renamed to <codeclass="docutils literal notranslate"><spanclass="pre">epsilon</span></code>. Other usage remains unchanged</p></li>
<li><p>All <codeclass="docutils literal notranslate"><spanclass="pre">TipableVMobject</span></code> can pass in <codeclass="docutils literal notranslate"><spanclass="pre">tip_length</span></code> to control the style of <codeclass="docutils literal notranslate"><spanclass="pre">tip</span></code></p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">Line</span></code> added <codeclass="docutils literal notranslate"><spanclass="pre">.get_projection(point)</span></code> to return the projection position of <codeclass="docutils literal notranslate"><spanclass="pre">point</span></code> on a straight line</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">Arrow</span></code> adds three attributes of <codeclass="docutils literal notranslate"><spanclass="pre">thickness,</span><spanclass="pre">tip_width_ratio,</span><spanclass="pre">tip_angle</span></code></p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">CubicBezier</span></code> is changed to <codeclass="docutils literal notranslate"><spanclass="pre">a0,</span><spanclass="pre">h0,</span><spanclass="pre">h1,</span><spanclass="pre">a1</span></code>, that is, only a third-order Bezier curve is supported</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">Square</span></code> can be initialized directly by passing in <codeclass="docutils literal notranslate"><spanclass="pre">side_length</span></code> instead of using the keyword <codeclass="docutils literal notranslate"><spanclass="pre">side_length=</span></code></p></li>
<li><p>The <codeclass="docutils literal notranslate"><spanclass="pre">digit_to_digit_buff</span></code> property of <codeclass="docutils literal notranslate"><spanclass="pre">DecimalNumber</span></code> has been renamed to <codeclass="docutils literal notranslate"><spanclass="pre">digit_buff_per_font_unit</span></code>, and the <codeclass="docutils literal notranslate"><spanclass="pre">.scale()</span></code> method has been improved</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">ValueTracker</span></code> adds <codeclass="docutils literal notranslate"><spanclass="pre">value_type</span></code> attribute, the default is <codeclass="docutils literal notranslate"><spanclass="pre">np.float64</span></code></p></li>
<li><p>Removed all functions of <codeclass="docutils literal notranslate"><spanclass="pre">GraphScene</span></code> (moved to <codeclass="docutils literal notranslate"><spanclass="pre">once_useful_constructs</span></code>), <codeclass="docutils literal notranslate"><spanclass="pre">MovingCameraScene</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">ReconfigurableScene</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">SceneFromVideo</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">ZoomedScene</span></code>, and <codeclass="docutils literal notranslate"><spanclass="pre">ThreeDScene</span></code>. Because these can basically be achieved by adjusting <codeclass="docutils literal notranslate"><spanclass="pre">CameraFrame</span></code> (<codeclass="docutils literal notranslate"><spanclass="pre">self.camera.frame</span></code>)</p></li>
<li><p>Currently <codeclass="docutils literal notranslate"><spanclass="pre">SampleSpaceScene</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">VectorScene</span></code> have not been changed for the new version, so it is not recommended to use (only <codeclass="docutils literal notranslate"><spanclass="pre">Scene</span></code> is recommended)</p></li>
<li><p>Fix the export of gif, just use the <codeclass="docutils literal notranslate"><spanclass="pre">-i</span></code> option directly</p></li>
<li><p>Added the <codeclass="docutils literal notranslate"><spanclass="pre">.interact()</span></code> method, during which the mouse and keyboard can be used to continue the interaction, which will be executed by default after the scene ends</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.embed()</span></code> method, open iPython terminal to enter interactive mode</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.save_state()</span></code> method to save the current state of the scene</p></li>
<li><p>Added <codeclass="docutils literal notranslate"><spanclass="pre">.restore()</span></code> method to restore the entire scene to the saved state</p></li>
<li><p>A series of functions related to second-order Bezier have been added to <codeclass="docutils literal notranslate"><spanclass="pre">utils/bezier.py</span></code></p></li>
<li><p>Added a function to read color map from <codeclass="docutils literal notranslate"><spanclass="pre">matplotlib</span></code> in <codeclass="docutils literal notranslate"><spanclass="pre">utils/color.py</span></code></p></li>
<li><p>Added a series of related functions for processing folders/custom styles/object families</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">resize_array</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">resize_preserving_order</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">resize_with_interpolation</span></code> three functions have been added to <codeclass="docutils literal notranslate"><spanclass="pre">utils/iterables.py</span></code></p></li>
<li><p>The definition of <codeclass="docutils literal notranslate"><spanclass="pre">smooth</span></code> is updated in <codeclass="docutils literal notranslate"><spanclass="pre">utils/rate_functions.py</span></code></p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">clip(a,</span><spanclass="pre">min_a,</span><spanclass="pre">max_a)</span></code> function has been added to <codeclass="docutils literal notranslate"><spanclass="pre">utils/simple_functions.py</span></code></p></li>
<li><p>Some functions have been improved in <codeclass="docutils literal notranslate"><spanclass="pre">utils/space_ops.py</span></code>, some functions for space calculation, and functions for processing triangulation have been added</p></li>
<li><p>Deleted the old gray series (<codeclass="docutils literal notranslate"><spanclass="pre">LIGHT_GREY</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">GREY</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">DARK_GREY</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">DARKER_GREY</span></code>), added a new series of gray <codeclass="docutils literal notranslate"><spanclass="pre">GREY_A</span></code> ~ <codeclass="docutils literal notranslate"><spanclass="pre">GREY_E</span></code></p></li>