Fast 2d geometry math: Vector2, Rectangle, Circle, Matrix2x3 (2D transformation), Circle, BoundingBox, Line2, Segment2, Intersections, Distances, Transitions (animation/tween), Noise, Random numbers.
So the objective is "Be fast"
Performance is based on good practices.
create
& clone
methods should create new variables.Vec2.add
=> vec2_add
, even Math.*
for(i...) carr=arr[i]; carr[X]
forEach
, map
, every
etc. or other looping method that require apply
/call
usage, both are costly.See some performance test that prove it.
funlinify It's a library that do function inline expansion for javascript. It's in early stage but it works perfectly for our usage here.
Obviously I ignore myself in some parts of this library. Feel free to issue me :)
npm install -g grunt
npm install -g grunt-cli
Create distribution packages using browserify and documentation.
debug: debug/js-2dmath-browser-debug.js
dist: dist/js-2dmath-browser.js
dist.min: js-2dmath-browser.min.js
Watch every change and rebuild the distribution code.
See some examples.
The documentation is autogenerated with falafel see dist.js for more fun! :)
How do i know a variable type?
You can't, there is no instanceof or anything like that, everything are numbers/arrays.
I choose to keep track of all types using meaningful naming or enclose the variable in an object like
var movable = {
body: Polygon.create(/*...*/), // could be a circle, change the type...
type: "polygon"
}