Tags

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

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

SAT

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

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

GJK

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

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

EPA

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

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

Constrained Dynamics

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

Equality Constraints

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

One God

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

Java

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

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

OpenGL

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

Contacts

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

dyn4j

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

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