//------------------------------------------------------ // VISP --MAILBOX-- infoVis-- October 2005 // piece of software mede for medien.KUNSTLABOR VISP installation in Graz (Austria) // by Alessandro Capozzo for Machfeld ( aka Sabine Maier & Michael Mastrototaro) // www.abstract-codex.net // www.machfeld.net // data baase and data evalutation by Markus Reisenhofer // ------------------------------------------------------- // built with processing beta .92 // review with beta .124 may 2007 // www.processing.org // nanoXML library was used to parse data // nanoxml.cyberelf.be import java.lang.reflect.Array; nanoxml.XMLElement messages = new nanoxml.XMLElement(); MessageObj [] messagesIstance; VispObj [] vispCluster; VispCube [] cubeMatrix; Object[] records; int prp=0; float milliToHour=1/3600000; float rot=0; PFont font; int globalRatio=160; int limDim=10; int countM; VirtualCursor vit; VirtualCursor vit2; VirtualCursor vit3; int jumpCounter; void setup(){ size(720,480,P3D); framerate(35); background(230,230,220); font = loadFont("small.vlw"); textFont(font, 8); lights(); jumpCounter=0; Reader reader = new InputStreamReader(openStream("messages_attribs_xml.xml")); try{ messages.parseFromReader(reader); records = messages.getChildren().toArray(); initMessages(); } catch (Exception e) { e.printStackTrace(); background(236,0,0); noLoop(); } cubeMatrix= new VispCube[1000]; //pixels[_y*width+_x] countM=0; for (int mx=0; mx0){ stroke (255,255,255,visio); line(_x,_y,_z,_x+globalRatio,_y,_z); line(_x,_y,_z,_x,_y+globalRatio,_z); line(_x,_y,_z,_x,_y,_z-globalRatio); line(_x,_y,_z-globalRatio,_x+globalRatio,_y,_z-globalRatio); line(_x,_y+globalRatio,_z,_x+globalRatio,_y+globalRatio,_z); line(_x,_y,_z,_x,_y+globalRatio,_z); line(_x+globalRatio,_y+globalRatio,_z-globalRatio,_x+globalRatio,_y+globalRatio,_z); line(_x+globalRatio,_y,_z-globalRatio,_x+globalRatio,_y,_z); line(_x,_y+globalRatio,_z-globalRatio,_x,_y+globalRatio,_z); line(_x,_y,_z-globalRatio,_x,_y+globalRatio,_z-globalRatio); line(_x+globalRatio,_y,_z-globalRatio,_x+globalRatio,_y+globalRatio,_z-globalRatio); line(_x+globalRatio,_y,_z,_x+globalRatio,_y+globalRatio,_z); line(_x,_y+globalRatio,_z-globalRatio,_x+globalRatio,_y+globalRatio,_z-globalRatio); pushMatrix(); translate(_x,_y,_z); //rotateX(PI); pushMatrix(); noStroke(); fill(255,255,255,visio); textFont(font, 8); text(vispCluster[_id].main._id, 10,10); text(vispCluster[_id].main.shortDat, 10,20); if(vispCluster[_id].main.cat==2){ fill(230,30,20,visio); } textFont(font, 16); text(vispCluster[_id].main.catString, 10,40); int codeB; for (int bc=0; bclimX){ _x=limX; xSpeed=-xSpeed; } if (_y<0){ _y=0; ySpeed=-ySpeed; } else if (_y>limY){ _y=limY; ySpeed=-ySpeed; } if (_z<0){ _z=0; zSpeed=-zSpeed; } else if (_z>limX){ _z=limZ; zSpeed=-zSpeed; } } void checkMatrix(){ int vx=(int)floor((_x/globalRatio)); int vy=(int)floor((_y/globalRatio)); int vz=(int)floor((_z/globalRatio)); if (vz>(limDim-1)){ vz=(limDim-1); } if (vy>(limDim-1)){ vy=(limDim-1); } if (vx>(limDim-1)){ vx=(limDim-1); } cubeMatrix[vz+(vy*limDim)+(vx*(limDim*limDim))].visio=255; } } static Object arrayExpand(Object a) { Class cl = a.getClass(); if (!cl.isArray()) return null; int lengtha = Array.getLength(a); int newLength = lengtha+1; Class componentType = a.getClass().getComponentType(); Object newArray = Array.newInstance(componentType, newLength); System.arraycopy(a, 0, newArray, 0, lengtha); return newArray; }