Giter Site home page Giter Site logo

box2d's People

Contributors

erincatto avatar

Watchers

 avatar  avatar

box2d's Issues

Static Bodies cannot be repositioned.

What steps will reproduce the problem?
1. Create a static body
2. Try to set its transform
3. Transform does not get updated (early return for static entities).

What is the expected output? What do you see instead?

I expect to be able to reposition static bodies.  This is key for making a 
dynamic live level editor or even controlling physics entities after they 
have been created.


What version of the product are you using? On what operating system?

r30 (found this after I ported r30 to Box2D.XNA)


Please provide any additional information below.

It seems like an arbitrary constraint to limit setting transforms on 
static entities.

I want zero-mass, zero-velocity body but i want to be able to set it's 
position/rotation after it has been created.  This comes up in level 
editor scenarios or even with our ZoomEngine entity system (we create the 
entity, which creates corresponding physics bodies, then later the 
position is set).  Kinematic bodies reduces the need for us to use static 
entities in many cases, but for the zero-velocity case we still want 
static, and want to reposition them sometimes.

In my port I removed this early return in Body.SetTransform and I'm back 
to the behavior I want without any negative effects on the rest of the 
system.


Original issue reported on code.google.com by [email protected] on 7 Dec 2009 at 2:17

Spring "joint"

There should be a spring joint supporting hooke's law, and damping.
Obviously a massively useful component, but I discussion I had with
Chipmunk's slembcke convinced me that the damping part is not well/easily
implemented by users outside of the joint system, as damping is essentially
a velocity constraint, like motors.

Original issue reported on code.google.com by [email protected] on 29 Nov 2009 at 3:22

Lack of easy way to change mass during run-time

What version of the product are you using? On what operating system?
r17, I don't think this has changed since.

Please provide any additional information below.
Would like a `SetDensity` or `SetMassFromDensity` function on either b2Body
or b2Fixture. Setting the mass manually with `SetMassData` is okay, but it
requires us to know how to compute the mass and inertia from only a density
value, which can be confusing.

A case where it would be nice to be able to do this is when a body changes
from one material into another, like in Kirby Super Star, where Kirby
changes into stone, or perhaps when water turns into ice; a user may want
to change its density during run-time.

A code example:
b2BodyDef bd;
b2Body *kirby = world->CreateBody(&bd);
// ... add some fixture data, set density to 0.3 so that kirby is nice and
fluffy
body->SetMassFromDensity(10); // omg, kirby just turned to stone and
suddenly got really heavy so now he can crush his opponents!

Original issue reported on code.google.com by [email protected] on 22 Sep 2009 at 12:28

[Improvement] Overlapping test for shapes.

Precise overlap tests are possible using the b2Collide* set of functions,
but this is a little unwieldy to use for something so often desired. Could
this be wrapped in a helper function of signature similar to:
bool b2TestOverlap(b2Transform,b2Shape*,b2Transform,b2Shape*);
Perhaps more information than just a boolean should be made available.

This is mainly useful for use in conjunction with b2World::Query, but is
also useful in its own right.

Original issue reported on code.google.com by [email protected] on 22 Sep 2009 at 7:32

Support for b2Controller in b2World and b2Body

What steps will reproduce the problem?
1. Download latest from SVN and try to create any of the included controllers.
2.
3.

What is the expected output? What do you see instead?
The b2World::CreateController / DestroyController functions do not exist.
This means there is no facility for adding controllers to the simulation.

Please provide any additional information below.
I have to go through a lengthy process to patch Box2d to support
b2Controllers everytime I upgrade to the latest source code. It would be
nice if Box2d supported controllers in the trunk version.


Original issue reported on code.google.com by [email protected] on 28 Nov 2009 at 9:25

Infinite loop in SetFilterData()

What steps will reproduce the problem?
1. Create a body
2. Wait for contacts
3. Call SetFilterData on one of the fixtures

What is the expected output? What do you see instead?

The operation might take some time, but it shouldn't go in an infinite loop.

It seems that SetFilterData() is trying to loop through all contact edges,
but only loop through the first one :

[code]
void b2Fixture::SetFilterData(const b2Filter& filter)
{
    m_filter = filter;

    if (m_body == NULL)
    {
        return;
    }

    // Flag associated contacts for filtering.
    b2ContactEdge* edge = m_body->GetContactList();
    while (edge)
    {
        b2Contact* contact = edge->contact;
        b2Fixture* fixtureA = contact->GetFixtureA();
        b2Fixture* fixtureB = contact->GetFixtureB();
        if (fixtureA == this || fixtureB == this)
        {
            contact->FlagForFiltering();
        }
    }
}
[/code]

I added this line at the end of the loop and it seems to work well :

[code]
edge = edge->next;
[/code]

I'm using the google repository at revision 22.

I tried to use SetFilterData to modify the categoryBits to prevent
collisions between some objects after they reach a certain state (ie : die).
Maybe that's not even the right way..

Original issue reported on code.google.com by [email protected] on 27 Oct 2009 at 11:15

e_fixedRotationFlag incorrect?

In b2Body.h on line 334 (in m_flags definition) the following is defined:
e_islandFlag = 0x0001,
e_sleepFlag = 0x0002,
e_allowSleepFlag = 0x0004,
e_bulletFlag = 0x0008,
e_fixedRotationFlag = 0x0010

I believe that "e_fixedRotationFlag = 0x0010" is incorrect as 10 would be
the sum of 2 and 8. Should this be 0x0016 instead?

Original issue reported on code.google.com by [email protected] on 13 Oct 2009 at 8:43

SetXForm() and ApplyForce() cause unexpected angles

What steps will reproduce the problem?
1. Manually set the angle with SetXForm()
2. use ApplyForce() on the center of mass to avoid torque

The angle should then still be whatever is entered in SetXForm(), but
changes to very different values.

This bug was identified in box2d version 2.0.1 with the attached testbed
example.

Original issue reported on code.google.com by [email protected] on 12 Oct 2009 at 5:21

Attachments:

Impossible to implement Glenn Fiedler's "fix your timestep"

As forces are reseted after returning from b2World::Step(), and there is no
way to backup and restore them, is impossible to implement the Glenn
Fiedler's technique "fix your timestep" (used also by Bullet).

The technique allows to use a fixed time step with the physics system
(maintaining a good numerical stability) while having a variable frame-rate
game, keeping the physics in sync with the real clock.

Proposed solutions:
- Add accessors to b2Body to backup and restore applied forces.
- Modify b2World::Step() with a flag to know if it have to reset applied
forces. This allows to perform minor physics logic (as controllers) between
subsequent calls to Step() (in the same game tick).

Some other details in
http://www.box2d.org/forum/viewtopic.php?f=4&t=3973&start=0 .

Original issue reported on code.google.com by [email protected] on 19 Nov 2009 at 12:47

[request] Make "b2AABB::Contains()" const.

b2AABB::Contains() can become const. It can then process const AABBs of
which there are plenty of floating around!

/// Does this aabb contain the provided AABB.
   bool Contains(const b2AABB& aabb) const <-- CONST!
   {
      bool result = true;
      result = result && lowerBound.x <= aabb.lowerBound.x;
      result = result && lowerBound.y <= aabb.lowerBound.y;
      result = result && aabb.upperBound.x <= upperBound.x;
      result = result && aabb.upperBound.y <= upperBound.y;
      return result;
   }

Original issue reported on code.google.com by [email protected] on 18 Aug 2009 at 6:43

[request] Adding accessor to b2Fixture for "m_aabb".

After performing a world-query and given the returned fixture-set I'd like
to perform a further check to cull fixtures that are not completely
encapsulated by the AABB. To do this quickly, I'd like to gain access to
the fixtures' AABB.

Therefore it would be very handy to be able to gain read-access to the
synchronized AABB for a fixture directly with something like:

inline const b2AABB& b2Fixture::getAABB( void ) const
{
    return m_aabb;
}

I have made this modification but it'd be great to have it in the trunk.

Thanks in advance!

Original issue reported on code.google.com by [email protected] on 18 Aug 2009 at 6:46

Missing function definitions

The following functions are lacking definitions.

class b2FrictionJoint{
    void SetMaxForce(float32 force);
    float32 GetMaxForce() const;
    void SetMaxTorque(float32 torque);
    float32 GetMaxTorque() const;
}



Original issue reported on code.google.com by [email protected] on 28 Nov 2009 at 10:55

[Improvement]

Removed redundant legacy code in "b2World.h":

/// Get the number of controllers.
int32 GetControllerCount() const;

Original issue reported on code.google.com by [email protected] on 18 Aug 2009 at 6:50

Complete rename of "XForm" to "Transform"

What steps will reproduce the problem?
1. Do a search for XForm and use the word Transform instead for function
names etc...

What version of the product are you using? On what operating system?
Latest trunk r21

Original issue reported on code.google.com by [email protected] on 21 Sep 2009 at 7:36

Static Bodies cannot be repositioned.

What steps will reproduce the problem?
1. Create a static body
2. Try to set its transform
3. Transform does not get updated (early return for static entities).

What is the expected output? What do you see instead?

I expect to be able to reposition static bodies.  This is key for making a 
dynamic live level editor or even controlling physics entities after they 
have been created.


What version of the product are you using? On what operating system?

r30 (found this after I ported r30 to Box2D.XNA)


Please provide any additional information below.

It seems like an arbitrary constraint to limit setting transforms on 
static entities.

I want zero-mass, zero-velocity body but i want to be able to set it's 
position/rotation after it has been created.  This comes up in level 
editor scenarios or even with our ZoomEngine entity system (we create the 
entity, which creates corresponding physics bodies, then later the 
position is set).  Kinematic bodies reduces the need for us to use static 
entities in many cases, but for the zero-velocity case we still want 
static, and want to reposition them sometimes.

In my port I removed this early return in Body.SetTransform and I'm back 
to the behavior I want without any negative effects on the rest of the 
system.


Original issue reported on code.google.com by [email protected] on 7 Dec 2009 at 2:17

  • Merged into: #47

Missing function b2Fixture::GetDensity()

What steps will reproduce the problem?
1. Call b2Fixture::GetDensity() anywhere
2. Compile and link, you will get LNK2001: unresolved external symbol

What is the expected output? What do you see instead?
The function declaration b2Fixture::GetDensity() is missing. It looks like
this:

We need to add this to b2Fixture.h:

inline float32 b2Fixture::GetDensity() const
{
    return m_density;
}

What version of the product are you using? On what operating system?
Latest from SVN as of Nov27 09.


Original issue reported on code.google.com by [email protected] on 28 Nov 2009 at 10:31

b2Contact problem

I use
world->GetContactCount();  
I Get integer number 23
But 
when I use
for(b2Contact *c;c;c->GetNext())
{
  // do something
}

is Loop again and again


why  is anything wrong with me?
or something with Box2D 

Original issue reported on code.google.com by [email protected] on 24 Sep 2009 at 3:59

world.step() crashes when contact listener is set

See also: http://www.box2d.org/forum/viewtopic.php?f=4&t=3618

What steps will reproduce the problem?
1. take http://www.box2d.org/wiki/index.php?title=Sample_code
2. create: MyListener.hpp

   class MyListener : public b2ContactListener {
   public:
      void Add(const b2ContactPoint* point) {
           // handle add point
       }

      void Persist(const b2ContactPoint* point) {
           // handle persist point
       }

      void Remove(const b2ContactPoint* point) {
           // handle remove point
       }

       void Result(const b2ContactResult* point) {
           // handle results
       }
   };

3. add to HelloWorld.cpp:

   #include "MyListener.hpp"
   ...
   MyListener listener;
   world.SetContactListener(&listener);


What is the expected output?
   Read collisions from world through MyListener

What do you see instead?
   Program crashes when first collision is introduced

What version of the product are you using? On what operating system?
   Box2D: 2.0.2 (from svn: branches/groundzero rev. 228)
   System: Arch Linux 2.6.30.5-1
   Compiler: gcc 4.4.1-1

Original issue reported on code.google.com by [email protected] on 26 Aug 2009 at 7:42

Maybe they are not bugs.

When porting box2d to actionscript, I found some problems, but because I 
didn't study the code deeply, so maybe they are designedly.

1. Possible a contact is passed to contactListerner.BeginContact, but 
never passed to contactListerner.EndContact, even if it has been destroyed:
a. one case: the contact is a touched in last step, but in current step, 
even the aabbs are not overlapped, then the contact is destroyed, so the 
EndContact is not called for this contact.
b. other reasons make the contact destroyed:
  - some Destroy (contact)s in contactManager.Collide
  - destroy fixtures

2. SyaGoodbye is not called in body.DestroyFixture and body.DestroyJoint. 
Maybe this is deliberately.

3. Should "BufferMove (fixture)" also be called when a body become dynamic 
from static? Image a situation: in a non-gravity enviroment, two static 
shapes are ovelapped, then make one dynamic. Seems now no contacts will be 
created between them.

4. Should ContactListener.PreSolve () only be called when (contact.m_flags 
& e_touchingFlag) != 0 && newCount > 0 

5. If I change the ShouldCollide rules runtimely, how can I make the core 
api knows this change and call FlagForFiltering?

6. Can I change joint.m_collideConnected runtimely, if true, how can I 
make the core api knows this change and call FlagForFiltering?

7. About the body mass, if there is only one shape with zero density in a 
body, then the body is static, but if another shape with non-zero density 
is added to the body, the body will become dynamic. If it is the design, 
no problems here. I just thnk it is more reasonable to make the body 
static only if there is a zero denstiy shape in the body.

That is all, maybe I'm wrong on these points.

btw, I like the new broadphase very much!


Original issue reported on code.google.com by [email protected] on 29 Sep 2009 at 11:23

Suggestion: b2Contact::Disable should persist multiple timesteps.

http://www.box2d.org/forum/viewtopic.php?f=3&t=3686&sid=93c7be4b866443e7451c17ef
fa91190f

I can't think of any reason anyone would disable a contact, and then want
to re-enable it later (until after an EndContact event). Lets say you try
to make one-sided platforms by inspecting the contact normal and calling
disable(). You'll have to call disable() each timestep, but the contact
normal changes each timestep! I went down this route, but noticed my
objects would "pop" to the other side of the platform once the normal
reversed direction. 

Of course I could use SetSensor() to functionally disable the contact, but
that may cause confusion later when mixing this method with genuine
sensors. Perhaps a persistent Disable() along with a persistent Enable()
would be a nice solution?

Original issue reported on code.google.com by [email protected] on 14 Sep 2009 at 3:37

Release should have .html API docs

No one likes .chm files.
Ideally, the latest release's docs should be available online as well. This
helps for perusing a project before you start, and posting references to
others when asked for help in the forums.

Original issue reported on code.google.com by [email protected] on 23 Aug 2009 at 10:35

Infinite Loop

See http://box2d.org/forum/viewtopic.php?f=4&t=3549

Original issue reported on code.google.com by [email protected] on 10 Aug 2009 at 5:37

Narrow Shapes can Slip Through Edge Polygons

Playing around on rev 31, I've found that you can push thin polygons
through a static edge polygon.

Shouldn't CCD prevent this behavior? (Yes, CCD was on.)


Screenshot attached of the Polygon Shapes test. I just moved the square
around and pushed the falling shape through.

Original issue reported on code.google.com by [email protected] on 8 Dec 2009 at 11:46

Attachments:

b2Body::SetFixedRotation not working

1. create a body, with shapes and set fixed rotation to true
2. during runtime, after b2World->Step() call b2Body::SetFixedRotation

the body should rotate if an impulse/force is applied to it, however it will 
not.


Box2D Version 2.0.2 running on windows vista, compiled with visual c++ 2008

Original issue reported on code.google.com by [email protected] on 4 Sep 2009 at 6:07

"b2DynamicTree::Query(T* callback, const b2AABB& aabb) const" has 128 element hard limit

Occasionally I am encountering a hard-limit in the dynamic tree which I
believe happens when a query is made when too many objects exist close
together within the dynamic tree?   Sometimes this happens when something
has gone wrong on my end (or the users end) of things accidentally causing
objects to coexist close to each other.  Getting an assert (and therefore a
crash) in this instance is quite painful to the end-user as well as being
cryptic.

The dynamic tree has a hard limit in both the "Query()" and "RayCast()"
methods of 128 objects in the stack which results (typically) in 1K stack
usage.   If I bump this to 512 (4K) then this gets around most problems.

I am requesting that either we remove this hard limit completely or provide
either a central configuration for this value (b2Settings) or remove the
assert and provide some "overflow" feedback.

Original issue reported on code.google.com by [email protected] on 20 Nov 2009 at 8:51

b2QueryCallback::ReportFixture ignores return value?

What steps will reproduce the problem?
perform a b2World::Query and return false from ReportFixture

What is the expected output? What do you see instead?
expect ReportFixture to only return one fixture (fire once per query)

What version of the product are you using? On what operating system?
box2d 2.0.2, rev4, ubuntu 9.04 64-bit

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 6 Sep 2009 at 2:35

[request] Use delegates for callbacks

While interface objects do work, I suggest using something like <a
href="http://www.codeproject.com/KB/cpp/FastDelegate.aspx">FastDelegate</a>
as it would allow more flexibility when implementing callbacks and reduce
the virtual function call overhead.  Delegates would have the advantage of
allowing free functions, static methods, non-virtual methods, and virtual
methods with arbitrary names so long as they match the function signature.
 Choice is good.  :)

(I use FastDelegate extensively, so I could implement a demonstration
version without too much trouble.)

Original issue reported on code.google.com by kennethdmiller3 on 31 Aug 2009 at 2:50

RayCast Edge Polygons

What steps will reproduce the problem?
1. Make an edge polygon
2. Trace a ray through it


What is the expected output? What do you see instead?
Test should always pass, but it passes only sometimes.

What version of the product are you using? On what operating system?
rev22, Windows, VC++2008

Please provide any additional information below.
The bug is between the 249 and 252 lines of b2PolygonShape.cpp

        if (upper < lower)
        {
            return;
        }

In case of edged polygon upper is equal to lower excluding floating point 
error. Due to this error the test passes/fails randomly

Possible solution is to use "upper - level < EPSILON" or to process the 
case of 2 vertices (an edge) separately.

Original issue reported on code.google.com by [email protected] on 15 Oct 2009 at 9:49

distance test uses GL code, and it should not

The DistanceTest has openGL code in it.

Test should not have any openGL code, instead they should call DebugDraw
method instead.

Since DistanceTest uses OpenGL code it can't be used within iPhone since
iPhone doesn't support OpenGL (but OpenGL ES)

Original issue reported on code.google.com by [email protected] on 21 Sep 2009 at 9:56

Error in b2Distance.cpp

m_v2.a = d12_1 * inv_d12;
in b2Distance.cpp:358 should be
m_v2.a = d12_2 * inv_d12;

If you examine other code blocks starting with //enn for n in 1,2,3, you'll
see it's out of place.

Original issue reported on code.google.com by [email protected] on 18 Oct 2009 at 5:56

Previous frame inner to this frame (gdb could not unwind past this frame)-iPhone/Cocos2d

Strange bug, using the Box2d template with 0.8.2 build of cocos2d for the 
iphone.  After a while, 
(but not every time) the simulator locks up and the error in the log of: 


...
2009-10-23 22:58:07.314 Castle[12599:20b] Add sprite 273.00 x 230
[Session started at 2009-10-23 22:58:17 -0500.]
GNU gdb 6.3.50-20050815 (Apple version gdb-967) (Tue Jul 14 02:11:58 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin".sharedlibrary apply-load-rules 
all
Attaching to process 12599.
Previous frame inner to this frame (gdb could not unwind past this frame)
Previous frame inner to this frame (gdb could not unwind past this frame)
kill
quit

The Debugger has exited with status 0.


The error happens for me about 5% of the time, and seems more likely right when 
a box is 
added.  It also seems to be more likely to happen with more boxes (never seen 
it with less than 
20).  I have never caught it on debug on actually hardware, but I have 
experienced the lock.

I have put trace comments in all over the place, and cannot find where it is 
happening that way, 
but removing the world->step seems to eliminate the error.  I have tried to run 
with guard 
malloc on to find memory issues, but alas it will not crash with guard malloc 
on.  I have tried 
fixed framerate, no help.   



Original issue reported on code.google.com by [email protected] on 24 Oct 2009 at 4:59

b2TimeOfImpact with shapes starting overlapped

What steps will reproduce the problem?
1. Create two overlapped polygonal shapes.
2. Calculate b2TimeOfImpact (I have one static and one moving object)

What is the expected output? What do you see instead?
The documentation of the function states that "fraction=0 means the shapes
begin touching/overlapped", but I get fraction 1.0 when the shapes start
overlapped.

What version of the product are you using? On what operating system?
Latest SVN (rev 31)

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 10 Dec 2009 at 9:29

Impossible to distinguish contacts with sensors or disabled bodies from b2World::GetContactList()

Iterating over b2World::GetContactList(), a b2Contact with a sensor satisfy the 
following 
assertions:
- IsTouching() returns true
- IsSolid () returns false
The same is true for a disabled contact.

From this is impossible to know if the contact have been disabled or if it's a 
normal contact with 
a sensor.

As this information is already stored in the protected flags of b2Contact, a 
method IsDisabled() 
(or IsSensor()) would allow a simple identification of those cases.

Regards,
    Daniele.


Original issue reported on code.google.com by [email protected] on 9 Nov 2009 at 3:29

suggestion: a b2WorldDef class

so that we can use "new b2World (const b2WorldDef& worldDef)" to create a
world. Doing this will make box2d more extensible. The parameter can be
null, in which case b2World will create a default b2WorldDef to use.


Original issue reported on code.google.com by [email protected] on 1 Oct 2009 at 8:08

Non-core Joints

Please refactor the library to facilitate extra joint types as a runtime
addition.

Details of the proposed implementation can be found here:
http://www.box2d.org/forum/viewtopic.php?f=4&t=3970

Original issue reported on code.google.com by [email protected] on 17 Nov 2009 at 7:58

Body/Joint deactivation

See http://www.box2d.org/forum/viewtopic.php?f=3&t=3880&view=unread#unread
As discussed there are various reasons for being able to mark bodies and
joints as not participating in any physics.

Original issue reported on code.google.com by [email protected] on 7 Nov 2009 at 7:04

Collision wonky after changing static properties

What steps will reproduce the problem?
Create a non-static body. Run a few steps of the simulation. Set it to
static (0 density). Other objects won't collide with it anymore.

What is the expected output? What do you see instead?
Objects should collide; they don't. At least not properly.. they sort of
slow down but pass through like jelly.

What version of the product are you using? On what operating system?
2.1.0; Linux version 2.6.28-15-generic running on amd6

Please provide any additional information below.

Sample code:

void Object::setDensity(qreal dens) {
    Q_ASSERT(m_body != NULL);
    if(dens != density()) {
        for(b2Fixture *f = m_body->GetFixtureList(); f; f = f->GetNext()) {
            f->SetDensity(dens);
        }
        m_body->SetMassFromShapes();
        emit propertyChanged();
    }
}

Original issue reported on code.google.com by [email protected] on 6 Sep 2009 at 3:56

no b2PrismaticJoint::GetMaxMotorForce

(as posted on the main forum)
On the latest svn revision, b2PrismaticJoint doesn't provide getter to the
current value of m_maxMotorForce.

The setter, however, is available.

I think this is valuable information and should be added to the API.

I've done it on my local repository, so I'm providing a patch.

Original issue reported on code.google.com by [email protected] on 16 Nov 2009 at 12:06

Attachments:

Patch: compilation warnings

Files #including Box2D, results in a lot of "Statement has no effect" warnings 
due the definition of 
"B2_NOT_USED" macro.

The attached patch solves 2 "issues":
- fixes the definition of B2_NOT_USED macro;
- defines B2_NOT_USED and b2Assert macros only if those are not already 
defined; this allows to set 
those macros at project-level (through external compiler flags) without having 
to modify Box2D 
source code.

Regards,
    Daniele.

Original issue reported on code.google.com by [email protected] on 30 Nov 2009 at 7:40

Attachments:

[request] Enhanced world query

It would be nice if we could query all the *bodies* in a certain area,
rather than just the fixtures (I don't want body dupes). Also, it would be
nice if it were *precise* (doesn't just look at the bounding boxes, but
checks if the actual shape is inside or touches the AABB).

Original issue reported on code.google.com by [email protected] on 6 Sep 2009 at 2:43

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.