Giter Club home page Giter Club logo

grraf's Introduction

grraf

The vision for Grraf is based in fun and science and exploration.

It began as an exploration of the Canvas JavaScript API and continued as a way for me to explore physics and creative interactive things for fun.

My hope is that it will continue to evolve as an actual tool to explain and visualize things (mathematical, statistical, physical, and strange). Also- I should add some 3d support someday.

-Shane

Install

npm install --save grraf

The Basics

import { Stage, Circle, Color } from "grraf";

// either an actual Canvas element or any containing html element can be supplied.
// if a container is supplied, a Canvas will be added to the container
const stage = new Stage(document.getElementById("container"));

// any built-in shape (or your custom class that extends Shape) can be created on the stage.
// initial shape properties can be provided (which are typed to the shape!)
const circle = stage.createShape(Circle, { radius: 5 });

// properties can also be updated "fluently"
circle.setColor(new Color(255, 40, 30))
    .setPosition({ x: 100, y: 200 });

// don't forget to draw!
stage.draw();
        

Animations

// (^ continued from previous code snippet ^)

//  animate a shape by defining transitions for a property (setting values for specific key-frames)
const animation = stage.animate(circle)
    // these values are also typed based on the property!!!
    .transition("fill",
        { 
             200: Color.white, 
            2500: Color.black, 
            4000: new Color(247, 24, 120) 
        }
    )
    .transition("radius",
        {
               0: 20, // at 0 seconds, radius is 20 pixels
            1500: 40, // at 1.5 seconds, the radius is 40 pixels (etc)
            2500: 80,
            4000: 20
        },
        TimingFunction.EaseInOutCubic // timing functions may be used
    )
    .create({ repeat: true }); // <- animation options can also be supplied (i.e. repeat);

animation.start();

// want to do something when you're done?
animation.then(() => { console.log("I'm done animating!"); });

// need to stop?
animation.cancel();
  • currently supports numeric properties, position ({x, y}), and Colors

grraf's People

Contributors

skeryl avatar dependabot[bot] avatar

Stargazers

Dave Sexton avatar  avatar

Watchers

James Cloos avatar  avatar  avatar

grraf's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.