import processing.pdf.*; import proxml.*; XMLElement xmeml; XMLInOut xmlInOut; String filename = "islamic-penrose.xml"; color bg = color(255); boolean record; ArrayList scales = new ArrayList(); ArrayList tiledraws = new ArrayList(); float W_HEXA = 340.543; float H_HEXA = 221.445; float W_DODECA = 579.359; float H_DODECA = 551.007; float W_BOWTIE = 358.575; float H_BOWTIE = 130.196; float scale_jump = (68.483/579.572); Scale scale_main; //float scale_jump = 80; /* {{dodecagons}, {bowties}, {hexagons}} */ float[][] x_d = {{110.766, 179.137, 200.318, 289.913}, {55.38, 144.926, 155.474, 217.421, 251.452, 234.53, 245.04, 272.613}, {61.87, 138.381, 196.231, 234.414, 272.569, 261.995, 227.934, 251.474, 289.628}}; float[][] y_d = {{0, 0, 64.969, 0}, {0, 64.975, 32.612, 117.579, 117.645, 0, 32.623, 52.708}, {20.047, 44.898, 117.541, 105.198, 117.633, 85.172, 20.236, 52.722, 65.108}}; float[][] t_d = {{0, 0, 0, 0}, {0, 0, PI/5.0, 2.0*PI/5.0, 3.0*PI/5.0, 0, -PI/5.0, -2.0*PI/5.0}, {PI/10.0, PI/10.0, 3.0*PI/10.0, HALF_PI, 7.0*PI/10.0, PI/10.0, -PI/10.0, 7.0*PI/10.0, HALF_PI}}; float[][] x_b = {{0, 68.637, 89.699, 89.699, 179.336, -68.637, -89.699, -89.699, -179.336}, { 44.85, 44.85, -44.85, -44.85, 123.971, -123.971, 134.563, 134.563, -134.563, -134.563, 145.08, 145.08, -145.08, -145.08}, {27.736, 27.736, -27.736, -27.736, 117.428, 117.428, -117.428, -117.428, 151.619, 151.619, -151.619, -151.619, 151.635, 151.635, -151.635, -151.635, 179.294, 179.294, -179.294, -179.294}}; float[][] y_b = {{0, 0, 65.23, -65.23, 0, 0, 65.23, -65.23, 0}, {32.621, -32.621, 32.621, -32.621, 0, 0, 32.621, -32.621, 32.621, -32.621, 64.855, -64.855, 64.855, -64.855}, {45.031, -45.031, 45.031, -45.031, 20.168, -20.168, 20.168, -20.168, 44.742, -44.742, 44.742, -44.742, 84.955, -84.955, 84.955, -84.955, 64.845, -64.845, 64.845, -64.845}}; float[][] t_b = {{0, 0, 0, 0, 0, 0, 0, 0, 0}, {PI/5.0, -PI/5.0, -PI/5.0, PI/5.0, 0, 0, -PI/5.0, PI/5.0, PI/5.0, -PI/5.0, 0, 0, 0, 0}, {PI/10.0, -PI/10.0, -PI/10.0, PI/10.0, -PI/10.0, PI/10.0, PI/10.0, -PI/10.0, -PI/10.0, PI/10.0, PI/10.0, -PI/10.0, PI/10.0, -PI/10.0, -PI/10.0, PI/10.0, HALF_PI, HALF_PI, HALF_PI, HALF_PI}}; float[][] x_h = {{0, 40.222, 40.222, -40.222, -40.222, 0, 0, 130.174, -130.174, 170.395, 170.395, -170.395, -170.395}, {52.651, 52.651, -52.651, -52.651, 0, 0, 52.651, 52.651, -52.651, -52.651, 117.742, 117.742, -117.742, -117.742, 117.742, 117.742, -117.742, -117.742, 182.823, 182.823, -182.823, -182.823}, {85.202, 85.202, -85.202, -85.202, 85.202, 85.202, -85.202, -85.202, 65.083, 65.083, 65.083, -65.083, -65.083, -65.083, 105.313, 105.313, -105.313, -105.313, 117.742, 117.742, -117.742, -117.742, 223.046, 223.046, -223.046, -223.046, 195.236, -195.236}}; float[][] y_h = {{0, 55.362, -55.362, 55.362, -55.362, 110.721, -110.721, 0, 0, 55.359, -55.359, 55.359, -55.359}, {17.108, -17.108, 17.108, -17.108, 55.358, 55.358, 93.612, -93.612, 93.612, -93.612, 38.254, -38.254, 38.254, -38.254, 72.465, -72.465, 72.465, -72.465, 17.105, -17.105, 17.105, -17.105}, {27.681, -27.681, 27.681, -27.681, 83.038, -83.038, 83.038, -83.038, 110.721, 0, -110.721, 110.721, 0, -110.721, 55.359, -55.359, 55.359, -55.359, 93.611, -93.611, 93.611, -93.611, 17.106, -17.106, 17.106, -17.106, 0, 0}}; float[][] t_h = {{PI/10.0, PI/10.0, PI/10.0, PI/10.0, PI/10.0, PI/10.0, PI/10.0, PI/10.0, PI/10.0, PI/10.0, PI/10.0, PI/10.0, PI/10.0}, {PI/10.0, -PI/10.0, -PI/10.0, PI/10.0, HALF_PI, HALF_PI, -PI/10.0, PI/10.0, PI/10.0, -PI/10.0, PI/10.0, -PI/10.0, -PI/10.0, PI/10.0, -PI/10.0, PI/10.0, PI/10.0, -PI/10.0, PI/10.0, -PI/10.0, -PI/10.0, PI/10.0}, {-PI/2.5, PI/2.5, PI/2.5, -PI/2.5, PI/2.5, -PI/2.5, -PI/2.5, PI/2.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -PI/5.0, PI/5.0, PI/5.0, -PI/5.0, -PI/5.0, PI/5.0, PI/5.0, -PI/5.0, 0, 0}}; float[][] rl_d, tl_d, rl_b, tl_b, rl_h, tl_h; void setup(){ size(600, 600); smooth(); frameRate(15); xmlInOut = new XMLInOut(this); try{ xmlInOut.loadElement("data/"+filename); }catch(Exception e){ println("couldn't load xml"); //if the xml file could not be loaded it has to be created xmlEvent(new XMLElement("xmeml")); } float[][] new_x_d = {new float[x_d[0].length*10 + 1], new float[x_d[1].length*10], new float[x_d[2].length*10]}; float[][] new_y_d = {new float[x_d[0].length*10 + 1], new float[x_d[1].length*10], new float[x_d[2].length*10]}; float[][] new_t_d = {new float[x_d[0].length*10 + 1], new float[x_d[1].length*10], new float[x_d[2].length*10]}; for(int i=0; i