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 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
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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 on September 11, 2010
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 on September 11, 2010
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
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
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
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
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
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
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 on April 30, 2021
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 on April 26, 2021
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 on February 04, 2021
This version includes a few minor bug fixes for 4.0.1. See the release notes for more details.
Posted on October 15, 2020
This version includes a few minor bug fixes for 4.0.0. See the release notes for more details.
Posted on September 25, 2020
This version features a number of improvements to API (and deprecation) and massive performance improvements (30-40%) for large worlds.
Posted on August 29, 2020
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 on January 10, 2020
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 on January 10, 2020
This release was focused on Java 9, OSGi, and Maven but also includes some behavior changes and performance improvements.
Posted on April 15, 2018
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 on May 01, 2017
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 on September 04, 2016
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 on June 19, 2016
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 on November 23, 2015
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 on September 30, 2015