SEP 132: implicitplot function 30/15130/7
Pierre-Aime Agnel [Fri, 29 Aug 2014 12:20:54 +0000 (14:20 +0200)]
Change-Id: I97ae389fbe02dc627fc586c5a6175e1bf8e6e800

SEP/SEP_132_implicitplot.odt [new file with mode: 0644]
scilab/modules/graphics/help/en_US/2d_plot/implicitplot.xml [new file with mode: 0644]
scilab/modules/graphics/macros/implicitplot.sci [new file with mode: 0644]
scilab/modules/graphics/tests/unit_tests/implicitplot.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/unit_tests/implicitplot.tst [new file with mode: 0644]
scilab/modules/helptools/etc/images_md5.txt
scilab/modules/helptools/images/_LaTeX_implicitplot.xml_1.png [new file with mode: 0644]
scilab/modules/helptools/images/implicitplot_1.png [new file with mode: 0644]
scilab/modules/helptools/images/implicitplot_2.png [new file with mode: 0644]
scilab/modules/helptools/images/implicitplot_3.png [new file with mode: 0644]
scilab/modules/helptools/images/implicitplot_4.png [new file with mode: 0644]

diff --git a/SEP/SEP_132_implicitplot.odt b/SEP/SEP_132_implicitplot.odt
new file mode 100644 (file)
index 0000000..01b8ba9
Binary files /dev/null and b/SEP/SEP_132_implicitplot.odt differ
diff --git a/scilab/modules/graphics/help/en_US/2d_plot/implicitplot.xml b/scilab/modules/graphics/help/en_US/2d_plot/implicitplot.xml
new file mode 100644 (file)
index 0000000..c72b81e
--- /dev/null
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Pierre-Aimé Agnel
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"  xml:lang="en" xml:id="implicitplot">
+    <refnamediv>
+        <refname>implicitplot</refname>
+        <refpurpose>Implicit plot</refpurpose>
+    </refnamediv>
+    <refsynopsisdiv>
+        <title>Calling Sequence</title>
+        <synopsis>
+            implicitplot(fun, [x_range, [y_range]])
+            implicitplot(fun, x_range, y_range, [options])
+            implicitplot(f_eval, x_range, y_range, [options])
+        </synopsis>
+    </refsynopsisdiv>
+    <refsection>
+        <title>Arguments</title>
+        <variablelist>
+            <varlistentry>
+                <term>fun</term>
+                <listitem>
+                    <para>
+                        a string or a function of variables x and y. The function to plot.
+                        
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>f_eval</term>
+                <listitem>
+                    <para>
+                        a real matrix of size <literal>[length(x_range), length(y_range)]</literal>. The evaluation of the function to plot on all points in <literal>x_range</literal> and <literal>y_range</literal>.
+                        
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>x_range</term>
+                <listitem>
+                    <para>
+                        a real vector. The x values over which the function is sampled.
+                        
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>y_range</term>
+                <listitem>
+                    <para>
+                        a real vector. The y values over which the function is sampled.
+                        
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>options</term>
+                <listitem>
+                    <para>
+                        a list of options. The plot optional parameters.
+                        
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </refsection>
+    <refsection>
+        <title>Description</title>
+        <para>
+            <literal>implicitplot(fun, x_range, y_range)</literal> draws the implicit function defined by
+            <literal>fun(x, y) = 0</literal> by evaluating <literal>fun</literal> over
+            <varname>x_range</varname> and <varname>y_range</varname>.
+        </para>
+        <para>
+            If <varname>x_range</varname> or <varname>y_range</varname> is omitted, the range chosen is 100 points taken in <latex>$[-1, 1]$</latex>.
+        </para>
+        <para>
+            The function <varname>fun</varname> may be defined as a compiled scilab function, an uncompiled function or a string. The function must
+            take <literal>x</literal> and <literal>y</literal> as input parameters.
+        </para>
+        <para>
+            The options defined by the <varname>options</varname> parameter can be any options of the <link linkend="plot">plot</link> function.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+            // Draw a circle of radius 1
+            implicitplot("x^2 + y^2 - 1")
+ ]]></programlisting>
+        <scilab:image>
+            implicitplot("x^2 + y^2 - 1")
+        </scilab:image>
+        <programlisting role="example"><![CDATA[
+            function z = F(x, y)
+                z = x*(x^2 + y^2) - 5*(x^2 - y^2);
+            endfunction
+
+            x_range = -3:0.1:6;
+            y_range = -5:0.1:5;
+
+            // Draw the curve in the [-3 6] x [-5 5] range
+            implicitplot(F, x_range, y_range)
+ ]]></programlisting>
+        <scilab:image>
+            function z = F(x, y)
+            z = x*(x^2 + y^2) - 5*(x^2 - y^2);
+            endfunction
+            
+            x_range = -3:0.1:6;
+            y_range = -5:0.1:5;
+            
+            implicitplot(F, x_range, y_range)
+        </scilab:image>
+        <programlisting role="example"><![CDATA[
+            function result = fun(x, y)
+                result = 3*x^2*exp(x) - x*y^2 +  exp(y)/(y^2 + 1) - 1
+            endfunction
+
+            x_range = -1:0.1:1;
+            y_range = -10:0.1:10;
+
+            // Draw curve with red dashed line
+            implicitplot(fun, x_range, y_range, "r--")
+ ]]></programlisting>
+        <scilab:image>
+            function result = fun(x, y)
+            result = 3*x^2*exp(x) - x*y^2 +  exp(y)/(y^2 + 1) - 1
+            endfunction
+            
+            x_range = -1:0.1:1;
+            y_range = -10:0.1:10;
+            
+            implicitplot(fun, x_range, y_range, "r--")
+        </scilab:image>
+        <programlisting role="example"><![CDATA[
+        function z = ocho(x, y)
+            z = x*sin(x) - y^2*cos(y);
+        endfunction
+
+        x_range = linspace(-%pi/2, %pi/2, 200);
+        y_range = x_range;
+
+        f_eval = feval(x_range, y_range, ocho);
+
+        // Draws f_eval = 0
+        implicitplot(f_eval, x_range, y_range)
+ ]]></programlisting>
+        <scilab:image>
+            function z = ocho(x, y)
+            z = x*sin(x) - y^2*cos(y);
+            endfunction
+            
+            x_range = linspace(-%pi/2, %pi/2, 200);
+            y_range = x_range;
+            
+            f_eval = feval(x_range, y_range, ocho);
+            
+            // Draws f_eval = 0
+            implicitplot(f_eval, x_range, y_range)
+        </scilab:image>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="plot">plot</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/graphics/macros/implicitplot.sci b/scilab/modules/graphics/macros/implicitplot.sci
new file mode 100644 (file)
index 0000000..cdc0e49
--- /dev/null
@@ -0,0 +1,167 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) INRIA
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+// Copyright (C) 2012 - SCILAB ENTERPRISES - Claude Gomez
+// Copyright (C) Scilab Enterprises - 2014 - Pierre-Aime Agnel
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+// =============================================================================
+
+function implicitplot(fun, x_range, y_range, varargin)
+
+    [lhs, rhs] = argn(0);
+
+    if rhs == 0 then
+        scf();
+        implicitplot("rand() - 0.5", 1:10, 1:10);
+        return;
+    end
+
+    // x and y must be constants
+    if rhs == 1 then
+        x_range = linspace(-1, 1, 101);
+        y_range = linspace(-1, 1, 101);
+        varargin = [];
+    end
+    if rhs == 2 then
+        y_range = linspace(-1, 1, 101);
+        varargin = [];
+    end
+
+    if rhs >= 2 then
+        if type(x_range) <> 1 then
+            error(999, msprintf(gettext("%s: Wrong type for input argument #%d: Real vector expected.\n"), "implicitplot", 2));
+        end
+        if ~isvector(x_range) then
+            error(999, msprintf(gettext("%s: Wrong size for input argument #%d: Real vector expected.\n"), "implicitplot", 2));
+        end
+        if ~isreal(x_range) then
+            error(999, msprintf(gettext("%s: Wrong value for input argument #%d: Real value expected.\n"), "implicitplot", 2));
+        end
+    end
+
+    if rhs >= 3 then
+        if type(y_range) <> 1 then
+            error(999, msprintf(gettext("%s: Wrong type for input argument #%d: Real vector expected.\n"), "implicitplot", 3));
+        end
+        if ~isvector(y_range) then
+            error(999, msprintf(gettext("%s: Wrong size for input argument #%d: Real vector expected.\n"), "implicitplot", 3));
+        end
+        if ~isreal(y_range) then
+            error(999, msprintf(gettext("%s: Wrong value for input argument #%d: Real value expected.\n"), "implicitplot", 3));
+        end
+    end
+
+    // fun is a string or a function
+    fun_type = type(fun);
+    if ~or(fun_type == [1 10 11 13]) then
+        error(999, msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix or String or Scilab function expected.\n"), "implicitplot", 1));
+    end
+
+    if fun_type == 1 then
+        if or(size(fun) ~= [length(x_range), length(y_range)])
+            error(999, msprintf(gettext("%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"), "implicitplot", 1, length(x_range), length(y_range)));
+        end
+    else
+        if fun_type == 10
+            if size(fun, "*") ~= 1
+                error(999, msprintf(gettext("%s: Wrong size for input argument #%d: Scalar string expected.\n"), "implicitplot", 1));
+            end
+        end
+    end
+
+    // Do not signal INF and NAN
+    old_ieee = ieee();
+    ieee(2);
+
+    if type(fun) ~= 1
+        // Define the function
+        if type(fun) == 10 then
+            deff("[%z] = internal_fun(%x, %y)", "%z = " + fun);
+        else
+            internal_fun = fun;
+            if type(fun) == 11 then
+                comp(internal_fun);
+            end
+        end
+        %z = feval(x_range, y_range, internal_fun);
+    else
+        %z = fun;
+    end
+
+    [xc, yc] = contour2di(x_range, y_range, %z, [0, 0]);
+    clear z;
+
+    // xc and yc might be empty: no zeros were found in x_range X y_range
+    if size(xc, "*") == 0
+        error(999, msprintf(gettext("%s: Function evaluation in selected range does not cross any zeros.\n"), "implicitplot"));
+    end
+
+    // Cleaning results of contour2di
+    // The function might return several times the same contour
+    k = 1;
+    i = 1;
+    list_coord = list();
+    n = yc(k);
+    list_coord(i) = [xc(k + (1:n)); yc(k + (1:n))];
+    k = k + n + 1;
+
+    while k < length(xc)
+        n = yc(k);
+        exist_in_list = %f;
+        new_coord = [xc(k + (1:n)); yc(k + (1:n))];
+
+        for it = 1:i
+            if and(list_coord(it) == new_coord)
+                exist_in_list = %t;
+                break;
+            end
+        end
+        if ~exist_in_list
+            i = i + 1;
+            list_coord(i) = new_coord;
+        end
+        k = k + n + 1;
+    end
+
+    clear xc, yc;
+    // Now list_coord contains each path for the contour drawing
+    // Draw each polyline element inside a compound
+    fig = gcf();
+    a = gca();
+
+    v = fig.immediate_drawing;
+    fig.immediate_drawing = "off";
+    cnt = 0;
+
+    for it = 1:i
+
+        err = execstr("plot(list_coord(it)(1,:), list_coord(it)(2,:), varargin(:))", "errcatch", "m");
+
+        // add a test to see if plot2d call succeed
+        if err <> 0
+            mprintf(gettext("Error %d : in plot called by implicitplot"), err);
+            fig.immediate_drawing = v;
+            clear list_coord
+            return;
+        end
+
+        // unfold the Compound created after plot into its Polyline content
+        unglue(a.children(1))
+        cnt = cnt + 1;
+    end
+
+    if cnt > 0 then
+        // glue all Polylines together into a Compound
+        glue(a.children(1:cnt));
+    end
+    set("current_entity", a);
+    fig.immediate_drawing = v;
+    ieee(old_ieee);
+    clear list_coord
+endfunction
diff --git a/scilab/modules/graphics/tests/unit_tests/implicitplot.dia.ref b/scilab/modules/graphics/tests/unit_tests/implicitplot.dia.ref
new file mode 100644 (file)
index 0000000..5f2b1e8
--- /dev/null
@@ -0,0 +1,59 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Pierre-Aime Agnel
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Unit test for function implicitplot -->
+//
+// <-- Short Description -->
+//
+// <-- TEST WITH GRAPHIC -->
+// Error checking
+//x_range and y_range are constant matrices
+err_msg = msprintf(gettext("%s: Wrong type for input argument #%d: Real vector expected.\n"), "implicitplot", 2);
+assert_checkerror("implicitplot(""does not work"", ""not_a_real_matrix"")", err_msg);
+err_msg = msprintf(gettext("%s: Wrong type for input argument #%d: Real vector expected.\n"), "implicitplot", 3);
+assert_checkerror("implicitplot(""does not work"", [0 1], ""not_a_real_matrix"")", err_msg);
+//x_range and y_range are vectors
+err_msg = msprintf(gettext("%s: Wrong size for input argument #%d: Real vector expected.\n"), "implicitplot", 2);
+assert_checkerror("implicitplot(""does not work"", [0 1; 0 1], [0 1])", err_msg);
+err_msg = msprintf(gettext("%s: Wrong size for input argument #%d: Real vector expected.\n"), "implicitplot", 3);
+assert_checkerror("implicitplot(""does not work"", [0 1], [0 1; 0 1])", err_msg);
+//x_range and y_range are real
+err_msg = msprintf(gettext("%s: Wrong value for input argument #%d: Real value expected.\n"), "implicitplot", 2);
+assert_checkerror("implicitplot(""does not work"", [0, %i], [0, %i])", err_msg);
+err_msg = msprintf(gettext("%s: Wrong value for input argument #%d: Real value expected.\n"), "implicitplot", 3);
+assert_checkerror("implicitplot(""does not work"", [0 1], [0, %i])", err_msg);
+// Input argument 1 must be text or function or compiled function
+err_msg = msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix or String or Scilab function expected.\n"), "implicitplot", 1);
+assert_checkerror("implicitplot(%s, [0 1], [0 1])", err_msg);
+// Function in input argument 1 must cross a zero
+err_msg = msprintf(gettext("%s: Function evaluation in selected range does not cross any zeros.\n"), "implicitplot");
+assert_checkerror("implicitplot(""10"", [0 1], [0 1])", err_msg);
+// if fun is real, must be of size length(x) * length(y);
+err_msg = msprintf(gettext("%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"), "implicitplot", 1, 3, 3);
+assert_checkerror("implicitplot([0 1 -1 ;-1 1 -1], 1:3, 1:3)", err_msg);
+// if fun is not real (string or scilab function) must be of size 1
+err_msg = msprintf(gettext("%s: Wrong size for input argument #%d: Scalar string expected.\n"), "implicitplot", 1);
+assert_checkerror("implicitplot([""test"", ""fail""], 1:3, 1:3)", err_msg);
+// Nominal behaviour
+function result = fun(x, y)
+    result = 3 * x^2 * exp(x) - x * y^2 +  exp(y) / (y^2 + 1) -1
+endfunction
+x_range = -1:0.01:1;
+y_range = -10:0.01:10;
+implicitplot(fun, x_range, y_range, "r--");
+a = gca();
+// This plot is a compound of two polylines
+data1 = a.children(1).children(1).data;
+data2 = a.children(1).children(2).data;
+for i = 1:size(data1, "r")
+    // Check polyline is sufficiently close to 0
+    assert_checktrue(abs(fun(data1(i, 1), data1(i, 2))) < 0.01);
+end
+for i = 1:size(data2, "r")
+    // Check polyline is sufficiently close to 0
+    assert_checktrue(abs(fun(data2(i, 1), data2(i, 2))) < 0.01);
+end
diff --git a/scilab/modules/graphics/tests/unit_tests/implicitplot.tst b/scilab/modules/graphics/tests/unit_tests/implicitplot.tst
new file mode 100644 (file)
index 0000000..8a23213
--- /dev/null
@@ -0,0 +1,75 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Pierre-Aime Agnel
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Unit test for function implicitplot -->
+//
+// <-- Short Description -->
+//
+// <-- TEST WITH GRAPHIC -->
+
+// Error checking
+//x_range and y_range are constant matrices
+err_msg = msprintf(gettext("%s: Wrong type for input argument #%d: Real vector expected.\n"), "implicitplot", 2);
+assert_checkerror("implicitplot(""does not work"", ""not_a_real_matrix"")", err_msg);
+
+err_msg = msprintf(gettext("%s: Wrong type for input argument #%d: Real vector expected.\n"), "implicitplot", 3);
+assert_checkerror("implicitplot(""does not work"", [0 1], ""not_a_real_matrix"")", err_msg);
+
+//x_range and y_range are vectors
+err_msg = msprintf(gettext("%s: Wrong size for input argument #%d: Real vector expected.\n"), "implicitplot", 2);
+assert_checkerror("implicitplot(""does not work"", [0 1; 0 1], [0 1])", err_msg);
+
+err_msg = msprintf(gettext("%s: Wrong size for input argument #%d: Real vector expected.\n"), "implicitplot", 3);
+assert_checkerror("implicitplot(""does not work"", [0 1], [0 1; 0 1])", err_msg);
+
+//x_range and y_range are real
+err_msg = msprintf(gettext("%s: Wrong value for input argument #%d: Real value expected.\n"), "implicitplot", 2);
+assert_checkerror("implicitplot(""does not work"", [0, %i], [0, %i])", err_msg);
+
+err_msg = msprintf(gettext("%s: Wrong value for input argument #%d: Real value expected.\n"), "implicitplot", 3);
+assert_checkerror("implicitplot(""does not work"", [0 1], [0, %i])", err_msg);
+
+// Input argument 1 must be text or function or compiled function
+err_msg = msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix or String or Scilab function expected.\n"), "implicitplot", 1);
+assert_checkerror("implicitplot(%s, [0 1], [0 1])", err_msg);
+
+// Function in input argument 1 must cross a zero
+err_msg = msprintf(gettext("%s: Function evaluation in selected range does not cross any zeros.\n"), "implicitplot");
+assert_checkerror("implicitplot(""10"", [0 1], [0 1])", err_msg);
+
+// if fun is real, must be of size length(x) * length(y);
+err_msg = msprintf(gettext("%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"), "implicitplot", 1, 3, 3);
+assert_checkerror("implicitplot([0 1 -1 ;-1 1 -1], 1:3, 1:3)", err_msg);
+
+// if fun is not real (string or scilab function) must be of size 1
+err_msg = msprintf(gettext("%s: Wrong size for input argument #%d: Scalar string expected.\n"), "implicitplot", 1);
+assert_checkerror("implicitplot([""test"", ""fail""], 1:3, 1:3)", err_msg);
+
+// Nominal behaviour
+function result = fun(x, y)
+    result = 3 * x^2 * exp(x) - x * y^2 +  exp(y) / (y^2 + 1) -1
+endfunction
+
+x_range = -1:0.01:1;
+y_range = -10:0.01:10;
+
+implicitplot(fun, x_range, y_range, "r--");
+
+a = gca();
+// This plot is a compound of two polylines
+data1 = a.children(1).children(1).data;
+data2 = a.children(1).children(2).data;
+
+for i = 1:size(data1, "r")
+    // Check polyline is sufficiently close to 0
+    assert_checktrue(abs(fun(data1(i, 1), data1(i, 2))) < 0.01);
+end
+
+for i = 1:size(data2, "r")
+    // Check polyline is sufficiently close to 0
+    assert_checktrue(abs(fun(data2(i, 1), data2(i, 2))) < 0.01);
+end
index bc44a26..a60bf2b 100644 (file)
@@ -504,6 +504,7 @@ _LaTeX_grand.xml_7.png=7a58d133be93f529513e15fbb6ea7827
 _LaTeX_hank.xml_1.png=fc6c604bc8c86af20a8f0673047332db
 _LaTeX_histc.xml_1.png=f1c5acc5939d55326dfab4af50e13f97
 _LaTeX_histplot.xml_1.png=f1c5acc5939d55326dfab4af50e13f97
+_LaTeX_implicitplot.xml_1.png=35481729b0fb8142a90d142d79046c6c
 _LaTeX_interp.xml_1.png=b99c07a3557a83033fdeedd84352b082
 _LaTeX_interp.xml_10.png=e257b3b19cc16006687169337c38dc2a
 _LaTeX_interp.xml_11.png=b99c07a3557a83033fdeedd84352b082
@@ -1055,6 +1056,10 @@ householder_1.png=8a7bce8cfadfbf5d70436734b66ec20d
 hsv2rgb_1.png=7d20c259e94301d9763fbddb7bff4784
 hsvcolormap_1.png=11918d88bcc793200af0b9f1b58b0554
 iir_1.png=e675c2755f68ddc4611c849895b63012
+implicitplot_1.png=d2d7b1b26a127ab8775517c742824770
+implicitplot_2.png=e16dce51c9990d82807c47fe535c6d61
+implicitplot_3.png=5201f1980df1b1ba7afb7b3a92b68611
+implicitplot_4.png=74aeae6ec05b661c78c12c90d50b3aec
 intdec_1.png=9bf5d8f1a6aeddee68d7c5d831ef2d05
 interp1_1.png=e9a3f4319b2818ce4921b9bc3008d80
 interp2d_1.png=f4af61bc3faf493d778169ec7decc7ae
diff --git a/scilab/modules/helptools/images/_LaTeX_implicitplot.xml_1.png b/scilab/modules/helptools/images/_LaTeX_implicitplot.xml_1.png
new file mode 100644 (file)
index 0000000..dd86deb
Binary files /dev/null and b/scilab/modules/helptools/images/_LaTeX_implicitplot.xml_1.png differ
diff --git a/scilab/modules/helptools/images/implicitplot_1.png b/scilab/modules/helptools/images/implicitplot_1.png
new file mode 100644 (file)
index 0000000..4be8482
Binary files /dev/null and b/scilab/modules/helptools/images/implicitplot_1.png differ
diff --git a/scilab/modules/helptools/images/implicitplot_2.png b/scilab/modules/helptools/images/implicitplot_2.png
new file mode 100644 (file)
index 0000000..b0f5c85
Binary files /dev/null and b/scilab/modules/helptools/images/implicitplot_2.png differ
diff --git a/scilab/modules/helptools/images/implicitplot_3.png b/scilab/modules/helptools/images/implicitplot_3.png
new file mode 100644 (file)
index 0000000..1d7588a
Binary files /dev/null and b/scilab/modules/helptools/images/implicitplot_3.png differ
diff --git a/scilab/modules/helptools/images/implicitplot_4.png b/scilab/modules/helptools/images/implicitplot_4.png
new file mode 100644 (file)
index 0000000..f10e4ee
Binary files /dev/null and b/scilab/modules/helptools/images/implicitplot_4.png differ