Create your own Season's Greetings with Scilab

 

With this Scilab script, create your own Season's Greeting, to share it with your friends:

ScilabSeasonsGreeting.sce 1.91 kB

function Star(B, b, n, name)
    colour = modulo(name, 128);
    for p = n:-1:1
        for q = 1:min(p,2):2^(p-1)*b
           Z = B*exp(%i*q*%pi/2^(p-2)/b);
            xfpolys(real(Z), imag(Z), [colour colour+8]);
        end
    end
endfunction
txt = ["First Name"; "Date of Birth"];
sig = x_mdialog("Enter your info", txt, ["John"; "2017"]);
if ~isempty(sig) then
   
    year = evstr(sig(2));
    n = modulo(year,3)+3;
    b = modulo(year,6)+5;
    name = sum(ascii(sig(1)));
   
    R = 1;
    r = R/(2*cos(%pi/b));
    B = [0 0; R*%i r*exp(%i*(%pi/2 + %pi/b)); r*exp(%i*(%pi/2 - %pi/b)) R*%i];
    
    f = figure("visible","off", ..
    "figure_name", "",..
    "color_map", jetcolormap(128),..
    "menubar_visible", "off",..
    "toolbar_visible", "off",..
    "infobar_visible", "off");
    f.background = color("white");
   
    imageWidth = 138;
    imageHeight = 69;
   
    try
        // getURL requires an internet connection
        URL = getURL("https://www.scilab.org/sites/default/files/news/17/scilab-logo.png");
        uicontrol("Parent", f, ..
        "Style", "image", ..
        "Position", [(f.axes_size(1)-imageWidth-20) imageHeight imageWidth imageHeight], ..
        "Backgroundcolor",[1 1 1], ..
        "String", URL);
    catch
    end
   
    f.visible = "on";
    plot2d(%inf, %inf, frameflag = 3, rect = [-R,-R,R,R], axesflag = 0);
    Star(B, b, n, name);
    a = gca();
    t = a.title;
    t.font_size = 4;
    t.font_style = 5;
    t.text = sig(1)+"''s Season''s Greetings (proudly made with Scilab)";
   
    uicontrol("Parent", f, ..
    "Style", "pushbutton", ..
    "Position", [30 imageHeight 100 40], ..
    "String", "Save to PNG",..
    "Callback","savePNG()");
   
    function savePNG()
        File = uiputfile("*.png");
        if isempty(File) then
            return;
        end
        xs2png(f, File+".png");
    endfunction
   
end

This site uses cookies in order to improve your user experience and to provide content tailored specifically to your interests. Detailed information on the use of cookies on this website is provided in our Privacy Policy. Click "Learn More" to change you cookie settings. By using this website, you consent to the use of cookies.