Categories

Blog

Simple Polygon Simplification

When simulating physical interaction between objects, there are many tradeoffs used to keep performance acceptable for realtime scenarios. The geometry of an object, or it’s shape, is no exception. To accelerate calculations, collision detection systems will enforce rules about what types of shapes are supported - a key example is Convexity. Not all objects are convex, and you might even argue that most aren’t, but we can combine these convex pieces to create non-convex objects.

Posted on June 10, 2021

A Faster Broadphase in dyn4j 4.0.0

Version 4.0.0 had a lot of changes to the API to support better extensibility, testability, and maintainability, but the biggest change was the 30-40% improvement in performance. This type of of performance gain is huge and a boon for sure for all those using the library - but just how was it done?

Posted on May 02, 2021

WordPress to GitHub Pages

In my last post where I talked about the reasons for moving the dyn4j site to GitHub Pages and off of WordPress, I mentioned another post to describe the technical details of the move - this is it! Seriously though, it wasn’t trivial, but that’s in part due to some self-imposed (inflicted?) constraints.

Posted inNewsBlog
Tagged indyn4j

Posted on April 30, 2021

dyn4j.org Moved to GitHub Pages

After a long stint on WordPress I finally was feed up - not with WordPress so much as I explain below. WordPress has been a great solution for the time I’ve been using it. It made things really easy to setup and manage and it’s improved significantly over the years. However, there’s always been a few thorns in my side with this solution.

Posted inNewsBlog
Tagged indyn4j

Posted on April 26, 2021

Algorithmic and Architectural Gaming Design: Implementation and Development

Algorithmic and Architectural Gaming Design: Implementation and Development covers a myriad of game development topics. But what sets this book apart, in my opinion, is the focus on actual implementation.

Posted on June 04, 2012

dyn4j Project Setup Video

I finally got some time to create my first How-To video for the dyn4j project.  The first video describes how to setup a Java project in Eclipse to use dyn4j.  It’s short and hopefully to the point.

Posted on December 29, 2011

Contact Points Using Clipping

Many have asked “How do I get the contact points from GJK?” or similar on the SAT, GJK, and EPA posts. I’ve finally got around to creating a post on this topic. Contact point generation is a vital piece of many applications and is usually the next step after collision detection. Generating good contact points is crucial to predictable and life-like iteractions between bodies. In this post I plan to cover a clipping method that is used in Box2d and dyn4j. This is not the only method available and I plan to comment about the other methods near the end of the post.

Posted on November 17, 2011

How A Differential Gear Works

Had a friend of mine send me a link to this video on YouTube from the 1930’s explaining how a differential works. This video does a great job of explaining the concept and possibly the thought process that was used to develop it.

Posted inBlog
Tagged in

Posted on March 29, 2011

Prismatic Constraint

The next equality constraint we will derive is the prismatic constraint. A prismatic constraint is like the line constraint except it does not allow rotation about the anchor point. A prismatic constraint constraints the linear motion of the bodies along a line. An example of a prismatic joint is the slide of a semi-automatic pistol. The slide is moved back to charge the weapon, then released to its original position. The slide cannot rotate about the pistol, nor can it move up/down or left/right only along one axis.

Posted on March 12, 2011

The dyn4j TestBed Now Uses JOGL

I recently released a new version of the TestBed application (which is used to test the dyn4j project. In this new version I decided to move from Java2D to OpenGL.

Posted on February 05, 2011

Angle Constraint

The next equality constraint we will derive is the angle constraint. An angle constraint can be used to join two bodies forcing them to have the same rotation. This particular constraint will be added to other constraints (in later posts) to form more complex constraints.

Posted on December 30, 2010

Line Constraint

The next equality constraint we will derive is the line constraint. A line constraint is like a prismatic constraint (which will most likely be the next post) except allows rotation about the anchor point. A prismatic constraint constraints the linear motion of the bodies along a line. An example of a prismatic joint might be a roller coaster on the track. The cars cannot translate or rotate except along the track. For simplicity the prismatic constraint we will define is only for straight lines.

Posted on December 30, 2010

Pulley Constraint

The next equality constraint we will derive is the pulley constraint. A pulley constraint can be used to join two bodies at a fixed distance. In addition, the constraint can be used to simulate a block-and-tackle.

Posted on December 30, 2010

Weld Constraint

The next equality constraint we will derive is the weld constraint. A weld constraint can be used to join two bodies at an anchor point in which the bodies must move and rotate together (all DOF are constrained).

Posted on December 30, 2010

Max Distance Constraint

As a follow up post to the Distance Constraint post, we can also create a maximum distance constraint using the same solution we found in the Distance Constraint post.

Posted on December 18, 2010

Distance Constraint

The next equality constraint we will derive is the distance constraint. A distance constraint can be used to join two bodies at a fixed distance. It can also be used as a spring between two bodies.

Posted on September 11, 2010

A Few Services Ago

A few services ago we had one of our Youth Ministers preach. The topic wasn’t necessarily about the Biblical teaching of One God, however some verses used in the sermon really stand out:

Posted inBibleBlog
Tagged inBibleOne God

Posted on September 11, 2010

Equality Constraints

After the first release of the dyn4j project, I felt that it would be good to pass along what I learned about constrained dynamics. This is not an easy subject and aside from purchasing books there’s not much information out there about it for those of us not accustomed to reading research papers or theses.

Posted on July 24, 2010

Point-to-Point Constraint

As the first entry after the Equality Constraints post, we will perform the derivation of the Point-to-Point constraint, which models a Revolute Joint, in 2D.

Posted on July 24, 2010

EPA (Expanding Polytope Algorithm)

In the last few posts we learned about using GJK for collision detection, distance between shapes, and finding the closest points. It was stated that GJK must be augmented with another algorithm to find collision information like the penetration depth and vector. One such algorithm is EPA.

Posted on May 14, 2010

GJK, Distance, Closest Points

The last installment talked about the GJK algorithm as it pertains to collision detection. The original algorithm actually is used to obtain the distance and closest points between two convex shapes.

Posted on April 26, 2010

GJK (Gilbert–Johnson–Keerthi)

Today I’m going to talk about the other collision detection algorithm packaged with the dyn4j project. You can find a lot of GJK documentation but much of it is really technical mostly because they are research papers. I strongly recommend this video tutorial and to be honest you may not even need to read any further after watching. But if you feel you need more information after watching the video please read on.

Posted on April 13, 2010

SAT (Separating Axis Theorem)

This is a post I have been meaning to do for some time now but just never got around to it. Let me first start off by saying that there are a ton of resources on the web about this particular collision detection algorithm. The problem I had with the available resources is that they are often vague when explaining some of the implementation details (probably for our benefit).

Posted on January 01, 2010

Collision Detection

A Faster Broadphase in dyn4j 4.0.0

Version 4.0.0 had a lot of changes to the API to support better extensibility, testability, and maintainability, but the biggest change was the 30-40% improvement in performance. This type of of performance gain is huge and a boon for sure for all those using the library - but just how was it done?

Posted on May 02, 2021

Algorithmic and Architectural Gaming Design: Implementation and Development

Algorithmic and Architectural Gaming Design: Implementation and Development covers a myriad of game development topics. But what sets this book apart, in my opinion, is the focus on actual implementation.

Posted on June 04, 2012

dyn4j Project Setup Video

I finally got some time to create my first How-To video for the dyn4j project.  The first video describes how to setup a Java project in Eclipse to use dyn4j.  It’s short and hopefully to the point.

Posted on December 29, 2011

Contact Points Using Clipping

Many have asked “How do I get the contact points from GJK?” or similar on the SAT, GJK, and EPA posts. I’ve finally got around to creating a post on this topic. Contact point generation is a vital piece of many applications and is usually the next step after collision detection. Generating good contact points is crucial to predictable and life-like iteractions between bodies. In this post I plan to cover a clipping method that is used in Box2d and dyn4j. This is not the only method available and I plan to comment about the other methods near the end of the post.

Posted on November 17, 2011

EPA (Expanding Polytope Algorithm)

In the last few posts we learned about using GJK for collision detection, distance between shapes, and finding the closest points. It was stated that GJK must be augmented with another algorithm to find collision information like the penetration depth and vector. One such algorithm is EPA.

Posted on May 14, 2010

GJK, Distance, Closest Points

The last installment talked about the GJK algorithm as it pertains to collision detection. The original algorithm actually is used to obtain the distance and closest points between two convex shapes.

Posted on April 26, 2010

GJK (Gilbert–Johnson–Keerthi)

Today I’m going to talk about the other collision detection algorithm packaged with the dyn4j project. You can find a lot of GJK documentation but much of it is really technical mostly because they are research papers. I strongly recommend this video tutorial and to be honest you may not even need to read any further after watching. But if you feel you need more information after watching the video please read on.

Posted on April 13, 2010

SAT (Separating Axis Theorem)

This is a post I have been meaning to do for some time now but just never got around to it. Let me first start off by saying that there are a ton of resources on the web about this particular collision detection algorithm. The problem I had with the available resources is that they are often vague when explaining some of the implementation details (probably for our benefit).

Posted on January 01, 2010

Game Development

Simple Polygon Simplification

When simulating physical interaction between objects, there are many tradeoffs used to keep performance acceptable for realtime scenarios. The geometry of an object, or it’s shape, is no exception. To accelerate calculations, collision detection systems will enforce rules about what types of shapes are supported - a key example is Convexity. Not all objects are convex, and you might even argue that most aren’t, but we can combine these convex pieces to create non-convex objects.

Posted on June 10, 2021

A Faster Broadphase in dyn4j 4.0.0

Version 4.0.0 had a lot of changes to the API to support better extensibility, testability, and maintainability, but the biggest change was the 30-40% improvement in performance. This type of of performance gain is huge and a boon for sure for all those using the library - but just how was it done?

Posted on May 02, 2021

Algorithmic and Architectural Gaming Design: Implementation and Development

Algorithmic and Architectural Gaming Design: Implementation and Development covers a myriad of game development topics. But what sets this book apart, in my opinion, is the focus on actual implementation.

Posted on June 04, 2012

dyn4j Project Setup Video

I finally got some time to create my first How-To video for the dyn4j project.  The first video describes how to setup a Java project in Eclipse to use dyn4j.  It’s short and hopefully to the point.

Posted on December 29, 2011

Contact Points Using Clipping

Many have asked “How do I get the contact points from GJK?” or similar on the SAT, GJK, and EPA posts. I’ve finally got around to creating a post on this topic. Contact point generation is a vital piece of many applications and is usually the next step after collision detection. Generating good contact points is crucial to predictable and life-like iteractions between bodies. In this post I plan to cover a clipping method that is used in Box2d and dyn4j. This is not the only method available and I plan to comment about the other methods near the end of the post.

Posted on November 17, 2011

Prismatic Constraint

The next equality constraint we will derive is the prismatic constraint. A prismatic constraint is like the line constraint except it does not allow rotation about the anchor point. A prismatic constraint constraints the linear motion of the bodies along a line. An example of a prismatic joint is the slide of a semi-automatic pistol. The slide is moved back to charge the weapon, then released to its original position. The slide cannot rotate about the pistol, nor can it move up/down or left/right only along one axis.

Posted on March 12, 2011

The dyn4j TestBed Now Uses JOGL

I recently released a new version of the TestBed application (which is used to test the dyn4j project. In this new version I decided to move from Java2D to OpenGL.

Posted on February 05, 2011

Angle Constraint

The next equality constraint we will derive is the angle constraint. An angle constraint can be used to join two bodies forcing them to have the same rotation. This particular constraint will be added to other constraints (in later posts) to form more complex constraints.

Posted on December 30, 2010

Line Constraint

The next equality constraint we will derive is the line constraint. A line constraint is like a prismatic constraint (which will most likely be the next post) except allows rotation about the anchor point. A prismatic constraint constraints the linear motion of the bodies along a line. An example of a prismatic joint might be a roller coaster on the track. The cars cannot translate or rotate except along the track. For simplicity the prismatic constraint we will define is only for straight lines.

Posted on December 30, 2010

Pulley Constraint

The next equality constraint we will derive is the pulley constraint. A pulley constraint can be used to join two bodies at a fixed distance. In addition, the constraint can be used to simulate a block-and-tackle.

Posted on December 30, 2010

Weld Constraint

The next equality constraint we will derive is the weld constraint. A weld constraint can be used to join two bodies at an anchor point in which the bodies must move and rotate together (all DOF are constrained).

Posted on December 30, 2010

Max Distance Constraint

As a follow up post to the Distance Constraint post, we can also create a maximum distance constraint using the same solution we found in the Distance Constraint post.

Posted on December 18, 2010

Distance Constraint

The next equality constraint we will derive is the distance constraint. A distance constraint can be used to join two bodies at a fixed distance. It can also be used as a spring between two bodies.

Posted on September 11, 2010

Equality Constraints

After the first release of the dyn4j project, I felt that it would be good to pass along what I learned about constrained dynamics. This is not an easy subject and aside from purchasing books there’s not much information out there about it for those of us not accustomed to reading research papers or theses.

Posted on July 24, 2010

Point-to-Point Constraint

As the first entry after the Equality Constraints post, we will perform the derivation of the Point-to-Point constraint, which models a Revolute Joint, in 2D.

Posted on July 24, 2010

EPA (Expanding Polytope Algorithm)

In the last few posts we learned about using GJK for collision detection, distance between shapes, and finding the closest points. It was stated that GJK must be augmented with another algorithm to find collision information like the penetration depth and vector. One such algorithm is EPA.

Posted on May 14, 2010

GJK, Distance, Closest Points

The last installment talked about the GJK algorithm as it pertains to collision detection. The original algorithm actually is used to obtain the distance and closest points between two convex shapes.

Posted on April 26, 2010

GJK (Gilbert–Johnson–Keerthi)

Today I’m going to talk about the other collision detection algorithm packaged with the dyn4j project. You can find a lot of GJK documentation but much of it is really technical mostly because they are research papers. I strongly recommend this video tutorial and to be honest you may not even need to read any further after watching. But if you feel you need more information after watching the video please read on.

Posted on April 13, 2010

SAT (Separating Axis Theorem)

This is a post I have been meaning to do for some time now but just never got around to it. Let me first start off by saying that there are a ton of resources on the web about this particular collision detection algorithm. The problem I had with the available resources is that they are often vague when explaining some of the implementation details (probably for our benefit).

Posted on January 01, 2010

News

WordPress to GitHub Pages

In my last post where I talked about the reasons for moving the dyn4j site to GitHub Pages and off of WordPress, I mentioned another post to describe the technical details of the move - this is it! Seriously though, it wasn’t trivial, but that’s in part due to some self-imposed (inflicted?) constraints.

Posted inNewsBlog
Tagged indyn4j

Posted on April 30, 2021

dyn4j.org Moved to GitHub Pages

After a long stint on WordPress I finally was feed up - not with WordPress so much as I explain below. WordPress has been a great solution for the time I’ve been using it. It made things really easy to setup and manage and it’s improved significantly over the years. However, there’s always been a few thorns in my side with this solution.

Posted inNewsBlog
Tagged indyn4j

Posted on April 26, 2021

Version 4.1.0

This release sees some huge performance improvements for CCD (around 10x for large worlds). Along with the performance enhancements came improvements to CCD as a whole, a more generic broadphase, lots of additional unit tests and greatly improved test quality.

Posted inNewsRelease
Tagged indyn4j

Posted on February 04, 2021

Version 4.0.2

This version includes a few minor bug fixes for 4.0.1.  See the release notes for more details.

Posted inNewsRelease
Tagged indyn4j

Posted on October 15, 2020

Version 4.0.1

This version includes a few minor bug fixes for 4.0.0.  See the release notes for more details.

Posted inNewsRelease
Tagged indyn4j

Posted on September 25, 2020

Version 4.0.0

This version features a number of improvements to API (and deprecation) and massive performance improvements (30-40%) for large worlds.

Posted inNewsRelease
Tagged indyn4j

Posted on August 29, 2020

New Getting Started Video

I created a new getting started video (since the other one was so out of date).  In this video I opted for cloning the dyn4j-samples project in GitHub which turned out to be very simple – yielding a video less than 2 minutes.

Posted inNews
Tagged indyn4j

Posted on January 10, 2020

Version 3.4.0

This version is a significant update containing a number of important bug fixes and performance enhancements.  Big thanks go out to mtsamis for the contributions and interest.  NOTE: This version has a few breaking changes that you need to be aware of.

Posted inNewsRelease
Tagged indyn4j

Posted on January 10, 2020

Version 3.3.0

This release was focused on Java 9, OSGi, and Maven but also includes some behavior changes and performance improvements.

Posted inNewsRelease
Tagged indyn4j

Posted on April 15, 2018

Version 3.2.4

This is a maintenance release to fix the issue where the a Joint removed from a World cannot be added back or to a different world due to an internal member not being cleared.

Posted inNewsRelease
Tagged indyn4j

Posted on May 01, 2017

Version 3.2.3

This release fixes issues with the getRadius(Vector2) method for the Slice, Capsule, Ellipse, and HalfEllipse shapes under local rotation and fixes the detect(AABB) method in the Sap broadphase.

Posted inNewsRelease
Tagged indyn4j

Posted on September 04, 2016

Version 3.2.2

This release is primarily for a new collision shape called Link. This shape extends the existing Segment shape and provides for smooth sliding across chains of Links.

Posted inNewsRelease
Tagged indyn4j

Posted on June 19, 2016

Version 3.2.1

This is a maintenance release to fix a few critical bugs in the Polygon, Rectangle, and Segment classes for local rotations (see this post for details).

Posted inNewsRelease
Tagged indyn4j

Posted on November 23, 2015

Version 3.2.0

The primary goals for this release were performance enhancements and API clean up.  It took a lot longer than I had expected but I’m very happy with the results.  Highlights include improvements in the performance of collision detection and ray casting operations and a much cleaner public API and more thorough javadoc comments.

Posted inNewsRelease
Tagged indyn4j

Posted on September 30, 2015

dyn4j Moved to GitHub

Due to Google’s decision to drop Google Code, I’ve moved the project to GitHub.  In truth, I’ve been contemplating this for a while now, but have had reservations about lost version history.  I feel this will help others contribute bug fixes and allow them to create their own forks and branches easier than before.

Posted inNews
Tagged in

Posted on March 14, 2015

Version 3.1.11

This is a maintenance release of dyn4j that includes a bug fix for a StackOverflowException thrown from the raycast(Ray, double, boolean, boolean, List) method.  This release also includes some very minor performance tweaks. See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on January 31, 2015

Version 3.1.10

This is a maintenance release of dyn4j that includes some major bug fixes.  See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on July 20, 2014

Version 3.1.9

This release of dyn4j includes some major bug fixes for the SweepLine class and other related convex decomposition classes.  It also includes some enhancements to the World.detect methods.  See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on March 29, 2014

Version 3.1.8

This release of dyn4j is a maintenance release to fix a bug in the Vector2.distance(double,double) method.  It also had a few methods added to the Body class to get BodyFixture(s) at a given world space point.  See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on December 23, 2013

Version 3.1.7

This release of dyn4j is a maintenance release to fix bugs in the Ellipse.contains, Ellipse.getHalfHeight and HalfEllipse.contains methods.  This release also had a bug fix in the Graphics2DRenderer class.  See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on October 12, 2013

Version 3.1.6

This release of dyn4j is a maintenance release to fix a bug in the Segment.getSegmentIntersection method.  A new method, setSlackEnabled, was also added to the PulleyJoint class to support a rope like constraint.  See the changes in the release notes.

Posted inNewsRelease
Tagged in

Posted on October 06, 2013

Version 3.1.5

This release of dyn4j includes a number of new features including 4 new primitive shapes and convex casting.  In addition, a number of new helper methods have been added to the Geometry class.  See all the changes in the release notes.

Posted inNewsRelease
Tagged in

Posted on September 14, 2013

Version 3.1.4

This release of dyn4j is a small maintenance release to fix a bug introduced in 3.1.3. With this some flip methods have been added to the Geometry class to allow flipping of polygons about arbitrary axes and points.

Posted inNewsRelease
Tagged in

Posted on May 13, 2013

Version 3.1.3

This release fixes a bug in the Polygon inertia and center of mass calculations. This bug would also throw off multi-fixture body’s inertia. This bug would manifest if a polygon was created away from the origin. This version has no API changes.

Posted inNewsRelease
Tagged in

Posted on May 12, 2013

Version 3.1.2

This release of dyn4j is a small maintenance release to add unique contact ids to the engine. This allows you identify a contact throughout the ContactListener events (begin, persist, end, etc). You can test if a contact is the same as another by using the ContactId.equals method.

Posted inNewsRelease
Tagged in

Posted on November 09, 2012

Version 3.1.1

This release of dyn4j was focused on performance and the API. Many API changes, both breaking and non-breaking, have been made. See the Release Notes for more details. Many new small features have been made as well.

Posted inNewsRelease
Tagged in

Posted on July 21, 2012

Version 3.1.0

The latest release of dyn4j adds a number of new features. See the the release notes. It also contains a number of important bug fixes. On the other hand, the API has been changed slightly and may break code written against older versions.

Posted inNewsRelease
Tagged in

Posted on May 05, 2012

Version 3.0.3

Version 3.0.3 is a maintenance release with very few changes. The primary change was the move of the Settings class from being a singleton to being a member of the World class. This allows each instance of the World class to have different settings. The changes may break compatibility with previous versions, although they should be minimal.

Posted inNewsRelease
Tagged in

Posted on March 03, 2012

dyn4j Project Setup Video

I finally got some time to create my first How-To video for the dyn4j project.  The first video describes how to setup a Java project in Eclipse to use dyn4j.  It’s short and hopefully to the point.

Posted on December 29, 2011

Version 3.0.2

3.0.2 introduces significant changes in the Sandbox application along with some minor bug fixes to dyn4j and some new features. Specifically, small CCD improvements, a new fixture filter TypeFilter, and tangent speed settings on contacts. Bug fixes include: a fix to the Body.setMass(Mass.Type) method, auto-sleeping bug, and a rotation disc computation bug. In addition, both dyn4j and Sandbox have been internationalized (any volunteers for translating?).

Posted inNewsRelease
Tagged in

Posted on December 20, 2011

Version 3.0.1

3.0.1 incorporates many small changes. JUnit test, the TestBed and a new testing/demo application, Sandbox, have been moved around to better structure the project. Many major and minor bug fixes have been made. The most visible change is the normalization of the Joint class methods. In addition, the WeldJoint class now supports a soft joint setting.

Posted inNewsRelease
Tagged in

Posted on October 03, 2011

Version 3.0.0

3.0.0 incorporates big changes to the library. The base package has been changed, the broadphase collision detection code has been updated adding 3 new implementations, many bug fixes and performance enhancements, a new joint, better documentation, many more JUnit tests, new example applications, and more.

Posted inNewsRelease
Tagged in

Posted on June 05, 2011

The dyn4j TestBed Now Uses JOGL

I recently released a new version of the TestBed application (which is used to test the dyn4j project. In this new version I decided to move from Java2D to OpenGL.

Posted on February 05, 2011

Version 2.2.3

The new version, 2.2.3, features updated Javadocs, 3 different CCD modes, and a new JOGL based TestBed.

Posted inNewsRelease
Tagged in

Posted on January 29, 2011

Version 2.2.2

The new version, 2.2.2, features one more joint, AngleJoint and a few minor bug fixes. The RopeJoint has been extended to allow for a minimum distance in addition to the maximum distance. See the javadocs or source updates for more details.

Posted inNewsRelease
Tagged in

Posted on January 15, 2011

Version 2.2.1

The new version, 2.2.1, features one more joint, RopeJoint and a few minor bug fixes involving SecurityExceptions for sand-boxed environments. See the javadocs for more details.

Posted inNewsRelease
Tagged in

Posted on December 26, 2010

Version 2.2.0

The new version, 2.2.0, features convex hull and convex decomposition algorithms. Intended for use during runtime or for pre-processing. See the javadocs for more details.

Posted inNewsRelease
Tagged in

Posted on November 20, 2010

Version 2.1.0

The next release of dyn4j is ready! The new version, 2.1.0, features a new PulleyJoint and multi-threading support.

Posted inNewsRelease
Tagged in

Posted on September 23, 2010

Version 2.0.0

The next release of dyn4j is ready! The new version, 2.0.0, features CCD and ray casting.

Posted inNewsRelease
Tagged in

Posted on September 09, 2010

Version 1.1.0

A new release is ready with some significant changes, mainly very stable stacking thanks to Box2d’s contact block solver.

Posted inNewsRelease
Tagged in

Posted on July 29, 2010

Documentation Update

The latest version (1.0.3) has newly added documentation. Namely references to the open source project Box2d that I meant to have in before the first release. The @since and @version tags were also added so that differences in API versions are documented.

Posted inNews
Tagged in

Posted on July 24, 2010

dyn4j Is Released!

The first release of dyn4j is out!

Posted inNewsRelease
Tagged in

Posted on July 10, 2010

Version 0.7.2

It’s been a while and to be honest I haven’t completed much (as far as implementation). However, the current version of the project is now 0.7.2 so at least you can see we are getting closer to release. The latest version contains a number of improvements and two joints. The testbed received a little face lift and the tests have been tweeked for consistency.

Posted inNewsRelease
Tagged in

Posted on May 31, 2010

Release

Version 4.1.0

This release sees some huge performance improvements for CCD (around 10x for large worlds). Along with the performance enhancements came improvements to CCD as a whole, a more generic broadphase, lots of additional unit tests and greatly improved test quality.

Posted inNewsRelease
Tagged indyn4j

Posted on February 04, 2021

Version 4.0.2

This version includes a few minor bug fixes for 4.0.1.  See the release notes for more details.

Posted inNewsRelease
Tagged indyn4j

Posted on October 15, 2020

Version 4.0.1

This version includes a few minor bug fixes for 4.0.0.  See the release notes for more details.

Posted inNewsRelease
Tagged indyn4j

Posted on September 25, 2020

Version 4.0.0

This version features a number of improvements to API (and deprecation) and massive performance improvements (30-40%) for large worlds.

Posted inNewsRelease
Tagged indyn4j

Posted on August 29, 2020

Version 3.4.0

This version is a significant update containing a number of important bug fixes and performance enhancements.  Big thanks go out to mtsamis for the contributions and interest.  NOTE: This version has a few breaking changes that you need to be aware of.

Posted inNewsRelease
Tagged indyn4j

Posted on January 10, 2020

Version 3.3.0

This release was focused on Java 9, OSGi, and Maven but also includes some behavior changes and performance improvements.

Posted inNewsRelease
Tagged indyn4j

Posted on April 15, 2018

Version 3.2.4

This is a maintenance release to fix the issue where the a Joint removed from a World cannot be added back or to a different world due to an internal member not being cleared.

Posted inNewsRelease
Tagged indyn4j

Posted on May 01, 2017

Version 3.2.3

This release fixes issues with the getRadius(Vector2) method for the Slice, Capsule, Ellipse, and HalfEllipse shapes under local rotation and fixes the detect(AABB) method in the Sap broadphase.

Posted inNewsRelease
Tagged indyn4j

Posted on September 04, 2016

Version 3.2.2

This release is primarily for a new collision shape called Link. This shape extends the existing Segment shape and provides for smooth sliding across chains of Links.

Posted inNewsRelease
Tagged indyn4j

Posted on June 19, 2016

Version 3.2.1

This is a maintenance release to fix a few critical bugs in the Polygon, Rectangle, and Segment classes for local rotations (see this post for details).

Posted inNewsRelease
Tagged indyn4j

Posted on November 23, 2015

Version 3.2.0

The primary goals for this release were performance enhancements and API clean up.  It took a lot longer than I had expected but I’m very happy with the results.  Highlights include improvements in the performance of collision detection and ray casting operations and a much cleaner public API and more thorough javadoc comments.

Posted inNewsRelease
Tagged indyn4j

Posted on September 30, 2015

Version 3.1.11

This is a maintenance release of dyn4j that includes a bug fix for a StackOverflowException thrown from the raycast(Ray, double, boolean, boolean, List) method.  This release also includes some very minor performance tweaks. See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on January 31, 2015

Version 3.1.10

This is a maintenance release of dyn4j that includes some major bug fixes.  See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on July 20, 2014

Version 3.1.9

This release of dyn4j includes some major bug fixes for the SweepLine class and other related convex decomposition classes.  It also includes some enhancements to the World.detect methods.  See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on March 29, 2014

Version 3.1.8

This release of dyn4j is a maintenance release to fix a bug in the Vector2.distance(double,double) method.  It also had a few methods added to the Body class to get BodyFixture(s) at a given world space point.  See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on December 23, 2013

Version 3.1.7

This release of dyn4j is a maintenance release to fix bugs in the Ellipse.contains, Ellipse.getHalfHeight and HalfEllipse.contains methods.  This release also had a bug fix in the Graphics2DRenderer class.  See the change detail in the release notes.

Posted inNewsRelease
Tagged in

Posted on October 12, 2013

Version 3.1.6

This release of dyn4j is a maintenance release to fix a bug in the Segment.getSegmentIntersection method.  A new method, setSlackEnabled, was also added to the PulleyJoint class to support a rope like constraint.  See the changes in the release notes.

Posted inNewsRelease
Tagged in

Posted on October 06, 2013

Version 3.1.5

This release of dyn4j includes a number of new features including 4 new primitive shapes and convex casting.  In addition, a number of new helper methods have been added to the Geometry class.  See all the changes in the release notes.

Posted inNewsRelease
Tagged in

Posted on September 14, 2013

Version 3.1.4

This release of dyn4j is a small maintenance release to fix a bug introduced in 3.1.3. With this some flip methods have been added to the Geometry class to allow flipping of polygons about arbitrary axes and points.

Posted inNewsRelease
Tagged in

Posted on May 13, 2013

Version 3.1.3

This release fixes a bug in the Polygon inertia and center of mass calculations. This bug would also throw off multi-fixture body’s inertia. This bug would manifest if a polygon was created away from the origin. This version has no API changes.

Posted inNewsRelease
Tagged in

Posted on May 12, 2013

Version 3.1.2

This release of dyn4j is a small maintenance release to add unique contact ids to the engine. This allows you identify a contact throughout the ContactListener events (begin, persist, end, etc). You can test if a contact is the same as another by using the ContactId.equals method.

Posted inNewsRelease
Tagged in

Posted on November 09, 2012

Version 3.1.1

This release of dyn4j was focused on performance and the API. Many API changes, both breaking and non-breaking, have been made. See the Release Notes for more details. Many new small features have been made as well.

Posted inNewsRelease
Tagged in

Posted on July 21, 2012

Version 3.1.0

The latest release of dyn4j adds a number of new features. See the the release notes. It also contains a number of important bug fixes. On the other hand, the API has been changed slightly and may break code written against older versions.

Posted inNewsRelease
Tagged in

Posted on May 05, 2012

Version 3.0.3

Version 3.0.3 is a maintenance release with very few changes. The primary change was the move of the Settings class from being a singleton to being a member of the World class. This allows each instance of the World class to have different settings. The changes may break compatibility with previous versions, although they should be minimal.

Posted inNewsRelease
Tagged in

Posted on March 03, 2012

Version 3.0.2

3.0.2 introduces significant changes in the Sandbox application along with some minor bug fixes to dyn4j and some new features. Specifically, small CCD improvements, a new fixture filter TypeFilter, and tangent speed settings on contacts. Bug fixes include: a fix to the Body.setMass(Mass.Type) method, auto-sleeping bug, and a rotation disc computation bug. In addition, both dyn4j and Sandbox have been internationalized (any volunteers for translating?).

Posted inNewsRelease
Tagged in

Posted on December 20, 2011

Version 3.0.1

3.0.1 incorporates many small changes. JUnit test, the TestBed and a new testing/demo application, Sandbox, have been moved around to better structure the project. Many major and minor bug fixes have been made. The most visible change is the normalization of the Joint class methods. In addition, the WeldJoint class now supports a soft joint setting.

Posted inNewsRelease
Tagged in

Posted on October 03, 2011

Version 3.0.0

3.0.0 incorporates big changes to the library. The base package has been changed, the broadphase collision detection code has been updated adding 3 new implementations, many bug fixes and performance enhancements, a new joint, better documentation, many more JUnit tests, new example applications, and more.

Posted inNewsRelease
Tagged in

Posted on June 05, 2011

Version 2.2.3

The new version, 2.2.3, features updated Javadocs, 3 different CCD modes, and a new JOGL based TestBed.

Posted inNewsRelease
Tagged in

Posted on January 29, 2011

Version 2.2.2

The new version, 2.2.2, features one more joint, AngleJoint and a few minor bug fixes. The RopeJoint has been extended to allow for a minimum distance in addition to the maximum distance. See the javadocs or source updates for more details.

Posted inNewsRelease
Tagged in

Posted on January 15, 2011

Version 2.2.1

The new version, 2.2.1, features one more joint, RopeJoint and a few minor bug fixes involving SecurityExceptions for sand-boxed environments. See the javadocs for more details.

Posted inNewsRelease
Tagged in

Posted on December 26, 2010

Version 2.2.0

The new version, 2.2.0, features convex hull and convex decomposition algorithms. Intended for use during runtime or for pre-processing. See the javadocs for more details.

Posted inNewsRelease
Tagged in

Posted on November 20, 2010

Version 2.1.0

The next release of dyn4j is ready! The new version, 2.1.0, features a new PulleyJoint and multi-threading support.

Posted inNewsRelease
Tagged in

Posted on September 23, 2010

Version 2.0.0

The next release of dyn4j is ready! The new version, 2.0.0, features CCD and ray casting.

Posted inNewsRelease
Tagged in

Posted on September 09, 2010

Version 1.1.0

A new release is ready with some significant changes, mainly very stable stacking thanks to Box2d’s contact block solver.

Posted inNewsRelease
Tagged in

Posted on July 29, 2010

dyn4j Is Released!

The first release of dyn4j is out!

Posted inNewsRelease
Tagged in

Posted on July 10, 2010

Version 0.7.2

It’s been a while and to be honest I haven’t completed much (as far as implementation). However, the current version of the project is now 0.7.2 so at least you can see we are getting closer to release. The latest version contains a number of improvements and two joints. The testbed received a little face lift and the tests have been tweeked for consistency.

Posted inNewsRelease
Tagged in

Posted on May 31, 2010

Constrained Dynamics

dyn4j Project Setup Video

I finally got some time to create my first How-To video for the dyn4j project.  The first video describes how to setup a Java project in Eclipse to use dyn4j.  It’s short and hopefully to the point.

Posted on December 29, 2011

Prismatic Constraint

The next equality constraint we will derive is the prismatic constraint. A prismatic constraint is like the line constraint except it does not allow rotation about the anchor point. A prismatic constraint constraints the linear motion of the bodies along a line. An example of a prismatic joint is the slide of a semi-automatic pistol. The slide is moved back to charge the weapon, then released to its original position. The slide cannot rotate about the pistol, nor can it move up/down or left/right only along one axis.

Posted on March 12, 2011

Angle Constraint

The next equality constraint we will derive is the angle constraint. An angle constraint can be used to join two bodies forcing them to have the same rotation. This particular constraint will be added to other constraints (in later posts) to form more complex constraints.

Posted on December 30, 2010

Line Constraint

The next equality constraint we will derive is the line constraint. A line constraint is like a prismatic constraint (which will most likely be the next post) except allows rotation about the anchor point. A prismatic constraint constraints the linear motion of the bodies along a line. An example of a prismatic joint might be a roller coaster on the track. The cars cannot translate or rotate except along the track. For simplicity the prismatic constraint we will define is only for straight lines.

Posted on December 30, 2010

Pulley Constraint

The next equality constraint we will derive is the pulley constraint. A pulley constraint can be used to join two bodies at a fixed distance. In addition, the constraint can be used to simulate a block-and-tackle.

Posted on December 30, 2010

Weld Constraint

The next equality constraint we will derive is the weld constraint. A weld constraint can be used to join two bodies at an anchor point in which the bodies must move and rotate together (all DOF are constrained).

Posted on December 30, 2010

Max Distance Constraint

As a follow up post to the Distance Constraint post, we can also create a maximum distance constraint using the same solution we found in the Distance Constraint post.

Posted on December 18, 2010

Distance Constraint

The next equality constraint we will derive is the distance constraint. A distance constraint can be used to join two bodies at a fixed distance. It can also be used as a spring between two bodies.

Posted on September 11, 2010

Equality Constraints

After the first release of the dyn4j project, I felt that it would be good to pass along what I learned about constrained dynamics. This is not an easy subject and aside from purchasing books there’s not much information out there about it for those of us not accustomed to reading research papers or theses.

Posted on July 24, 2010

Point-to-Point Constraint

As the first entry after the Equality Constraints post, we will perform the derivation of the Point-to-Point constraint, which models a Revolute Joint, in 2D.

Posted on July 24, 2010

Physics

dyn4j Project Setup Video

I finally got some time to create my first How-To video for the dyn4j project.  The first video describes how to setup a Java project in Eclipse to use dyn4j.  It’s short and hopefully to the point.

Posted on December 29, 2011

Contact Points Using Clipping

Many have asked “How do I get the contact points from GJK?” or similar on the SAT, GJK, and EPA posts. I’ve finally got around to creating a post on this topic. Contact point generation is a vital piece of many applications and is usually the next step after collision detection. Generating good contact points is crucial to predictable and life-like iteractions between bodies. In this post I plan to cover a clipping method that is used in Box2d and dyn4j. This is not the only method available and I plan to comment about the other methods near the end of the post.

Posted on November 17, 2011

Prismatic Constraint

The next equality constraint we will derive is the prismatic constraint. A prismatic constraint is like the line constraint except it does not allow rotation about the anchor point. A prismatic constraint constraints the linear motion of the bodies along a line. An example of a prismatic joint is the slide of a semi-automatic pistol. The slide is moved back to charge the weapon, then released to its original position. The slide cannot rotate about the pistol, nor can it move up/down or left/right only along one axis.

Posted on March 12, 2011

Angle Constraint

The next equality constraint we will derive is the angle constraint. An angle constraint can be used to join two bodies forcing them to have the same rotation. This particular constraint will be added to other constraints (in later posts) to form more complex constraints.

Posted on December 30, 2010

Line Constraint

The next equality constraint we will derive is the line constraint. A line constraint is like a prismatic constraint (which will most likely be the next post) except allows rotation about the anchor point. A prismatic constraint constraints the linear motion of the bodies along a line. An example of a prismatic joint might be a roller coaster on the track. The cars cannot translate or rotate except along the track. For simplicity the prismatic constraint we will define is only for straight lines.

Posted on December 30, 2010

Pulley Constraint

The next equality constraint we will derive is the pulley constraint. A pulley constraint can be used to join two bodies at a fixed distance. In addition, the constraint can be used to simulate a block-and-tackle.

Posted on December 30, 2010

Weld Constraint

The next equality constraint we will derive is the weld constraint. A weld constraint can be used to join two bodies at an anchor point in which the bodies must move and rotate together (all DOF are constrained).

Posted on December 30, 2010

Max Distance Constraint

As a follow up post to the Distance Constraint post, we can also create a maximum distance constraint using the same solution we found in the Distance Constraint post.

Posted on December 18, 2010

Distance Constraint

The next equality constraint we will derive is the distance constraint. A distance constraint can be used to join two bodies at a fixed distance. It can also be used as a spring between two bodies.

Posted on September 11, 2010

Equality Constraints

After the first release of the dyn4j project, I felt that it would be good to pass along what I learned about constrained dynamics. This is not an easy subject and aside from purchasing books there’s not much information out there about it for those of us not accustomed to reading research papers or theses.

Posted on July 24, 2010

Point-to-Point Constraint

As the first entry after the Equality Constraints post, we will perform the derivation of the Point-to-Point constraint, which models a Revolute Joint, in 2D.

Posted on July 24, 2010

Bible

A Few Services Ago

A few services ago we had one of our Youth Ministers preach. The topic wasn’t necessarily about the Biblical teaching of One God, however some verses used in the sermon really stand out:

Posted inBibleBlog
Tagged inBibleOne God

Posted on September 11, 2010