[Home]Skilgannon/CodeSnippets

Robo Home | Skilgannon | Changes | Preferences | AllPages

Showing revision 1

public static boolean reachable(Point2D.Double fromLocation, Point2D.Double toLocation, long timeAvailable, double initialVelocity, double previousHeading){ double wantedHeading = absoluteBearing(fromLocation,toLocation); double velocity = Math.abs(initialVelocity); double distanceRemaining = fromLocation.distance(toLocation);; long time = 0; double theta = Math.abs(Utils.normalRelativeAngle(wantedHeading - previousHeading)); if(theta > Math.PI/2){ theta = Math.PI - theta; } do{ if(distanceRemaining >= decelDistance(velocity)) velocity = limit(0,velocity + 1, 8); else velocity = limit(0, velocity - 2,8); double maxTurn = Math.PI/180*(10 - 0.75*velocity); theta = limit(0,theta - maxTurn, Math.PI/2); if(theta == 0) distanceRemaining -= velocity; else //rule of cosines distanceRemaining = Math.sqrt(velocity*velocity + distanceRemaining*distanceRemaining - 2*velocity*distanceRemaining*Math.cos(theta)); time++; }while(time < timeAvailable); return distanceRemaining < 1; }


Robo Home | Skilgannon | Changes | Preferences | AllPages
Edit revision 1 of this page | View other revisions | View current revision
Edited October 29, 2007 15:53 EST by Skilgannon (diff)
Search: