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

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:

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

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




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

\frac{(p-c)^T(q-c)}{||p-c||||q-c||}=cos\theta
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 \lambda is the solution to the equation \|\textbf{w} + \lamda \textbf{d}\|=r.
 
There are two things I don't understand about this problem. First, when finding the nth root of a number, there should in theory be n solutions. However, the formula produces n+1 roots. Here is how. The first root is simply ##\left(r\right)^{\left(\frac{1}{n}\right)}##. Then you multiply this first root by n additional expressions given by the formula, as you go through k=0,1,...n-1. So you end up with n+1 roots, which cannot be correct. Let me illustrate what I mean. For this...
Back
Top