import java.util.*;
import java.io.*;
import java.util.Scanner;
//Algorithm for Bench and Squad (since the two have similar motions)
public class BenchPress
{
public static int xpos = 0;
public static int ypos = 0;
public static final double threshold = 1.5;
public static ArrayList data = new ArrayList();
public static ArrayList xList = new ArrayList();
public static ArrayList yList = new ArrayList();
public static ArrayList timeList = new ArrayList();
public static void main(String []args)throws FileNotFoundException
{
readTextFile("data1.txt", xList, yList, timeList);
//displayData(data);
//System.out.println(data.get(19)[2]);
int a = callibrateStart(data);
System.out.println(stop(data));
//System.out.println(data.size());
//System.out.println(a);
//int x = callibrate(data);
System.out.println(positionx(data));
System.out.println(positiony(data));
System.out.println((data.get(501)[2] - data.get(500)[2])*data.get(501)[0]);
//if(stop(data))
//System.out.println("Just..... DO IT - Shia LaBeouf");
}
public static void readTextFile(String txtfile, ArrayList xlist, ArrayList ylist, ArrayList timelist)throws FileNotFoundException
{
FileInputStream fstream = new FileInputStream(txtfile);
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String data;
try
{
while ((data = br.readLine()) != null)
{
String[] tmp = data.split(" "); //Split space
//System.out.println(tmp[0]);
timelist.add(Double.parseDouble(tmp[0]));
xlist.add(Double.parseDouble(tmp[1]));
ylist.add(Double.parseDouble(tmp[2]));
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch(IOException e)
{
}
for(int i= 0; i < xlist.size(); i++)
{
addData(xlist, ylist, timelist, i);
}
}
public static void addData(ArrayList x,ArrayList y,ArrayList t,int a)
{
data.add(new double[]{x.get(a),y.get(a),t.get(a)});
}
public static void displayData(ArrayList data)
{
for(int i = 0; i < data.size(); i++)
{
for(int j = 0; j < data.get(i).length; j++)
{
System.out.println(data.get(i)[j]);
}
}
}
public static boolean stop(ArrayList a)
{
for(int i = 0; i < a.size(); i++)
{
if(a.get(i)[0] < .5 && a.get(i)[0] > -.5 && a.get(i)[1] < .5 && a.get(i)[1] > -.5)
return true;
}
return false;
}
public static double positionx(ArrayList data)
{
double firstriemmansumx = 0;
double secondriemmansumx = 0;
ArrayList xsum1 = new ArrayList();
for(int i = 1; i < data.size(); i++)
{
firstriemmansumx += data.get(i)[0] * (data.get(i)[2]-data.get(i-1)[2]);
xsum1.add(firstriemmansumx);
}
for(int c = 1; c < xsum1.size(); c++)
{
secondriemmansumx += xsum1.get(c) * (data.get(c)[2]-data.get(c-1)[2]);
}
return secondriemmansumx;
}
public static double positiony(ArrayList data)
{
double firstriemmansumy = 0;
double secondriemmansumy = 0;
ArrayList ysum1 = new ArrayList();
for(int i = 1; i < data.size(); i++)
{
firstriemmansumy += data.get(i)[1] * (data.get(i)[2]-data.get(i-1)[2]);
ysum1.add(firstriemmansumy);
}
for(int c = 1; c < ysum1.size(); c++)
{
secondriemmansumy += ysum1.get(c) * (data.get(c)[2]-data.get(c-1)[2]);
}
return secondriemmansumy;
}
public static boolean rightSpot(double rightx, double righty, ArrayList data)
{
double diffy = Math.abs(positiony(data) - righty);
double diffx = Math.abs(positionx(data) - rightx);
return(diffy < threshold && diffx < threshold);
}
public static int callibrateStart(ArrayList data)
{
int index = 0;
boolean found = false;
for(int i = 0; i < data.size() && !found; i++)
if(data.get(i)[0] > 0 || data.get(i)[1] > 0){
index = i;
found = true;
}
return index;
}
}