GithubHelp home page GithubHelp logo

geom2.js's Introduction

Geom2.js

npm test status Github Star

Geom2.js is a high-performance javascript 2d geometry library written in modern TypeScript.

It was extracted from the server-side code of a multi-player game. It is intended to be used in games, ai or any computation heavy task in javascript.

In a game application, it can be used for collision detection, artificial intelligence (steering and path finding), server-client viewport optimization.

Difference from Physics Engines

Most physics engines bundles all the physics related data structure and algorithm together. It makes setup easy but it limits the flexibility of the application or games. Because in lots of scenario except physics simulation, objects are not intended to move according to physics laws.

This library is much light weight than a physics engine, and gives users a customizable environment to setup their own 2d world.

Install

npm install

npm install geom2.js

browser install

Copy example/geom2.min.js or build yourself

Examples

Check test folder

We provide a QuadTree example here.

QuadTree

More examples will come up later.

Structure:

  • Vector
  • Segment
  • Shap
    • AABB (Axis-Aligned Bounding Box)
    • Arc
    • Circle
    • Polygon

Algorithm:

  • Common
    • Collision detection between shapes.
      • GJK (Gilbert–Johnson–Keerthi)
      • SAT (Separation Axis Theorem)
    • Convex Polygon test
    • Convex Hull
  • Generation
    • Random convex polygon generation
  • Advance
    • Field of view scanning (line sweeping)

Container:

  • Loose QuadTree
    • High-quality quadtree implementation
    • It can store AABB (Axis-Aligned Bounding Box).
    • No elements on branch nodes, all data on leaves.
    • It maintains loose boundary on all nodes.
    • It outperforms simple-quadtree and all other available js quadtree.

Addition Feature:

  • Physics Collision Resolution

TODO

  • Special handling circle-polygon and circle-circle collision

geom2.js's People

Contributors

alchemist0823 avatar dependabot[bot] avatar kodyin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

gonnavis

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.