Test

Origami Around

Kiana Khansmith
ojovivo
noise dept.
Misplaced Lens Cap

shark vs the universe
Cosmic Funnies
Claire Keane
almost home

blake kathryn
"I'm Dorothy Gale from Kansas"
taylor price
đ
Today's Document
wallacepolsom
let's talk about Bridgerton tea, my ask is open

No title available
I'd rather be in outer space đž

ellievsbear
untitled
seen from TĂŒrkiye

seen from United States

seen from United States

seen from Canada
seen from South Africa

seen from United Kingdom
seen from United Kingdom
seen from United Kingdom
seen from United States

seen from United States
seen from United States

seen from United States

seen from India
seen from United States
seen from United States

seen from United States

seen from United States
seen from United States

seen from TĂŒrkiye
seen from Poland
@bluetealrisesagain
Test
point 3
///////////////////// Point 3
//St. Mary's
 if(Point3==1){   if(fadein3A >= 0){fadein3A += 20;};   offscreen.tint(255, fadein3A);   Point3AImg.resize(267, 226);   offscreen.image(Point3AImg, 0, 100);   Paper.resize(280, 330);   offscreen.image(Paper, -10, 280);   offscreen.fill(0,0,0);   offscreen.text(Point3ATxt, 35, 320, 200, 400);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   fadein3B = 0;    offscreen.image(Point3Red, 530, 100);
 }
  if(Point3==2){   if(fadein3B >= 0){fadein3B += 20;};   offscreen.tint(255, fadein3B);   Point3BImg.resize(260, 233);   offscreen.image(Point3BImg, 0, 100);   Paper.resize(280, 330);   offscreen.image(Paper, -10, 280);   offscreen.fill(0,0,0);   offscreen.text(Point3BTxt, 35, 320, 200, 400);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point3Red,  530, 100);  }
  if(Point3==3){   if(fadein3C >= 0){fadein3C += 20;};   offscreen.tint(255, fadein3C);   Point3CImg.resize(260, 176);   offscreen.image(Point3CImg, 0, 100);   Paper.resize(280, 330);   offscreen.image(Paper, -10, 280);   offscreen.fill(0,0,0);   offscreen.text(Point3CTxt, 35, 320, 200, 400);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point3Red,  530, 100);  }
 if(UPoint3==1){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein3A >= 0){Ufadein3A += 20;};    offscreen.tint(255, Ufadein3A);   Point3AImg.resize(300,150);   offscreen.image(Point3AImg, 0, 100);   offscreen.fill(#000000, Ufadein3A);   offscreen.textSize(10);   offscreen.text(Point3ATxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);   Ufadein3B = 0;
   offscreen.image(Point3Blue,  530, 100);  }
 if(UPoint3==2){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein3B >= 0){Ufadein3B += 20;};    offscreen.tint(255, Ufadein3B);   Point3BImg.resize(300,150);   offscreen.image(Point3BImg, 0, 100);   offscreen.fill(#000000, Ufadein3B);   offscreen.textSize(10);   offscreen.text(Point3BTxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point3Blue,  530, 100);
 }
 if(UPoint3==3){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein3C >= 0){Ufadein3C += 20;};    offscreen.tint(255, Ufadein3C);   Point3CImg.resize(300,150);   offscreen.image(Point3CImg, 0, 100);   offscreen.fill(#000000, Ufadein3C);   offscreen.textSize(10);   offscreen.text(Point3CTxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);   offscreen.image(Point3Blue, 530, 100);  } Â
Point code
//----------------------------------------------------POINT 1
if(Map==1&&tobj.getX()>0.31&&tobj.getX()<0.46&&tobj.getY()<.23&&tobj.getY()>.0&&tobj.getSymbolID()==110){
 P1G=1;
 timer=0;
 if(UP1Mark==0){
 P1Mark=1;}
   if(Point1<1){
 Angle = tobj.getAngle();
Point1=1;}
if (Angle+2 > 6.1){
 UPoint1=0;}
   if(tobj.getAngle()> Angle + 1 && tobj.getAngle() < Angle + 2){
  Point1 = 2;
  fadein1A=0;
  fadein1C=0;}
     if(tobj.getAngle() > Angle + 2 ){
Point1=3;
fadein1B= 0;
}
if(Point1 > 1 && tobj.getAngle() < Angle + 1 ){
  Point1=0;
  }
   }
//RESET Map
if(Map==1&&tobj.getSymbolID()==110&&(tobj.getX()<0.31||tobj.getX()>0.46||tobj.getY()>.23|tobj.getY()<.0)){
 Point1=0;
 fadein1A=0;
 fadein1B=0;
 fadein1C=0;
 Angle = 0;
 }
//----------------------------------------------------POINT 1 UPSIDE DOWN
if(Map==1&&tobj.getX()>0.31&&tobj.getX()<0.46&&tobj.getY()<.23&&tobj.getY()>.0&&tobj.getSymbolID()==108){
  P1G=1;
 timer=0;
     if(P1Mark==0){
 UP1Mark=1;}
     if(UPoint1<1){
 UAngle = tobj.getAngle();
UPoint1=1;}
if (UAngle+2 > 6.1){
 UPoint1=0;}
   if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){
  UPoint1 = 2;
  Ufadein1A=0;
  Ufadein1C=0;}
     if(tobj.getAngle() > UAngle + 2 ){
UPoint1=3;
Ufadein1B= 0;
}
if(UPoint1 > 1 && tobj.getAngle() < UAngle + 1 ){
  UPoint1=0;
  }
   }
//RESET Map
if(Map==1&&tobj.getSymbolID()==108&&(tobj.getX()<0.31||tobj.getX()>0.46||tobj.getY()>.23|tobj.getY()<.0)){
 UPoint1=0;
 Ufadein1A=0;
 Ufadein1B=0;
 Ufadein1C=0;
 UAngle=0;
}
//--------------------------------------------------------POINT2 GRAND PARADE
if(Map==1&&tobj.getX()>0.4&&tobj.getX()<0.53&&tobj.getY()<.46&&tobj.getY()>.28&&tobj.getSymbolID()==110){
 timer=0;
 P2G = 1;Â
   if(UP2Mark==0){
 P2Mark=1;}
   if(Point2<1){
 Angle = tobj.getAngle();
  Point2=1;
}
   if (Angle+2 > 6.1){
 Point2=0;}
if( tobj.getAngle() >= Angle + 1 && tobj.getAngle() <= Angle + 2 ){
  Point2=2;Â
fadeinA = 0;
fadeinC = 0;
}
if(Point2 > 1 && tobj.getAngle() <= Angle + 1 ){
  Point2=0;
  }
}
if(Map==1&&tobj.getSymbolID()==110&&(tobj.getX()<0.4||tobj.getX()>0.53||tobj.getY()>.46||tobj.getY()<.28)){
Point2=0;
fadeinA=0;
fadeinB=0;
fadeinC=0;
Angle=0;
}
//-------------------------------------------------------- UPSIDE DOWN POINT2
if(Map==1&&tobj.getX()>0.4&&tobj.getX()<0.53&&tobj.getY()<.46&&tobj.getY()>.28&&tobj.getSymbolID()==108){
 timer=0;
 P2G = 1;Â
   if(P2Mark==0){
 UP2Mark=1;}
    if(UPoint2<1){
 UAngle = tobj.getAngle();
 UPoint2=1;
  }
  if (UAngle+2 > 6.1){
 UPoint2=0;}
if( tobj.getAngle() >= UAngle + 1 && tobj.getAngle() <= UAngle + 2 ){
  UPoint2=2;Â
UfadeinA = 0;
UfadeinC = 0;
}
if(UPoint2 > 1 && tobj.getAngle() <= UAngle + 1 ){
  UPoint2=0;
  }
}
if(Map==1&&tobj.getSymbolID()==108&&(tobj.getX()<0.4||tobj.getX()>0.53||tobj.getY()>.46||tobj.getY()<.28)){
UPoint2=0;
UfadeinA=0;
UfadeinB=0;
UAngle=0;
}
//----------------------------------------------------POINT 3
if(Map==1&&tobj.getX()>0.63&&tobj.getX()<0.74&&tobj.getY()<.48&&tobj.getY()>.28&&tobj.getSymbolID()==110){
 P3G=1;
 timer=0;
      if(UP3Mark==0){
 P3Mark=1;}
     if(Point3<1){
 Angle = tobj.getAngle();
Point3=1;}
if (Angle+2 > 6.1){
 Point3=0;}
   if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){
  Point3 = 2;
  fadein3A=0;
  fadein3C=0;}
     if(tobj.getAngle() > Angle + 2 ){
Point3=3;
fadein3B= 0;
}
if(Point3> 1 && tobj.getAngle() < Angle + 1 ){
  Point3=0;
  }
   }
//RESET Map
if(Map==1&&tobj.getSymbolID()==110&&(tobj.getX()<0.63||tobj.getX()>0.74||tobj.getY()>.48||tobj.getY()<.28)){
 Point3=0;
 fadein3A=0;
 fadein3B=0;
 fadein3C=0;
 Angle=0;
}
//----------------------------------------------------POINT 3 UPSIDE DOWN
if(Map==1&&tobj.getX()>0.63&&tobj.getX()<0.74&&tobj.getY()<.48&&tobj.getY()>.28&&tobj.getSymbolID()==108){
  P3G=1;
 timer=0;
     if(P3Mark==0){
 UP3Mark=1;}
     if(UPoint3<1){
 UAngle = tobj.getAngle();
UPoint3=1;}
if (UAngle+2 > 6.1){
 UPoint3=0;}
   if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){
  UPoint3 = 2;
  Ufadein3A=0;
  Ufadein3C=0;}
     if(tobj.getAngle() > UAngle + 2 ){
UPoint3=3;
Ufadein3B= 0;
}
if(UPoint3 > 1 && tobj.getAngle() < UAngle + 1 ){
  UPoint3=0;
  }
   }
//RESET Map
if(Map==1&&tobj.getSymbolID()==108&&(tobj.getX()<0.63||tobj.getX()>0.74||tobj.getY()>.48||tobj.getY()<.28)){
 UPoint3=0;
 Ufadein3A=0;
 Ufadein3B=0;
 Ufadein3C=0;
  UAngle=0;
}
//----------------------------------------------------POINT 4
if(Map==1&&tobj.getX()>0.5&&tobj.getX()<0.65&&tobj.getY()<.68&&tobj.getY()>.48&&tobj.getSymbolID()==110){
  timer=0;
  P4G=1;
    if(UP4Mark==0){
 P4Mark=1;}
     if(Point4<1){
 Angle = tobj.getAngle();
Point4=1;}
if (Angle+2 > 6.1){
 Point4=0;}
   if(tobj.getAngle()> Angle + 1 && tobj.getAngle() < Angle + 2){
  Point4 = 2;
  fadein4A=0;
  fadein4C=0;}
     if(tobj.getAngle() > Angle + 2 ){
Point4=3;
fadein4B= 0;
}
if(Point4> 1 && tobj.getAngle() < Angle + 1 ){
  Point4=0;
  }
   }
//RESET Map
if(Map==1&&tobj.getSymbolID()==110&&(tobj.getX()<0.5||tobj.getX()>0.65||tobj.getY()>.68||tobj.getY()<.48)){
 Point4=0;
 fadein4A=0;
 fadein4B=0;
 fadein4C=0;
  Angle=0;
}
//----------------------------------------------------POINT 4 UPSIDE DOWN
if(Map==1&&tobj.getX()>0.5&&tobj.getX()<0.65&&tobj.getY()<.68&&tobj.getY()>.48&&tobj.getSymbolID()==108){
  timer=0;
 P4G=1;
      if(P4Mark==0){
 UP4Mark=1;}
     if(UPoint4<1){
 UAngle = tobj.getAngle();
UPoint4=1;}
if (UAngle+2 > 6.1){
 UPoint4=0;}
   if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){
  UPoint4 = 2;
  Ufadein4A=0;
  Ufadein4C=0;}
     if(tobj.getAngle() > UAngle + 2 ){
UPoint4=3;
Ufadein4B= 0;
}
if(UPoint4 > 1 && tobj.getAngle() < UAngle + 1 ){
  UPoint4=0;
  }
   }
//RESET Map
if(Map==1&&tobj.getSymbolID()==108&&(tobj.getX()<0.5||tobj.getX()>0.65||tobj.getY()>.68||tobj.getY()<.48)){
 UPoint4=0;
 Ufadein4A=0;
 Ufadein4B=0;
 Ufadein4C=0;
  UAngle=0;
}
/////////////////// Point 5Â
if(Map==1&&tobj.getX()>0.45&&tobj.getX()<0.60&&tobj.getY()<.95&&tobj.getY()>.75&&tobj.getSymbolID()==110){
 P5G=1;
 timer=0;
    if(UP5Mark==0){
 P5Mark=1;}
     if(Point5<1){
 Angle = tobj.getAngle();
Point5=1;}
if (Angle+2 > 6.1){
 Point5=0;}
   if(tobj.getAngle()> Angle + 1 && tobj.getAngle() < Angle + 2){
  Point5 = 2;
  fadein5A=0;
  fadein5C=0;}
     if(Point5> 1 && tobj.getAngle() < Angle + 1 ){
  Point5=0;
  }
   }
//RESET Map
if(Map==1&&tobj.getSymbolID()==110&&(tobj.getX()<0.45||tobj.getX()>0.6||tobj.getY()>.95||tobj.getY()<.75)){
 Point5=0;
 fadein5A=0;
 fadein5B=0;
  Angle=0;
}
//----------------------------------------------------POINT 5 UPSIDE DOWN
if(Map==1&&tobj.getX()>0.45&&tobj.getX()<0.60&&tobj.getY()<.95&&tobj.getY()>.75&&tobj.getSymbolID()==108){
 P5G=1;
 timer=0;
     if(P5Mark==0){
 UP5Mark=1;}
     if(UPoint5<1){
 UAngle = tobj.getAngle();
UPoint5=1;}
if (UAngle+2 > 6.1){
 UPoint5=0;}
   if(tobj.getAngle()> UAngle + 2 && tobj.getAngle() < UAngle + 2){
  UPoint5 = 2;
  Ufadein4A=0;
  Ufadein4C=0;}
   if(UPoint5 > 1 && tobj.getAngle() < UAngle + 1 ){
  UPoint5=0;
  }
   }
//RESET Map
if(Map==1&&tobj.getSymbolID()==108&&(tobj.getX()<0.45||tobj.getX()>0.6||tobj.getY()>.95||tobj.getY()<.75)){
 UPoint5=0;
 Ufadein5A=0;
 Ufadein5B=0;
 UAngle=0;Â
}
}
Code for Point 5 and 4
///////////////////// Point 5
// Point5 CUSTOM HOUSE Â if(Point5==1){ Â Â if(fadein5A >= 0){fadein5A += 20;}; Â Â offscreen.tint(255, fadein5A); Â Â Point5AImg.resize(250, 150); Â Â offscreen.image(Point5AImg, 10, 100); Â Paper.resize(280, 330); Â Â offscreen.image(Paper, -10, 250); Â Â offscreen.fill(0,0,0); Â Â offscreen.text(Point5ATxt, 35, 290, 200, 400); Â Â offscreen.fill(0,0,0); Â Â offscreen.tint(255, 255); Â Â fadein5B = 0; Â offscreen.image(Point5Red, 350, 450);
 }
  if(Point5==2){   if(fadein5B >= 0){fadein5B += 20;};   offscreen.tint(255, fadein5B);   Point5BImg.resize(220, 298);   offscreen.image(Point5BImg, 10, 100);   Paper.resize(280, 240);   offscreen.image(Paper, -10, 400);   offscreen.fill(0,0,0);   offscreen.text(Point5BTxt, 35, 440, 200, 400);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point5Red,350, 450);  }
 if(UPoint5==1){   offscreen.translate(1050,700);    offscreen.rotate(radians(180));
   if (Ufadein5A >= 0){Ufadein5A += 20;};    offscreen.tint(255, Ufadein5A);   Point5AImg.resize(300,150);   offscreen.image(Point5AImg, 0, 100);   offscreen.fill(#000000, Ufadein5A);  Paper.resize(280, 330);   offscreen.image(Paper, -10, 250);   offscreen.fill(0,0,0);   offscreen.text(Point5ATxt, 35, 290, 200, 400);   offscreen.fill(0,0,0);   offscreen.rotate(radians(-180)); offscreen.translate(-1050,-700); offscreen.tint(255, 255);   Ufadein5B = 0;
   offscreen.image(Point5Blue, 350, 450);  }
 if(UPoint5==2){   offscreen.translate(1050,700);    offscreen.rotate(radians(180));
   if (Ufadein5B >= 0){Ufadein5B += 20;};    offscreen.tint(255, Ufadein5B);   Point5BImg.resize(300,150);   offscreen.image(Point5BImg, 0, 100);   offscreen.fill(#000000, Ufadein5B);   Paper.resize(280, 240);   offscreen.image(Paper, -10, 400);   offscreen.fill(0,0,0);   offscreen.text(Point5BTxt, 35, 440, 200, 400);   offscreen.fill(0,0,0);   offscreen.rotate(radians(-180)); offscreen.translate(-1050,-700); offscreen.tint(255, 255);  offscreen.image(Point5Blue, 350, 450);
 }
///////////////////// Point 4
// Point 4 SAINT PATRICKS Â if(Point4==1){ Â Â if(fadein4A >= 0){fadein4A += 20;}; Â Â offscreen.tint(255, fadein4A); Â Â Point4AImg.resize(240, 174); Â Â offscreen.image(Point4AImg, 10, 100); Â Â Paper.resize(280, 330); Â Â offscreen.image(Paper, -10, 280); Â Â offscreen.fill(0,0,0); Â Â offscreen.text(Point4ATxt, 35, 320, 200, 400); Â Â offscreen.fill(0,0,0); Â Â offscreen.tint(255, 255); Â Â fadeinB = 0; Â
  offscreen.image(Point4Red, 400, 240);  }
  if(Point4==2){   if(fadein4B >= 0){fadein4B += 20;};   offscreen.tint(255, fadein4B);   Point4BImg.resize(240, 168);   offscreen.image(Point4BImg, 10, 100);   Paper.resize(280, 330);   offscreen.image(Paper, -10, 280);   offscreen.fill(0,0,0);   offscreen.text(Point4BTxt, 35, 320, 200, 400);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point4Red, 400, 240);  }
  if(Point4==3){   if(fadein4C >= 0){fadein4C += 20;};   offscreen.tint(255, fadein4C);   Point4CImg.resize(240, 173);   offscreen.image(Point4CImg, 10, 100);  Paper.resize(280, 330);   offscreen.image(Paper, -10, 280);   offscreen.fill(0,0,0);   offscreen.text(Point4CTxt, 35, 320, 200, 400);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point4Red, 400, 240);  }
 if(UPoint4==1){   offscreen.translate(1050,700);    offscreen.rotate(radians(180));
   if (Ufadein4A >= 0){Ufadein4A += 20;};    offscreen.tint(255, Ufadein4A);   Point4AImg.resize(300,150);   offscreen.image(Point4AImg, 0, 200);   offscreen.fill(#000000, Ufadein4A);   Paper.resize(280, 330);   offscreen.image(Paper, -10, 280);   offscreen.fill(0,0,0);   offscreen.text(Point4ATxt, 35, 320, 200, 400);   offscreen.fill(0,0,0);   offscreen.rotate(radians(-180)); offscreen.translate(-1050,-700); offscreen.tint(255, 255);   Ufadein4B = 0;
   offscreen.image(Point4Blue, 400, 240);  }
 if(UPoint4==2){   offscreen.translate(1050,700);    offscreen.rotate(radians(180));
   if (Ufadein4B >= 0){Ufadein4B += 20;};    offscreen.tint(255, Ufadein4B);   Point4BImg.resize(300,150);   offscreen.image(Point4BImg, 0, 200);   offscreen.fill(#000000, Ufadein4B);   Paper.resize(280, 330);   offscreen.image(Paper, -10, 280);   offscreen.fill(0,0,0);   offscreen.text(Point4BTxt, 35, 320, 200, 400);   offscreen.fill(0,0,0);   offscreen.rotate(radians(-180)); offscreen.translate(-1050,-700); offscreen.tint(255, 255);  offscreen.image(Point4Blue, 400, 240);
 }
 if(UPoint4==3){   offscreen.translate(1050,700);    offscreen.rotate(radians(180));
   if (Ufadein4C >= 0){Ufadein4C += 20;};    offscreen.tint(255, Ufadein4C);   Point4CImg.resize(300,150);   offscreen.image(Point4CImg, 0, 200);   offscreen.fill(#000000, Ufadein4C);   Paper.resize(280, 330);   offscreen.image(Paper, -10, 280);   offscreen.fill(0,0,0);   offscreen.text(Point4CTxt, 35, 320, 200, 400);   offscreen.fill(0,0,0);   offscreen.rotate(radians(-180)); offscreen.translate(-1050,-700); offscreen.tint(255, 255);   offscreen.image(Point4Blue, 400, 240);  }
shopping list
double sided tape
Frosting/Greaseproof paper
food
stensil things
black sharpie
/* //<>// //<>// TUIO 1.1 Demo for Processing Copyright (c) 2005-2014 Martin Kaltenbrunner <[email protected]>
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Import the cornerstone warp correction library
// import the TUIO library import TUIO.*; import gifAnimation.*; // declare a TuioProcessing client TuioProcessing tuioClient;
import deadpixel.keystone.*;
Keystone ks; CornerPinSurface surface;
// these are some helper variables which are used // to create scalable graphical feedback float cursor_size = 400; float object_size = 60; //the square representing the fiducial float table_size = 900; // size of the feedback float scale_factor = 1; float angle; PFont font;
//FADE INS float fadeinA = 0; float fadeinB = 0; float fadeinC = 0; float fadeinD = 0; float UfadeinA = 0; float UfadeinB = 0; float UfadeinC = 0; float UfadeinD = 0;
float Ufadein1A = 0; float Ufadein1B = 0; float Ufadein1C = 0;
float fadein1A = 0; float fadein1B = 0; float fadein1C = 0;
float Ufadein3A = 0; float Ufadein3B = 0; float Ufadein3C = 0;
float fadein3A = 0; float fadein3B = 0; float fadein3C = 0;
float Ufadein4A = 0; float Ufadein4B = 0; float Ufadein4C = 0;
float fadein4A = 0; float fadein4B = 0; float fadein4C = 0;
float Ufadein5A = 0; float Ufadein5B = 0; float Ufadein5C = 0;
float fadein5A = 0; float fadein5B = 0; float fadein5C = 0; // Timer for hints
float timer= 0; Â boolean Point1Hint = false; boolean Point2Hint = false; boolean Point3Hint = false; boolean Point4Hint = false; boolean Point5Hint = false; boolean Point6Hint = false;
//Turn off screen float StandbyTimer = 0; PShape StandbyRect;
// Â float = Data type for floating-point numbers, e.g. numbers that have a decimal point.
boolean verbose = false; // print console debug messages boolean callback = true; // updates only after callbacks
/////////////////////////// POINT1 float Point1=0; PShape Point1HintCircle; PImage Point1AImg; PImage Point1BImg; PImage Point1CImg; float P1Mark = 0; PImage P1Marker;
Gif Point1Red;
String Point1ATxt = "Designed by William Burges and consecrated in 1870, the current cathedral is built on the site of at least two previous structures dedicated to Finbarr of Cork The first dated from the 7th century, with works continuing through the 12th century. This building was damaged during the Siege of Cork (1690), and a new structure was built in 1735. " ; String Point1BTxt = "The Current version from 1860 exceeded its initial budget of ÂŁ15k, bringing the total cost to almost ÂŁ100. The style of the building is Early French, Burges's favoured period. Burges oversaw all aspects of the design, including the architecture of the building, the statuary, the stained glass and the internal decoration. The result is \"undoubtedly Burges's greatest work in ecclesiastical architecture\"" ; String Point1CTxt = "Noteworthy features of its magnificent interior include stained glass windows depicting scenes from the Old and New Testaments, marble mosaics from the Pyrenees while the the sanctuary ceiling portrays Christ, surrounded by angels. The building contains more than 1,260 sculptures, a particularly ornate pulpit and even a 24-lb cannonball, a legacy of the Siege of Cork in 1690.";
// UpsideDown Point1 float UPoint1;
float UP1Mark = 0; PImage UP1Marker;
Gif Point1Blue;
////////////////////////// POINT2 float Point2=0; PShape Point2HintCircle; PImage Point2AImg; PImage Point2BImg; PImage Point2Grey; float P2G = 0;
float P2Mark = 0; PImage P2Marker;
Gif Point2Red;
String Point2ATxt = "Grand Parade was originally a channel of the River Lee. The original Hiberno-Norse settlement of Cork grew up on its west bank. By 1726, buildings had developed on the east bank, but the river channel remained in place. In a 1774 map, the northern portion of the street between Oliver Plunkett Street and Daunt Square had been reclaimed, but the southern portion was still a dock. Finally, by 1801, the river channel had completely disappeared and the street was fully present. The elevated doors can still be seen today on the buildings as a reminder of the old river." ; String Point2BTxt = "The tram system was built by Cork Electric Tramways and Lighting Company in the 19th century throughout Cork. The ease of access to transport in Cork was detrimental to a boom in the cities infrastructure. The tram lines running through grand parade started in St. Patrickâs Street and ran to Douglas and Black Rock." ;
// UpsideDown Point2 float UPoint2;
float UP2Mark = 0; PImage UP2Marker; Gif Point2Blue;
/////////////////////////////////////POINT3 float Point3=0; PShape Point3HintCircle; PImage Point3AImg; PImage Point3BImg; PImage Point3CImg; float P3Mark= 0; PImage P3Marker; Gif Point3Red;
String Point3ATxt = "Philip de Barry invited the Dominicans to Cork in 1229 and the order built a church called St Mary's of the Isle. Some stones from the medieval church are set into the walls of the present Dominican priory on Pope's Quay. The foundation stone of the present St Mary's was laid in 1832 and on 20 October 1839 the church was officially opened" ; String Point3BTxt = "Built in the first half of the nineteenth century, this church was designed by Cork architect Kearns Deane, and the portico was added by Deane and Woodward. The imposing scale of the building makes it a notable addition to the quayside, which is accentuated by the elevated position of the church" ; String Point3CTxt = "The fine interior is attributed to John Pyne Hurley, the baldacchino is attributed to Scannell of Cork, while the pulpit and high altar were designed by George Goldie and added in the 1880s. This church forms part of an interesting group of Roman Catholic buildings with the related priory buildings to the north." ;
// UpsideDown Point3 float UPoint3;
float UP3Mark= 0; PImage UP3Marker; Gif Point3Blue;
///////////////////////////////POINT4 float Point4=0; PShape Point4HintCircle; PImage Point4AImg; PImage Point4BImg; PImage Point4CImg; PImage Point4Grey; float  P4Mark = 0; PImage P4Marker; float P4G = 0; Gif Point4Red;
String Point4ATxt = "The centre of Cork city is built on marshy islands in the tidal estuary of the river Lee. Channels of the river originally separated these islands, and some of these channels were spanned in the eighteenth century to form the principal streets of Cork city centre. Among these is Saint Patrick's Street." ; String Point4BTxt = "Parts of Patrick Street were extensively damaged during the Irish War of Independence in the \"Burning of Cork\". It followed an ambush by the IRA of a Briitish patrol in the city. The Black and Tans retaliated by setting fire to several buildings in the city. " ; String Point4CTxt = "There was substantial disruption to services and destruction of some tramcars during The Burning of Cork in December 1920. The events which occurred to the driver, John Hurley, conductor Alex Garvey and passengers on tramcar no 3 were recorded in the Cork Examiner:" ; String Point4DTxt = "Passengers by the last tram to St. Luke's Cross, which left the Statue at 9 p.m. on Saturday, had a rather eventful journey. The car had got about 60 or 70 yards beyond Empress Place police barracks when a number of men in police uniform, carrying carbines and accompanied by Auxiliaries in plain clothes, held it up. They ordered all the passengers off at the point of revolvers. Male passengers were somewhat roughly handled and then ordered to line up for search. Some few were inclined to run and a voice rang out: \"I'll shoot anyone who runs.\" All then stopped but some shots were fired in the air while the searches were being conducted. In some cases when the search was completed the person searched was ordered home, getting a bit of a rough send-off. The tramcar was then broken in by the police and a rifle shot was discharged, the smell of powder permeating the air. The tramcar was brought back to the Statue by the driver and conductor who when it neared there were ordered off. It was later set on fire and completely destroyed.";
// UpsideDown Point4 float UPoint4;
Gif Point4Blue;
float  UP4Mark = 0; PImage UP4Marker;
///////////////////////////////////////POINT 5 float Point5=0; PShape Point5HintCircle; PImage Point5AImg; PImage Point5BImg; Gif Point5Red;
float  P5Mark = 0; PImage P5Marker; float P5G = 0;
String Point5ATxt = "The Custom House was built in 1818 and was designed by the architect Abraham Hargrave. 1882 it became the headquarters of the Cork Harbour Commissioners, now known as the Port of Cork Company. Its elegant boardroom, where the meetings of the members of the company are held, was constructed in 1906." ; String Point5BTxt = "It became known as the ânewâ Custom House. Its main work dealt with inland revenue. In 1882 it became the headquarters of the Cork Harbour Commissioners. The old Custom House in Emmet Place is now part of the complex of buildings which houses the Crawford Municipal Art Gallery." ;
// UpsideDown Point5 float UPoint5;
Gif Point5Blue;
float  UP5Mark = 0; PImage UP5Marker;
PShape rectangle; PShape Lsquare; PShape Rsquare;
PShape TestCircle1; PShape TestCircle2; PShape TestCircle3; PShape Whitespace;
PImage img;
PImage TheMap;
// GIFS Gif BlueStart; Gif RedStart;
float Map = 1; float y = 0;
float g = 0;
// Vars for rotations float UAngle; float Angle;
PGraphics offscreen;
void setup() { Â // GUI setup
 size(1050, 750,P3D);
 ks = new Keystone(this);   surface = ks.createCornerPinSurface(1050, 750, 20);
  offscreen = createGraphics(1050, 750, P3D);
 noStroke();  fill(255, 255, 255);
 BlueStart = new Gif(this, "tester.gif"/*"T2SBlue.gif"*/);  BlueStart.loop();
 RedStart = new Gif(this, "tester.gif"/*"T2SRed.gif"*/);  RedStart.loop();
 Point1Blue= new Gif(this, "FBBlue.gif");  Point1Blue.play();
 Point1Red= new Gif(this, "tester.gif"/*"FBRed.gif"*/);  Point1Red.play();
  Point2Red = new Gif(this, "tester.gif" /*"GPred.gif"*/);  Point2Red.play();
 Point2Blue = new Gif(this, "GPblue.gif");  Point2Blue.play();
 Point3Red = new Gif(this, "tester.gif" /*"MCRed.gif"*/);  Point3Red.play();
 Point3Blue = new Gif(this, "MCBlue.gif");  Point3Blue.play();
 Point4Red= new Gif(this, "tester.gif" /*"PSRed.gif"*/);  Point4Red.play();
 Point4Blue = new Gif(this, "PSBlue.gif");  Point4Blue.play();
 Point5Red = new Gif (this, "tester.gif" /*"CHRed.gif"*/);  Point5Red.play();
 Point5Blue = new Gif(this, "CHBlue.gif");  Point5Blue.play();
 rectangle = createShape(RECT,100,300,100,50);  rectangle.setStroke(color(255));  rectangle.setStrokeWeight(4);  rectangle.setFill(color(127)); //<>//
 // periodic updates  if (!callback) {   frameRate(60); //<>//   loop();  }  // or callback updates
 font = createFont("Arial", 18);  scale_factor = height/table_size;
 // height stores the height of the display window that is set in the size() call
 // finally we create an instance of the TuioProcessing client  // since we add "this" class as an argument the TuioProcessing class expects  // an implementation of the TUIO callback methods in this class (see below)  tuioClient  = new TuioProcessing(this);
 offscreen.tint(255, 127);  StandbyRect = createShape(RECT,0,0, displayWidth, displayHeight);  StandbyRect.setFill(color(0,0,0));  StandbyRect.setStroke(false);
 Whitespace = createShape(RECT, 0, 0, displayWidth, displayHeight);  Whitespace.setFill(color(254,197,87));  Whitespace.setStroke(false);
// IMAGES FOR POINT1 Point1AImg = loadImage("Point1AImg.jpg"); Point1BImg = loadImage("Point1BImg.png"); Point1CImg = loadImage("Point1CImg.png");
TheMap = loadImage("Map.png");
// IMAGES FOR POINT2 Â Point2AImg = loadImage("Point2AImg.png"); Â Point2BImg = loadImage("Point2AImg.png");
 Point2Grey = loadImage("Grey3.png");
 P2Marker = loadImage("RedMark.png");  UP2Marker= loadImage("BlueMark.png");
//IMAGES FOR POINT3 Point3AImg = loadImage("Point3AImg.png"); Point3BImg = loadImage("Point3BImg.png"); Point3CImg = loadImage("Point3CImg.png");
//IMAGES FOR POINT4 Point4AImg = loadImage("Point4AImg.png"); Point4BImg = loadImage("Point4BImg.png"); Point4CImg = loadImage("Point4CImg.png");
Point4Grey = loadImage("Grey3.png");
 //IMAGES FOR POINT5 Point5AImg = loadImage("Point5AImg.png"); Point5BImg = loadImage("Point5BImg.png");
}
// within the draw method we retrieve an ArrayList of type <TuioObject>, <TuioCursor> or <TuioBlob> // from the TuioProcessing client and then loops over all lists to draw the graphical feedback. void draw() {
 offscreen.beginDraw();  offscreen.background(255);  textFont(font,18*scale_factor);  float obj_size = object_size*scale_factor;  float cur_size = cursor_size*scale_factor;
 ///////////////////////////////////// BEGINNING   if(Map==0){    offscreen.tint(255,255);
  offscreen.image(RedStart, 350, 400);   offscreen.image(BlueStart, 350, 0);   }
 ////////////////////////// CITY MAP   if(Map==1){
   offscreen.shape(Whitespace, 0,0);   offscreen.image(TheMap, 0, 0);  Point2Grey.resize(180, 180);  Point4Grey.resize(180,180);  offscreen.tint(255, 200);  if(P2G ==0){  offscreen.image(Point2Grey, 550, 400); }  if(P4G==0){// grand parade  offscreen.image(Point4Grey, 700, 300);} // st. patricks   offscreen.tint(255, 255);  }  //////////////////////////////  Standy mode
 if (StandbyTimer <2500){StandbyTimer += 1;};
 if (StandbyTimer >= 2500){
 }
 ///////////////////////////////////////////////////// HINTS
/*if (timer < 500 &&Map==1){timer += 1;};
 if(timer>=500){   if(Point1Hint == false){    shape(Point1HintCircle, 500, 100);}    if(Point2Hint  == false){   shape(Point2HintCircle, 600, 400);}   if(Point3Hint == false){   shape(Point3HintCircle, 800, 600);}  }  */  if(y==1){   img.resize(300, 150);   image(img, 00, 100);  }
 //////////////////////// POINT MEDIA
 // Point 1 St. Finbarre's  if(Point1==1){   if(fadein1A >= 0){fadein1A += 20;};   offscreen.tint(255, fadein1A);   Point1AImg.resize(300, 150);   offscreen.image(Point1AImg, 0, 100);   textSize(10);   offscreen.text(Point1ATxt, 10, 300, 300, 150);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   fadeinB = 0;    offscreen.image(Point1Red, 200, -80);
 }
  if(Point1==2){   if(fadein1B >= 0){fadein1B += 20;};   offscreen.tint(255, fadein1B);   Point1BImg.resize(300, 150);   offscreen.image(Point1BImg, 0, 100);   offscreen.textSize(10);   offscreen.text(Point1BTxt, 10, 300, 300, 150);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point1Red, 200, -80);  }
  if(Point1==3){   if(fadein1C >= 0){fadein1C += 20;};   offscreen.tint(255, fadein1C);   Point1CImg.resize(300, 150);   offscreen.image(Point1CImg, 0, 100);   textSize(10);   offscreen.text(Point1CTxt, 10, 300, 300, 150);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point1Red,200, -80);  }
 if(UPoint1==1){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein1A >= 0){Ufadein1A += 20;};    offscreen.tint(255, Ufadein1A);   Point1AImg.resize(300,150);  offscreen.image(Point1AImg, 0, 100);   offscreen.fill(#000000, Ufadein1A);   textSize(10);   offscreen.text(Point1ATxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);   UfadeinB = 0;
   offscreen.image(Point1Blue, 200, -80);  }
 if(UPoint1==2){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein1B >= 0){Ufadein1B += 20;};    offscreen.tint(255, Ufadein1B);   Point1BImg.resize(300,150);   offscreen.image(Point1BImg, 0, 100);   offscreen.fill(#000000, Ufadein1B);   offscreen.textSize(10);   offscreen.text(Point1BTxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point1Blue, 200, -80);
 }
 if(UPoint1==3){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein1C >= 0){Ufadein1C += 20;};    offscreen.tint(255, Ufadein1C);   Point1CImg.resize(300,150);   offscreen.image(Point1CImg, 0, 100);   offscreen.fill(#000000, Ufadein1C);   offscreen.textSize(10);   offscreen.text(Point1CTxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);   offscreen.image(Point1Blue, 200, -80);  }
 /////////////////////////// POINT 2
 if(P2Mark == 1){
 offscreen.image (P2Marker, 550, 400);   P2Marker.resize(180,180);
 }
 if(UP2Mark == 1){
 image (UP2Marker, 550, 400);   UP2Marker.resize(180,180);
 }
 if(Point2==1){
  if (fadeinA >= 0){fadeinA += 20;};  offscreen.tint(255, fadeinA);  Point2AImg.resize(300, 150);  offscreen.image(Point2AImg, 0, 100);  offscreen.fill(#000000, fadeinA);  offscreen.textSize(10);  offscreen.text( Point2ATxt, 10, 300, 300, 150);  offscreen.fill(0, 0, 0);  offscreen.tint(255, 255);  fadeinB=0; offscreen.image(Point2Red, 300, 70);  }
 if(Point2==2){
  if (fadeinB >= 0){fadeinB += 20;};    offscreen.tint(255, fadeinB);   Point2BImg.resize(300, 150);  offscreen.image(Point2BImg, 0, 100);   offscreen.fill(#000000, fadeinB);  offscreen.textSize(10);  offscreen.text(Point2BTxt, 10, 300, 300, 300) ;  offscreen.tint(255, 255);  offscreen.image(Point2Red, 300, 70); }
/////////////////////////////////// UPSIDE DOWN POINT 2 Â if(UPoint2==1){ Â Â offscreen.image(Point2Blue, 300, 70);
  offscreen.translate(1300,700);    offscreen.rotate(radians(180));   if (UfadeinA >= 0){UfadeinA += 20;};  offscreen.tint(255, UfadeinA);  Point2AImg.resize(300, 150);  offscreen.image(Point2AImg, -50, 100);  offscreen.fill(#000000, UfadeinA);  offscreen.textSize(10);  offscreen.text(Point2ATxt, -50, 300, 300, 150);  offscreen.fill(0, 0, 0);  offscreen.tint(255, 255);  UfadeinB=0;
 offscreen.rotate(radians(-180));
  offscreen.translate(-1300,-700);
 }
 if(UPoint2==2){
  offscreen.translate(1300,700);    offscreen.rotate(radians(180));   if (UfadeinB >= 0){UfadeinB += 20;};    offscreen.tint(255, UfadeinB);   Point2BImg.resize(300, 150);  offscreen.image(Point2BImg, -50, 100);   offscreen.fill(#000000, UfadeinB);  offscreen.textSize(10);  offscreen.text(Point2BTxt, -50, 300, 300, 300) ;  offscreen.tint(255, 255);
   offscreen.rotate(radians(-180));   offscreen.translate(-1300,-700);     offscreen.image(Point2Blue, 300, 70); } ///////////////////// Point 3
//St. Mary's
 if(Point3==1){   if(fadein3A >= 0){fadein3A += 20;};   offscreen.tint(255, fadein3A);   Point3AImg.resize(300, 150);   offscreen.image(Point3AImg, 0, 100);   offscreen.textSize(10);   offscreen.text(Point3ATxt, 10, 300, 300, 150);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   fadein3B = 0;    offscreen.image(Point3Red, 530, 100);
 }
  if(Point3==2){   if(fadein3B >= 0){fadein3B += 20;};   offscreen.tint(255, fadein3B);   Point3BImg.resize(300, 150);   offscreen.image(Point3BImg, 0, 100);   offscreen.textSize(10);   offscreen.text(Point3BTxt, 10, 300, 300, 150);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point3Red,  530, 100);  }
  if(Point3==3){   if(fadein3C >= 0){fadein3C += 20;};   offscreen.tint(255, fadein3C);   Point3CImg.resize(300, 150);   offscreen.image(Point3CImg, 0, 100);   offscreen.textSize(10);   offscreen.text(Point3CTxt, 10, 300, 300, 150);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point3Red,  530, 100);  }
 if(UPoint3==1){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein3A >= 0){Ufadein3A += 20;};    offscreen.tint(255, Ufadein3A);   Point3AImg.resize(300,150);   offscreen.image(Point3AImg, 0, 100);   offscreen.fill(#000000, Ufadein3A);   offscreen.textSize(10);   offscreen.text(Point3ATxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);   Ufadein3B = 0;
   offscreen.image(Point3Blue,  530, 100);  }
 if(UPoint3==2){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein3B >= 0){Ufadein3B += 20;};    offscreen.tint(255, Ufadein3B);   Point3BImg.resize(300,150);   offscreen.image(Point3BImg, 0, 100);   offscreen.fill(#000000, Ufadein3B);   offscreen.textSize(10);   offscreen.text(Point3BTxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point3Blue,  530, 100);
 }
 if(UPoint3==3){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein3C >= 0){Ufadein3C += 20;};    offscreen.tint(255, Ufadein3C);   Point3CImg.resize(300,150);   offscreen.image(Point3CImg, 0, 100);   offscreen.fill(#000000, Ufadein3C);   offscreen.textSize(10);   offscreen.text(Point3CTxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);   offscreen.image(Point3Blue, 530, 100);  }
///////////////////// Point 5
 offscreen.tint(255,100); offscreen.image(Point5Red, 350, 450);
offscreen.tint(255,255);
// Point 4 CUSTOM HOUSE Â if(Point5==1){ Â Â if(fadein5A >= 0){fadein5A += 20;}; Â Â offscreen.tint(255, fadein5A); Â Â Point5AImg.resize(300, 150); Â Â offscreen.image(Point5AImg, 0, 100); Â offscreen.textSize(10); Â Â offscreen.text(Point5ATxt, 10, 300, 300, 150); Â Â offscreen.fill(0,0,0); Â Â offscreen.tint(255, 255); Â Â fadein5B = 0; Â
 }
  if(Point5==2){   if(fadein5B >= 0){fadein5B += 20;};   offscreen.tint(255, fadein5B);   Point5BImg.resize(300, 150);   offscreen.image(Point5BImg, 0, 100);   offscreen.textSize(10);   offscreen.text(Point5BTxt, 10, 300, 300, 150);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point5Red,350, 450);  }
 if(UPoint5==1){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein5A >= 0){Ufadein5A += 20;};    offscreen.tint(255, Ufadein5A);   Point5AImg.resize(300,150);   offscreen.image(Point5AImg, 0, 100);   offscreen.fill(#000000, Ufadein5A);   offscreen.textSize(10);   offscreen.text(Point5ATxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);   Ufadein5B = 0;
   offscreen.image(Point5Blue, 350, 450);  }
 if(UPoint5==2){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein5B >= 0){Ufadein5B += 20;};    offscreen.tint(255, Ufadein5B);   Point4BImg.resize(300,150);   offscreen.image(Point5BImg, 0, 100);   offscreen.fill(#000000, Ufadein5B);   offscreen.textSize(10);   offscreen.text(Point4BTxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point5Blue, 350, 450);
 }
///////////////////// Point 4
 offscreen.tint(255,100);
  offscreen.image(Point4Red, 400, 240);
offscreen.tint(255,255);
// Point 4 SAINT PATRICKS Â if(Point4==1){ Â Â if(fadein4A >= 0){fadein4A += 20;}; Â Â offscreen.tint(255, fadein4A); Â Â Point4AImg.resize(300, 150); Â Â offscreen.image(Point4AImg, 0, 100); Â offscreen.textSize(10); Â Â offscreen.text(Point4ATxt, 10, 300, 300, 150); Â Â offscreen.fill(0,0,0); Â Â offscreen.tint(255, 255); Â Â fadeinB = 0; Â
  offscreen.image(Point4Red, 400, 240);  }
  if(Point4==2){   if(fadein4B >= 0){fadein4B += 20;};   offscreen.tint(255, fadein4B);   Point4BImg.resize(300, 150);   offscreen.image(Point4BImg, 0, 100);   offscreen.textSize(10);   offscreen.text(Point4BTxt, 10, 300, 300, 150);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point4Red, 400, 240);  }
  if(Point4==3){   if(fadein4C >= 0){fadein4C += 20;};   offscreen.tint(255, fadein4C);   Point4CImg.resize(300, 150);   offscreen.image(Point4CImg, 0, 100);   offscreen.textSize(10);   offscreen.text(Point4CTxt, 10, 300, 300, 150);   offscreen.fill(0,0,0);   offscreen.tint(255, 255);   offscreen.image(Point4Red, 400, 240);  }
 if(UPoint4==1){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein4A >= 0){Ufadein4A += 20;};    offscreen.tint(255, Ufadein4A);   Point4AImg.resize(300,150);   offscreen.image(Point4AImg, 0, 100);   offscreen.fill(#000000, Ufadein4A);   offscreen.textSize(10);   offscreen.text(Point4ATxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);   Ufadein4B = 0;
   offscreen.image(Point4Blue, 400, 240);  }
 if(UPoint4==2){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein4B >= 0){Ufadein4B += 20;};    offscreen.tint(255, Ufadein4B);   Point4BImg.resize(300,150);   offscreen.image(Point4BImg, 0, 100);   offscreen.fill(#000000, Ufadein4B);   offscreen.textSize(10);   offscreen.text(Point4BTxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point4Blue, 400, 240);
 }
 if(UPoint4==3){   offscreen.translate(1300,700);    offscreen.rotate(radians(180));
   if (Ufadein4C >= 0){Ufadein4C += 20;};    offscreen.tint(255, Ufadein4C);   Point4CImg.resize(300,150);   offscreen.image(Point4CImg, 0, 100);   offscreen.fill(#000000, Ufadein4C);   offscreen.textSize(10);   offscreen.text(Point4CTxt, 10, 300, 300, 150);   offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);   offscreen.image(Point4Blue, 400, 240);  }
 ArrayList<TuioObject> tuioObjectList = tuioClient.getTuioObjectList();  for (int i=0;i<tuioObjectList.size();i++) {   TuioObject tobj = tuioObjectList.get(i);   offscreen.stroke(204, 122, 97);   if(tobj.getSymbolID() ==8){    offscreen.stroke (135, 165, 214);   }   offscreen.fill(255,255,255);   offscreen.pushMatrix();   offscreen.translate(tobj.getScreenX(1050),tobj.getScreenY(750));   //offscreen.rotate(tobj.getAngle());   //rect(-obj_size/2,-obj_size/2,obj_size,obj_size);     offscreen.ellipse(-obj_size/2,-obj_size/2, 130,130); // this changes the image that follows the fiducial to a white cirle, making it easier for the camera to see the fiducial   // image(rot8, -obj_size/2, -obj_size/2); // this changes the image that follows the fiducial to a GIF
  offscreen.popMatrix();   //fill(255);   //text(""+tobj.getSymbolID(), tobj.getScreenX(width), tobj.getScreenY(height));
 }
 ArrayList<TuioCursor> tuioCursorList = tuioClient.getTuioCursorList();  for (int i=0;i<tuioCursorList.size();i++) {    TuioCursor tcur = tuioCursorList.get(i);    ArrayList<TuioPoint> pointList = tcur.getPath();
   if (pointList.size()>0) {     stroke(0,0,255);     TuioPoint start_point = pointList.get(0);     for (int j=0;j<pointList.size();j++) {      TuioPoint end_point = pointList.get(j);      line(start_point.getScreenX(width),start_point.getScreenY(height),end_point.getScreenX(width),end_point.getScreenY(height));      start_point = end_point;     }
    stroke(192,192,192);     fill(192,192,192);     ellipse( tcur.getScreenX(width), tcur.getScreenY(height),cur_size,cur_size);     fill(0);     text(""+ tcur.getCursorID(),  tcur.getScreenX(width)-5,  tcur.getScreenY(height)+5);    }  }
 ArrayList<TuioBlob> tuioBlobList = tuioClient.getTuioBlobList();  for (int i=0;i<tuioBlobList.size();i++) {   TuioBlob tblb = tuioBlobList.get(i);   stroke(0);   fill(0);   pushMatrix();   translate(tblb.getScreenX(width),tblb.getScreenY(height));   rotate(tblb.getAngle());   ellipse(-1*tblb.getScreenWidth(width)/2,-1*tblb.getScreenHeight(height)/2, tblb.getScreenWidth(width), tblb.getScreenWidth(width));   popMatrix();   fill(255);   text(""+tblb.getBlobID(), tblb.getScreenX(width), tblb.getScreenX(width));  }
 offscreen.endDraw();  background(0);
 // render the scene, transformed using the corner pin surface  surface.render(offscreen); }
void keyPressed() {  switch(key) {  case 'c':   // enter/leave calibration mode, where surfaces can be warped   // and moved   ks.toggleCalibration();   break;
 case 'l':   // loads the saved layout   ks.load();   break;
 case 's':   // saves the layout   ks.save();   break;  } }
// -------------------------------------------------------------- // these callback methods are called whenever a TUIO event occurs // there are three callbacks for add/set/del events for each object/cursor/blob type // the final refresh callback marks the end of each TUIO frame
// called when an object is added to the scene void addTuioObject(TuioObject tobj) { Â if (verbose) println("add obj "+tobj.getSymbolID()+" ("+tobj.getSessionID()+") "+tobj.getX()+" "+tobj.getY()+" "+tobj.getAngle()); }
// called when an object is moved void updateTuioObject (TuioObject tobj) {  println("set obj "+tobj.getSymbolID()+" ("+tobj.getSessionID()+") "+" Angle=  "+tobj.getAngle()      +"x=  " + tobj.getX()+ "Y=  " + tobj.getY() + "Timer = " + timer /*"Rspeed "+""+tobj.getRotationSpeed()+" "+"MAccell  "+""+tobj.getMotionAccel()+" "+"RAccel  "+""+tobj.getRotationAccel()*/);
//////////////////////////////////////START STUFF
if(tobj.getX()>0.46&&tobj.getX()<0.6&&tobj.getY()>0.74&&tobj.getY()<0.89&&tobj.getRotationSpeed()>.30&&tobj.getSymbolID()==2 Â && Map==0){
Map=1; }
if(tobj.getX()>0.47&&tobj.getX()<0.5&&tobj.getY()>0.16&&tobj.getY()<0.217&&/*tobj.getRotationSpeed()>.30&&*/tobj.getSymbolID()==8 && Map==0){
Map =1; }
///////////////////////////////////// MAP 1
//----------------------------------------------------POINT 1 if(Map==1&&tobj.getX()>0.31&&tobj.getX()<0.46&&tobj.getY()<.23&&tobj.getY()>.0&&tobj.getSymbolID()==2){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point1Hint = true;
 if(Point1<1){  Angle = tobj.getAngle(); Point1=1;}
if (Angle+2 > 6.1){ Â UPoint1=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){   Point1 = 2;   fadein1A=0;   fadein1C=0;}
  if(tobj.getAngle() > Angle + 2 ){ Point1=3; fadein1B= 0; }
if(Point1 > 1 && tobj.getAngle() < UAngle + 1 ){
 Point1=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.31||tobj.getX()>0.46||tobj.getY()>.23|tobj.getY()<.0)){ Â Point1=0; Â fadein1A=0; Â fadein1B=0; Â fadein1C=0;
}
//----------------------------------------------------POINT 1 UPSIDE DOWN if(Map==1&&tobj.getX()>0.31&&tobj.getX()<0.46&&tobj.getY()<.23&&tobj.getY()>.0&&tobj.getSymbolID()==8){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point1Hint = true;
 if(UPoint1<1){  UAngle = tobj.getAngle(); UPoint1=1;}
if (UAngle+2 > 6.1){ Â UPoint1=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){   UPoint1 = 2;   Ufadein1A=0;   Ufadein1C=0;}
  if(tobj.getAngle() > UAngle + 2 ){ UPoint1=3; Ufadein1B= 0; }
if(UPoint1 > 1 && tobj.getAngle() < UAngle + 1 ){
 UPoint1=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.31||tobj.getX()>0.46||tobj.getY()>.23|tobj.getY()<.0)){ Â UPoint1=0; Â Ufadein1A=0; Â Ufadein1B=0; Â Ufadein1C=0; }
//--------------------------------------------------------POINT2 if(Map==1&&tobj.getX()>0.4&&tobj.getX()<0.53&&tobj.getY()<.46&&tobj.getY()>.28&&tobj.getSymbolID()==2){ Â println("angle of fiducial = " + tobj.getAngle()); Â println("Angle TEST Â " + Angle); Â timer=0; P2G = 1;
 if(Point2<1){  Angle = tobj.getAngle();  Point2=1; }
if (Angle+2 > 6.1){ Â Point2=0;}
if( tobj.getAngle() >= Angle + 1 && tobj.getAngle() <= Angle + 2 ){
Point2=2; fadeinA = 0; fadeinC = 0; }
if(Point2 > 1 && tobj.getAngle() <= Angle + 1 ){
 Point2=0;
}
}
if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.42||tobj.getX()>0.53||tobj.getY()>.73||tobj.getY()<.55)){ Point2=0; fadeinA=0; fadeinB=0; fadeinC=0;
if(UP2Mark==0&& P2G >= 1&& UPoint2==0 ){ Â P2Mark=1; } }
//-------------------------------------------------------- UPSIDE DOWN POINT2 if(Map==1&&tobj.getX()>0.4&&tobj.getX()<0.53&&tobj.getY()<.46&&tobj.getY()>.28&&tobj.getSymbolID()==8){ Â println("angle of fiducial = " + tobj.getAngle()); Â println("Angle TEST Â " + Angle); Â timer=0; P2G = 1;
 if(UPoint2<1){  Angle = tobj.getAngle();  UPoint2=1;
}
if (Angle+2 > 6.1){ Â UPoint2=0;}
if( tobj.getAngle() >= Angle + 1 && tobj.getAngle() <= Angle + 2 ){
UPoint2=2; UfadeinA = 0; UfadeinC = 0; }
if(UPoint2 > 1 && tobj.getAngle() <= Angle + 1 ){
 UPoint2=0;
}
}
if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.42||tobj.getX()>0.53||tobj.getY()>.73||tobj.getY()<.55)){ UPoint2=0; UfadeinA=0; UfadeinB=0;
if(P2Mark==0&& P2G >= 1 && Point2==0 ){ Â UP2Mark=1; } }
//----------------------------------------------------POINT 3 if(Map==1&&tobj.getX()>0.63&&tobj.getX()<0.74&&tobj.getY()<.48&&tobj.getY()>.28&&tobj.getSymbolID()==2){
 timer=0;  Point3Hint = true;
 if(Point3<1){  Angle = tobj.getAngle(); Point3=1;}
if (Angle+2 > 6.1){ Â UPoint3=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){   Point3 = 2;   fadein3A=0;   fadein3C=0;}
  if(tobj.getAngle() > Angle + 2 ){ Point3=3; fadein3B= 0; }
if(Point3> 1 && tobj.getAngle() < UAngle + 1 ){
 Point3=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.37||tobj.getX()>0.49||tobj.getY()>.42||tobj.getY()<.19)){ Â Point3=0; Â fadein3A=0; Â fadein3B=0; Â fadein3C=0; }
//----------------------------------------------------POINT 3 UPSIDE DOWN if(Map==1&&tobj.getX()>0.37&&tobj.getX()<0.49&&tobj.getY()<.42&&tobj.getY()>.19&&tobj.getSymbolID()==8){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point3Hint = true;
 if(UPoint3<1){  UAngle = tobj.getAngle(); UPoint3=1;}
if (UAngle+2 > 6.1){ Â UPoint3=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){   UPoint3 = 2;   Ufadein3A=0;   Ufadein3C=0;}
  if(tobj.getAngle() > UAngle + 2 ){ UPoint3=3; Ufadein3B= 0; }
if(UPoint3 > 1 && tobj.getAngle() < UAngle + 1 ){
 UPoint3=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.37||tobj.getX()>0.49||tobj.getY()>.42||tobj.getY()<.19)){ Â UPoint3=0; Â Ufadein3A=0; Â Ufadein3B=0; Â Ufadein3C=0; }
//----------------------------------------------------POINT 4 if(Map==1&&tobj.getX()>0.5&&tobj.getX()<0.65&&tobj.getY()<.68&&tobj.getY()>.48&&tobj.getSymbolID()==2){ println("Upsidedown is a go. UPoint1=" + UPoint4);
 timer=0;  Point4Hint = true;
 if(Point4<1){  Angle = tobj.getAngle(); Point4=1;}
if (Angle+2 > 6.1){ Â UPoint4=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){   Point4 = 2;   fadein4A=0;   fadein4C=0;}
  if(tobj.getAngle() > Angle + 2 ){ Point4=3; fadein4B= 0; }
if(Point4> 1 && tobj.getAngle() < UAngle + 1 ){
 Point4=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.52||tobj.getX()>0.66||tobj.getY()>.66||tobj.getY()<.40)){ Â Point4=0; Â fadein4A=0; Â fadein4B=0; Â fadein4C=0; }
//----------------------------------------------------POINT 4 UPSIDE DOWN if(Map==1&&tobj.getX()>0.52&&tobj.getX()<0.65&&tobj.getY()<.66&&tobj.getY()>.40&&tobj.getSymbolID()==8){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point4Hint = true;
 if(UPoint4<1){  UAngle = tobj.getAngle(); UPoint4=1;}
if (UAngle+2 > 6.1){ Â UPoint4=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){   UPoint4 = 2;   Ufadein4A=0;   Ufadein4C=0;}
  if(tobj.getAngle() > UAngle + 2 ){ UPoint4=3; Ufadein4B= 0; }
if(UPoint4 > 1 && tobj.getAngle() < UAngle + 1 ){
 UPoint4=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.52||tobj.getX()>0.66||tobj.getY()>.66||tobj.getY()<.40)){ Â UPoint4=0; Â Ufadein4A=0; Â Ufadein4B=0; Â Ufadein4C=0; }
}
// Point f x<.59 x>.45 Â
// we have to think about how rotating will change media? The angle cant be used because the fiducial cold be at any angle when it interacts // Has to be the change in angle. I could set a function to get the fiducials angle when it comes into contact with an interaction point // Store that angle in a var and change media when the changed angle is a certain amount of degrees bigger than the var
//In order to differentiate who sees what media at what angles, maybe when they do the first twist, I can assign that fiducial an id or variable, //and then use the co-ordinates and rotation of that variable to activate media
// called when an object is removed from the scene void removeTuioObject(TuioObject tobj) { Â if (verbose) println("del obj "+tobj.getSymbolID()+" ("+tobj.getSessionID()+")"); }
// -------------------------------------------------------------- // called when a cursor is added to the scene void addTuioCursor(TuioCursor tcur) { Â if (verbose) println("add cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY()); Â //redraw(); }
// called when a cursor is moved void updateTuioCursor (TuioCursor tcur) { Â if (verbose) println("set cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY() Â Â Â Â Â +" "+tcur.getMotionSpeed()+" "+tcur.getMotionAccel()); Â //redraw(); }
// called when a cursor is removed from the scene void removeTuioCursor(TuioCursor tcur) { Â if (verbose) println("del cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+")"); Â //redraw() }
// -------------------------------------------------------------- // called when a blob is added to the scene void addTuioBlob(TuioBlob tblb) { Â if (verbose) println("add blb "+tblb.getBlobID()+" ("+tblb.getSessionID()+") "+tblb.getX()+" "+tblb.getY()+" "+tblb.getAngle()+" "+tblb.getWidth()+" "+tblb.getHeight()+" "+tblb.getArea()); Â //redraw(); }
// called when a blob is moved void updateTuioBlob (TuioBlob tblb) { Â if (verbose) println("set blb "+tblb.getBlobID()+" ("+tblb.getSessionID()+") "+tblb.getX()+" "+tblb.getY()+" "+tblb.getAngle()+" "+tblb.getWidth()+" "+tblb.getHeight()+" "+tblb.getArea() Â Â Â Â Â +" "+tblb.getMotionSpeed()+" "+tblb.getRotationSpeed()+" "+tblb.getMotionAccel()+" "+tblb.getRotationAccel()); Â //redraw() }
// called when a blob is removed from the scene void removeTuioBlob(TuioBlob tblb) { Â if (verbose) println("del blb "+tblb.getBlobID()+" ("+tblb.getSessionID()+")"); Â //redraw() }
// -------------------------------------------------------------- // called at the end of each TUIO frame void refresh(TuioTime frameTime) { Â if (verbose) println("frame #"+frameTime.getFrameID()+" ("+frameTime.getTotalMilliseconds()+")"); Â if (callback) redraw(); }
Initial Poster draft
Wishlist
Weâve made a list of the issues we need to tackle in order so we can get this project on the road.
Resolution & warp
Latency â lag with fiducials
The Map needs changing
Graphics for info
Rotations need to be fixed
User Test
Bring up the screen (DONE)
Printing the models
How to get fiducials on modelsâ spray paint or glue?
We need to sand the edge (DONE)
Building the box
Lines connecting info
Twist to share
Standby mode
Continue Screen for after standby
Wooden border
Testing of the table.
The initial home screen works fine with no problems, once it gets to the map, the UI needs to be changed slightly to cater for the detail on the map that is conflicting with the interaction point. This can be done by making the white circle under the fiducial bigger.
Poster Text Draft 4 I think
Tagline: âExtending your museum experienceâ
 Intro: CollĂș is an interactive table that extends your museum experience beyond the exhibition to the cafĂ©. By moving salt and pepper shakers on the table, users can interact with the collaborative interface to explore the rich history of Cork City. Discover how St. Fin Barreâs Cathedral was built  or Corkâs strategic importance in the Napoleonic war. The project aims to spark conversation between museum goers after their visit, over a nice cup of coffee.
 The Tech:
CollĂș makes use of the ReacTIVision framework to recognise when objects are moved. ReacTIVision is an open source, cross-platform computer vision framework for the fast and robust tracking of fiducial markers attached onto physical objects A [MODEL OF CAMERA] is used to track fiducials, special tags that are printed underneath the salt and pepper shakers.
This data is run through ReacTIVision and a programme scripted in Processing. This programme then sends data to a Promethean short throw projector. An aluminium front surface mirror reflects the projection on to the screen. By moving the fiducials, users change the information received from the camera, altering the display in real time.
 Museum Information
How do you keep a connection with a museum visitor, and ensure they recall their experience? Building a lasting relationship with visitors and promoting their engagement is one of the biggest challenges museums face today. The European meSch project is trying to resolve this by personalising visitorâs experience outside the museum. This inspired the team to move their project outside the typical museum space.
A study carried out in John H. Falkâs book, âUnderstanding Museum Visitorâs Motivation and Learningâ, found that visitors remember their time in the museum cafĂ© quite clearly, and it contributes to their retention of the visit. By making the cafĂ© more interactive, the project aims to improve museum experiences as a whole.
 Collaboration
We believe people are more motivated to learn and engage by coming together. In school we gather around a blackboard, in a museum around an exhibition. The study âDigital Tables for Collaborative Information Explorationâ found the physical set up of a table top interface lends itself to exploring information together. The goal of a table top display is to draw people to the information and lead them to discoveries and discussion of the content.
CollĂșâs interface is designed for two people to explore collaboratively. Users can display information independently but many decisions on what is shown requires working together. When both users are on related points, the interface links their objects and they unlock extra information on both locations! Encouraging users to explore together will spark discussion and interest in the content.
Been working on how to track the fiducial o the table. The camera does not always pick up the fiducial if itâs over colored graphics, like the map. The camera has no issue picking it up through the color white though. Weâve come up with two solotions, using a plain white circle, or using a gif similar to our interactions points. Weâre using a red one in this example, but we plan to use a grey one on the final version if we choose to use GIFâsÂ
Edited Poster Text
Tagline: âExtending your museum experienceâ
 Intro: CollĂș is an interactive table that extends your museum experience beyond the exhibition to the cafĂ©. By moving salt and pepper shakers on the table, users can interact with the collaborative interface to discover the rich history of Cork City. The project aims to spark conversation between museum goers after their visit, over a nice cup of coffee. .
OR
CollĂș is a collaborative interface for use in casual, museum cafe environments. Using models common in cafes, users can interact with the digital table top to unveil information. They can share the info they see, or explore on their own. CollĂș aims to start conversation while extending the museum experience beyond their front door.Â
 (Maybe this should be called The SetUp?) The Tech:
CollĂș makes use of the ReacTIVision framework to recognise when objects are moved. ReacTIVision tracks fiducial markers attached onto physical objects. A D7100 Camera is used to track these markers.
The camera input is run through a programme scripted in Processing. This programme then sends data to a short throw projector. An aluminium front surface mirror reflects the projection on to the screen. By moving the fiducials, users change the information displayed in real time.
 Museum Information
How do you keep a connection with a museum visitor, and ensure they recall their experience? Building a lasting relationship with visitors and promoting their engagement is one of the biggest challenges museums face today. The European meSch project is trying to resolve this by personalising visitorâs experience outside the museum. This inspired the team to move their project outside the typical museum space.
Studies show museum visitors remember their time in the museum café quite clearly, and it contributes to their retention of the visit. By making the café more interactive, the project aims to improve museum experiences as a whole.
 Collaboration
People are motivated to learn and engage when in a group. The physical set up of a tabletop interface lends itself to exploring information together. The goal of a tabletop display is to draw people to the information and lead them to discoveries and discussion of the content.
CollĂșâs interface is designed for two people to explore collaboratively. Users can display information independently but many decisions on what is shown requires working together. When both users are on related points. Encouraging users to explore together will spark discussion an interest in the content.
17.84
Poster Text
TechÂ
CollĂș makes use of the ReacTIVision framework to recognise when objects are moved. ReacTIVision tracks fiducial markers attached onto physical objects. A [MODEL OF CAMERA] is used to track these markers.
The camera input is run through a programme scripted in Processing. This programme then sends data to a short throw projector. An aluminium front surface mirror reflects the projection on to the screen. By moving the fiducials, users change the information displayed in real time.
Poster Text #2
Collaboration
People are more motivated to learn and engage by coming together. In school we gather around a blackboard, in a museum around an exhibition. The physical set up of a tabletop interface lends itself to exploring information together. The ultimate goal of a tabletop display is to draw people to the information and lead them to discoveries and discussion of the content.
CollĂșâs interface is designed for two people to explore collaboratively. Users can display information independently but many decisions on what is shown requires working together. When both users are on related points, the interface links their objects and they unlock extra information on both locations! Encouraging users to explore together will spark discussion an interest in the content.
Poster text
Tagline: âExtending your museum experienceâ
 Intro: CollĂș is an interactive table that extends your museum experience beyond the exhibition to the cafĂ©. By moving salt and pepper shakers on the table, users can interact with the collaborative interface to discover the rich history of Cork City.  The project aims to spark conversation between museum goers after their visit, over a nice cup of coffee. .
OR
CollĂș is a collaborative interface for use in casual, museum cafe environments. Using models common in cafes, users can interact with the digital table top to unveil information. They can share the info they see, or explore on their own. CollĂș aims to start conversation while extending the museum experience beyond their front door.Â
 (Maybe this should be called The Set Up?) The Tech:
CollĂș makes use of the ReacTIVision framework to recognise when objects are moved. ReacTIVision is an open source, cross-platform computer vision framework for the fast and robust tracking of fiducial markers attached onto physical objects A [MODEL OF CAMERA] is used to track fiducials, special tags that are printed underneath the salt and pepper shakers.
This data is run through ReacTIVision and a programme scripted in Processing. This programme then sends data to a Promethean short throw projector. An aluminium front surface mirror reflects the projection on to the screen. By moving the fiducials, users change the information received from the camera, altering the display in real time.
 Museum Information
How do you keep a connection with a museum visitor, and ensure they recall their experience? Building a lasting relationship with visitors and promoting their engagement is one of the biggest challenges museums face today. The European meSch project is trying to resolve this by personalising visitorâs experience outside the museum. This inspired the team to move their project outside the typical museum space.
Studies show museum visitors remember their time in the museum café quite clearly, and it contributes to their retention of the visit. By making the café more interactive, the project aims to improve museum experiences as a whole.
 Collaboration
Progress.
Construction montage.Â