Skip to main content

A fair play with Maths and JQuery Animation

This is a new try with the simple maths that we already know. I have used basic trigonometric equations and JQuery animation for the play.

DEMO

Demo Explained:
  1. Create set of div and append it to the body
    for (var i = 0; i < 360; i++) {
        //random color
        var color = '#'+parseInt(Math.random()*0xccccc);
        //create and append DOM
        $('<div/>').appendTo('body').css('background',color);
    }
    
    
  2. For random positioning use Math.random() to generate random x,y values


    for (var i = 0; i < 360; i++) {
            var left = 100 + Math.random() * 300 + 'px';
            var top = 100 + Math.random() * 300 + 'px';
            $('div').eq(i).animate({left:left,top:top},1000);
    }
    
    
  3. To draw circle,
    x = tx + r cos(t)
    y = ty + r sin(t)
    so looping through t value from 0 to 360 will generate circle


    for (var i = 0; i < 360; i++) {
            r = 150;
            var left = 400 + r*Math.cos(i);
            var top = 200 + r*Math.sin(i);
            $('div').eq(i).animate({left:left,top:top},1000);              
        }
    
    
  4. To draw sine wave,
    y = constant
    x = tx + r sin(t)
    so looping through value from 0 to 360 will generate sine wave




    for (var i = 0; i < 360; i++) {
            r = 100;
            var left = i*10;
            var top = 300 + 10 * Math.sin(i);
            $('div').eq(i).animate({left:left,top:top},1000);              
        }
    
    
  5. To draw cos wave,
    y = constant
    x = tx + r cos(t)
    so looping through value from 0 to 360 will generate cos wave




    for (var i = 0; i < 360; i++) {
            var left = i*10;
            var top = 300 + 10 * Math.cos(i);
            $('div').eq(i).animate({left:left,top:top},1000);              
    }
    
    
  6. For animating DOM elements to a single point (mouse click over document), get x,y position using mouse click event and animate each element towards the point with setTimeout function



    $(document).on('click',function(e){
        for (var i = 0; i < 360; i++) {
            var left = e.clientX + 'px';
            var top = e.clientY + 'px';
            var f = (function(i){
                return function(){
                    $('div').eq(i).animate({left:left,top:top},500);
                };
            })(i);
            setTimeout(f,i*5);
        }
    });
    
    

Comments

Popular posts from this blog

Random Bouncing Ball Animation

Simple animation of random balls that bounces within the screen Source: #include<stdio.h> #include<graphics.h> #include<conio.h> #include<dos.h> #include<math.h> void drawBall(struct ball *b, int color); struct ball{ int x, y; int dx, dy; int radius; }; void main() { int gd=0, gm=VGAHI; int i; struct ball b[10]; initgraph(&gd, &gm, ""); for(i=1;i<=15;i++){ b[i].radius = rand()%20; b[i].x=rand()%getmaxx(); b[i].y=rand()%getmaxy(); b[i].dx=2; b[i].dy=4; } while(!kbhit()) { delay(5); cleardevice(); for(i=1;i<=15;i++) drawBall(&b[i],i); } closegraph(); } void drawBall(struct ball *b, int color){ setfillstyle(1,color); setcolor(color); fillellipse(b->x, b->y, b->radius, b->radius); if(b->x+b->radius > getmaxx() || b->x-b->radius<0) b->dx = -b->dx; if(b->y+b->radius > getmaxy() || b->y-b->radius<0) b->dy = -b->dy; b->x+=b-...

Simple Animation Using C

Here i have used fillpoly function to draw the object body and used fillellipse function to draw tier. animation is done by looping through the objects x & y position until user hits a key. Keypress event is achived  by using kbhit function. Smoothness of animation is controlled by delay function. Change the delay values to change the animation speed Source: #include<stdio.h> #include<conio.h> #include<graphics.h> #include<dos.h> void main() { int gd=DETECT,gm,i=-300,j; int poly[16]={100,100,250,100,250,50,300,50,325,90,325,140,100,140,100,100}; int tpoly[16]={100,100,250,100,250,50,300,50,325,90,325,140,100,140,100,100}; initgraph(&gd,&gm,""); getch(); while(!kbhit()) { for(j=0;j<16;j+=2) { poly[j]=tpoly[j]+i; } fillpoly(8,poly); setfillstyle(5,7); bar(275+i,60,295+i,85); setfillstyle(5,8); fillellipse(140+i,140,20,20); fillellipse(280+i,140,20,20); setfillstyle(1,0); fillellipse(140+i,140,10,10); fillellipse(280+i,140,10...

Things you may not know about CSS

Grammatical error like style using CSS: .grammar{ -moz-text-decoration-color: green; -moz-text-decoration-line: underline; -moz-text-decoration-style: wavy; text-decoration-color: green; text-decoration-line: underline; text-decoration-style: wavy; } Output : CSS 'empty-cells' Property table{ empty-cells:hide; }    CSS @supports  Usually we do CSS feature-test using JavaScript. Now it can be done in CSS with a new property '@supports' . So for Firefox 22+ , Chrome 28+, Opera 12.1+ supports this feature. So we can look forward to using it soon! Example: /* basic usage */ @supports(prop:value) { /* more styles */ } /* real usage */ @supports (display: flex) { div { display: flex; } } /* testing prefixes too */ @supports (display: -webkit-flex) or (display: -moz-flex) or (display: flex) { section { display: -webkit-flex; display: -moz-flex; display: f...