class IGPMustansiriyaMadrasa extends IGPHexagon{ ArrayList vectorsOnInterlockingTriangles; PVector[][] cornerPieces; PVector[][] sidePieces; ArrayList middleHexagon; IGPMustansiriyaMadrasa(float x, float y, float d){ super(x, y, d); setVectorsOnInterlockingTriangles(); setVectorsOnInnerHexagon(); setCornerPieces(); setSidePieces(); setMiddleHexagon(); } void setVectorsOnInnerHexagon(){ vectorsOnInnerHexagon = new ArrayList (24); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(0)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(4), vectorsOnInterlockingTriangles.get(0), baseVectorsOnInnerHexagon.get(0).x, false)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(1)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(1), vectorsOnInterlockingTriangles.get(3), vectorsOnInterlockingTriangles.get(0).x, false)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(2)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(5), vectorsOnInterlockingTriangles.get(1), mid.y+(radius*5/6), true)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(3)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(4), vectorsOnInterlockingTriangles.get(2), mid.y+(radius*5/6), true)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(4)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(0), vectorsOnInterlockingTriangles.get(2), vectorsOnInterlockingTriangles.get(3).x, false)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(5)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(5), vectorsOnInterlockingTriangles.get(3), baseVectorsOnInnerHexagon.get(6).x, false)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(6)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(1), vectorsOnInterlockingTriangles.get(3), baseVectorsOnInnerHexagon.get(6).x, false)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(7)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(0), vectorsOnInterlockingTriangles.get(4), vectorsOnInterlockingTriangles.get(3).x, false)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(8)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(2), vectorsOnInterlockingTriangles.get(4), mid.y-(radius*5/6), true)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(9)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(1), vectorsOnInterlockingTriangles.get(5), mid.y-(radius*5/6), true)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(10)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(3), vectorsOnInterlockingTriangles.get(5), vectorsOnInterlockingTriangles.get(0).x, false)); vectorsOnInnerHexagon.add(baseVectorsOnInnerHexagon.get(11)); vectorsOnInnerHexagon.add(getVectorOnExtendedLine(vectorsOnInterlockingTriangles.get(0), vectorsOnInterlockingTriangles.get(2), baseVectorsOnInnerHexagon.get(0).x, false)); } void setVectorsOnInterlockingTriangles(){ vectorsOnInterlockingTriangles = new ArrayList (6); vectorsOnInterlockingTriangles.add(getLineIntersection(baseVectorsOnInnerHexagon.get(1), baseVectorsOnInnerHexagon.get(9), baseVectorsOnInnerHexagon.get(11), baseVectorsOnInnerHexagon.get(3))); vectorsOnInterlockingTriangles.add(getLineIntersection(baseVectorsOnInnerHexagon.get(1), baseVectorsOnInnerHexagon.get(5), baseVectorsOnInnerHexagon.get(11), baseVectorsOnInnerHexagon.get(3))); vectorsOnInterlockingTriangles.add(getLineIntersection(baseVectorsOnInnerHexagon.get(1), baseVectorsOnInnerHexagon.get(5), baseVectorsOnInnerHexagon.get(3), baseVectorsOnInnerHexagon.get(7))); vectorsOnInterlockingTriangles.add(getLineIntersection(baseVectorsOnInnerHexagon.get(0), baseVectorsOnInnerHexagon.get(6), baseVectorsOnInnerHexagon.get(3), baseVectorsOnInnerHexagon.get(7))); vectorsOnInterlockingTriangles.add(getLineIntersection(baseVectorsOnInnerHexagon.get(2), baseVectorsOnInnerHexagon.get(8), baseVectorsOnInnerHexagon.get(11), baseVectorsOnInnerHexagon.get(7))); vectorsOnInterlockingTriangles.add(getLineIntersection(baseVectorsOnInnerHexagon.get(1), baseVectorsOnInnerHexagon.get(9), baseVectorsOnInnerHexagon.get(11), baseVectorsOnInnerHexagon.get(7))); } void setCornerPieces(){ cornerPieces = new PVector[6][4]; PVector[] cornerPiece = new PVector[4]; cornerPiece[0] = vectorsOnInnerHexagon.get(1); cornerPiece[1] = vectorsOnInnerHexagon.get(2); cornerPiece[2] = vectorsOnInnerHexagon.get(3); cornerPiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(7), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(21)); cornerPieces[0] = cornerPiece; cornerPiece = new PVector[4]; cornerPiece[0] = vectorsOnInnerHexagon.get(5); cornerPiece[1] = vectorsOnInnerHexagon.get(6); cornerPiece[2] = vectorsOnInnerHexagon.get(7); cornerPiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(7)); cornerPieces[1] = cornerPiece; cornerPiece = new PVector[4]; cornerPiece[0] = vectorsOnInnerHexagon.get(9); cornerPiece[1] = vectorsOnInnerHexagon.get(10); cornerPiece[2] = vectorsOnInnerHexagon.get(11); cornerPiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(15)); cornerPieces[2] = cornerPiece; cornerPiece = new PVector[4]; cornerPiece[0] = getLineIntersection(vectorsOnInnerHexagon.get(13), vectorsOnInnerHexagon.get(19), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(15)); cornerPiece[1] = vectorsOnInnerHexagon.get(13); cornerPiece[2] = vectorsOnInnerHexagon.get(14); cornerPiece[3] = vectorsOnInnerHexagon.get(15); cornerPieces[3] = cornerPiece; cornerPiece = new PVector[4]; cornerPiece[0] = vectorsOnInnerHexagon.get(19); cornerPiece[1] = getLineIntersection(vectorsOnInnerHexagon.get(13), vectorsOnInnerHexagon.get(19), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(23)); cornerPiece[2] = vectorsOnInnerHexagon.get(17); cornerPiece[3] = vectorsOnInnerHexagon.get(18); cornerPieces[4] = cornerPiece; cornerPiece = new PVector[4]; cornerPiece[0] = vectorsOnInnerHexagon.get(22); cornerPiece[1] = vectorsOnInnerHexagon.get(23); cornerPiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(21), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(23)); cornerPiece[3] = vectorsOnInnerHexagon.get(21); cornerPieces[5] = cornerPiece; } void setSidePieces(){ sidePieces = new PVector[6][4]; PVector[] sidePiece = new PVector[4]; sidePiece[0] = vectorsOnInnerHexagon.get(3); sidePiece[1] = vectorsOnInnerHexagon.get(5); sidePiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(7)); sidePiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(7), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(21)); sidePieces[0] = sidePiece; sidePiece = new PVector[4]; sidePiece[0] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(7)); sidePiece[1] = vectorsOnInnerHexagon.get(7); sidePiece[2] = vectorsOnInnerHexagon.get(9); sidePiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(15)); sidePieces[1] = sidePiece; sidePiece = new PVector[4]; sidePiece[0] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(15)); sidePiece[1] = vectorsOnInnerHexagon.get(11); sidePiece[2] = vectorsOnInnerHexagon.get(13); sidePiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(13), vectorsOnInnerHexagon.get(19), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(15)); sidePieces[2] = sidePiece; sidePiece = new PVector[4]; sidePiece[0] = getLineIntersection(vectorsOnInnerHexagon.get(13), vectorsOnInnerHexagon.get(19), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(23)); sidePiece[1] = getLineIntersection(vectorsOnInnerHexagon.get(13), vectorsOnInnerHexagon.get(19), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(15)); sidePiece[2] = vectorsOnInnerHexagon.get(15); sidePiece[3] = vectorsOnInnerHexagon.get(17); sidePieces[3] = sidePiece; sidePiece = new PVector[4]; sidePiece[0] = vectorsOnInnerHexagon.get(21); sidePiece[1] = getLineIntersection(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(21), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(23)); sidePiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(13), vectorsOnInnerHexagon.get(19), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(23)); sidePiece[3] = vectorsOnInnerHexagon.get(19); sidePieces[4] = sidePiece; sidePiece = new PVector[4]; sidePiece[0] = vectorsOnInnerHexagon.get(23); sidePiece[1] = vectorsOnInnerHexagon.get(1); sidePiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(7), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(21)); sidePiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(21), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(23)); sidePieces[5] = sidePiece; } void setMiddleHexagon(){ middleHexagon = new ArrayList (6); middleHexagon.add(getLineIntersection(vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(7), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(21))); middleHexagon.add(getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(7))); middleHexagon.add(getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(15))); middleHexagon.add(getLineIntersection(vectorsOnInnerHexagon.get(13), vectorsOnInnerHexagon.get(19), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(15))); middleHexagon.add(getLineIntersection(vectorsOnInnerHexagon.get(13), vectorsOnInnerHexagon.get(19), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(23))); middleHexagon.add(getLineIntersection(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(21), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(23))); } void createInnerInterlockingTriangles(){ useStrokeColor(); useFillColor(); createLine(vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(15)); createLine(vectorsOnInnerHexagon.get(7), vectorsOnInnerHexagon.get(17)); createLine(vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(23)); createLine(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(13)); createLine(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(19)); createLine(vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(21)); } void createParallelBorderLines(){ useStrokeColor(); useFillColor(); createLine(vectorsOnInnerHexagon.get(1), vectorsOnInnerHexagon.get(7)); createLine(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(21)); createLine(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(11)); createLine(vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(15)); createLine(vectorsOnInnerHexagon.get(13), vectorsOnInnerHexagon.get(19)); createLine(vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(23)); } void createInterlockingTriangles(){ useStrokeColor(); useFillColor(); createInnerTriangle(); createInnerTriangleTilted(60); } void createCornerPieces(){ useStrokeColor(); useFillColor(); for(int i=0; i0){ beginShape(); for(int j=0; j0){ beginShape(); for(int j=0; j