loading...
Cover image for JavaScript and animated sinus in console πŸ™‚πŸ’»

JavaScript and animated sinus in console πŸ™‚πŸ’»

sarah_ldp profile image sarah_ldp Originally published at dirask.com ・3 min read

Hello everyone πŸ™‚

PS: This is my first post here, so be forgiving πŸ™‚

Today I'd like to share with you simple but effective way of using mathematical sinus to make funny animation in console with my favourite JavaScript.

Do you have smarter or better way of doing similar example? Any suggestion is appreciated, thanks in advance. πŸ‘

I hope someone will get inspired by this post and will create something even more creative.

This post was originally published at:
JavaScript and animated sinus in console

All code examples can be run with online runner under link:
code examples with online runner

1. Smile sine animation example

function printSine(x1, x2) {
    var dx = 3.14 / 4.0; // x axis step
    var dy = 1.0  / 5.0; // y axis step

    function printLine(character) {
        var line = '';

        for(var y = y1; y < y2; y += dy) {
            line += '.';
        }

        console.log(line + character);
    }

    for (var rad = x1; rad < x2; rad += dx) {
        var y1 = 0.0;
        var y2 = Math.sin(rad) + 1;

        printLine('πŸ˜ƒ');
    }
}

var x1 = 0.0;     // begining of sinus chart
var x2 = 6 * 3.14 // end of sinus chart

setInterval(function() {
    console.clear();
    printSine(x1, x2);

    x1 += 0.3;
    x2 += 0.3;

}, 40);

Ouput:
code example with online runner

Alt Text

2. Crazy fast

function printSine(x1, x2) {
    var dx = 3.14 / 4.0; // x axis step
    var dy = 1.0  / 5.0; // y axis step

    function printLine() {
        var line = '';

        for(var i = 0; i < arguments.length; ++i) {
            var character = arguments[i];

            for(var y = y1; y < y2; y += dy) {
                line += ' ';
            }

            line += character;
            line+= '                 ';

            for(var y = y2; y < 1.0; y += dy) {
                line += ' ';
            }
        }

        console.log(line);
    }

    for (var rad = x1; rad < x2; rad += dx) {
        var y1 = 0.0;
        var y2 = Math.sin(rad) + 1;

        printLine('πŸ˜ƒ', 'πŸ˜ƒ');
    }
}

var x1 = 0.0;     // begining of sinus chart
var x2 = 6 * 3.14 // end of sinus chart

setInterval(function() {
    console.clear();
    printSine(x1, x2);

    x1 += 0.3;
    x2 += 0.3;

}, 4);

Ouput:
code example with online runner

Alt Text

3. Custom sine animation example

function printSine(x1, x2) {
    var dx = 3.14 / 4.0; // x axis step
    var dy = 1.0  / 5.0; // y axis step

    for (var rad = x1; rad < x2; rad += dx) {
        var y1 = 0.0;
        var y2 = Math.sin(rad) + 1;

        var line = '';

        for(var y = y1; y < y2; y += dy) {
            line += ' ';
        }

        console.log(line + '+');
    }
}

var x1 = 0.0;     // begining of sinus chart
var x2 = 6 * 3.14 // end of sinus chart

setInterval(function() {
    console.clear();
    printSine(x1, x2);

    x1 += 0.3;
    x2 += 0.3;

}, 50);

Ouput:
code example with online runner

Alt Text

4. Funny smiled sine example

function printSine(x1, x2) {
    var dx = 3.14 / 4.0; // x axis step
    var dy = 1.0  / 5.0; // y axis step

    function printLine(character) {
        var line = '';

        for(var y = y1; y < y2; y += dy) {
            line += ' ';
        }

        console.log(line + character);
    }

    for (var rad = x1; rad < x2; rad += dx) {
        var y1 = 0.0;
        var y2 = Math.sin(rad) + 1;

        printLine('*');
    }

    printLine('πŸ˜ƒ');
}

var x1 = 0.0;     // begining of sinus chart
var x2 = 6 * 3.14 // end of sinus chart

setInterval(function() {
    console.clear();
    printSine(x1, x2);

    x1 += 0.3;
    x2 += 0.3;

}, 50);

Ouput:
code example with online runner

Alt Text

So, that's all for today, I hope you enjoyed this short post, leave a comment with improvement suggestions or any thoughts.

Thanks, be well and see you soon in my next post. πŸ‘ πŸ™‚

Posted on Jun 28 by:

Discussion

markdown guide