How Does a Java Program Determine Collision Points Between Rotating Polygons?

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 2K views
needhelp83
Messages
193
Reaction score
0
Okay, I am struggling severely and need some guidance by anyone who understands what's going on with this. I have to write a Java program that will take two different polygons with an angle and a pivot point. The program will determine whether the second polygon hits
the first polygon as it (the second polygon) turns through the angle about the pivot point, and if it does, at exactly what angle and points on each polygon first contact happens.

The formulas I have been given to determine this is as follows:

The overall process to find point “p” is to find p= a+ λd where λ ϵ [0,1]
To find λ use the following formula, which is basically the quadratic formula modified:

λ=[tex]\frac{-w^Td \pm \sqrt{(w^Td)^2-d^Td(w^Tw-r^2)}}{d^Td}[/tex]

Once you find λ, plug back into formula p= a+ λd




To find the angle in which it collides you use this:

[tex]\frac{(p-c)^T(q-c)}{||p-c||||q-c||}=cos\theta[/tex]
Where the ∥p-c∥∥q-c∥ are the distances of p - c multiplied by the distance of q – c and
P – the corner point that’s rotating
Q – the contact point calculated before
C – the pivot point
 
Physics news on Phys.org
Have you been given definitions for w, d, r, and a? I'd favor a guess that a is the pivot point, but I'm not sure about the others.

Also, your solution for [tex]\lambda[/tex] is the solution to the equation [tex]\|\textbf{w} + \lamda \textbf{d}\|=r[/tex].