p3d max=new p3d(-1000,-1000,-1000,""); p3d min=new p3d(1000,1000,1000,""); float xOffset,yOffset,spanDegrees,pixelsPerDegree; trace pts1,pts2; class p3d { float x,y,z; String time; p3d(float _x,float _y,float _z,String _t) { x=_x; y=_y; z=_z; } } class trace { ArrayList points = new ArrayList(); PApplet parent; trace(PApplet _this,String filename) { parent=_this; parseXml(filename); } void addPoint(float _x,float _y,float _z,String _t) { p3d p=new p3d(_x,_y,_z,_t); points.add(p); if (p.x>max.x) max.x=p.x; if (p.y>max.y) max.y=p.y; if (p.z>max.z) max.z=p.z; if (p.xmax.y-min.y) { //scale to X xOffset=0; yOffset=(height/2)-((height*((max.y-min.y)/(max.x-min.x))*0.5)); // } else { //scale to Y xOffset=(width/2)-((width*((max.x-min.x)/(max.y-min.y))*0.5)); println("ratio: "+str((max.x-min.x)/(max.y-min.y))); yOffset=0; } println (_file+" "+str(pts.size())+" data points, bounds: "+str(min.x)+","+str(min.y)+" to "+str(max.x)+","+str(max.y)); } } void setup() { size(512,512); pts1 = new trace(this,"2012-07-18 11-25-38-gpstrack.gpx"); pts2 = new trace(this,"1667831-gpstrack.gpx"); background(0); stroke(255); spanDegrees=max(max.x-min.x,max.y-min.y); if (max.x-min.x>max.y-min.y) pixelsPerDegree=width/spanDegrees; //maximum span of latitude/longitude else pixelsPerDegree=height/spanDegrees; } void draw() { if (spanDegrees==0.0) println("no movement!"); else { stroke(255,255,0); pts1.draw(); stroke(255,128,128); pts2.draw(); } noLoop(); //saveFrame(); }