XMLElement kml; ArrayList points = new ArrayList(); class p3d { float x,y,z; p3d(float _x,float _y,float _z) { x=_x; y=_y; z=_z; } } p3d max=new p3d(-1000,-1000,-1000); p3d min=new p3d(1000,1000,1000); float xOffset,yOffset,spanDegrees; void addPoint(String[] coord) { p3d p; if (coord.length>2) { p=new p3d(float(coord[0]),float(coord[1]),float(coord[2])); } else p=new p3d(float(coord[0]),float(coord[1]),0.0); 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.x0) { //element contains a single coordinate addPoint(kml.getChild(i).getChild("Point").getChild("coordinates").getContent().split(",")); } if (kml.getChild(i).getChildren("coordinates").length>0) { //element contains a table of coordinates String[] coords=kml.getChild(i).getChild("coordinates").getContent().split("\\n"); for (int j=0;jmax.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; } background(0); stroke(255); } void draw() { spanDegrees=max(max.x-min.x,max.y-min.y); if (spanDegrees==0.0) println("no movement!"); else { float pixelsPerDegree; if (max.x-min.x>max.y-min.y) pixelsPerDegree=width/spanDegrees; //maximum span of latitude/longitude else pixelsPerDegree=height/spanDegrees; for (int i=0;i