import java.io.PrintStream; import java.util.Scanner; import franck.cse5910.Mouse; import franck.cse5910.Timing; public class MouseSpeed { public static void main(String[] args) { Scanner input = new Scanner(System.in); PrintStream output = System.out; // prompt the user output.println("Move your mouse immediately after"); output.print("entering the width of the screen in centimeters: "); double width = input.nextDouble(); //output.println(width); // get initial position of mouse cursor double initialX = Mouse.getX(); double initialY = Mouse.getY(); //output.printf("(%.1f, %.1f)%n", initialX, initialY); // pause 0.1 second final long DELAY = 100; Timing.pause(DELAY); // get final position of mouse cursor double finalX = Mouse.getX(); double finalY = Mouse.getY(); //output.printf("(%.1f, %.1f)%n", finalX, finalY); // compute distance in terms of pixels double deltaX = Math.abs(initialX - finalX); double deltaY = Math.abs(initialY - finalY); double distanceInPixels = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); //output.println(distanceInPixels); // compute distance in cm double distanceInCentimers = distanceInPixels * width / Mouse.maxX(); //output.println(distanceInCentimers); // compute speed in miles per hour final double CENTIMETERS_PER_MILE = 100 * 1609.34; final int MILLISECONDS_PER_HOUR = 1000 * 60 * 60; double speed = (distanceInCentimers * MILLISECONDS_PER_HOUR) / (CENTIMETERS_PER_MILE * DELAY); assert speed >= 0; // print speed output.printf("%.2f%n", speed); } }