class IGPEsrefogluMosque extends IGPHexagon{ PVector[][] cornerPieces; PVector[][] sidePieces; PVector[] centerStar; ArrayList vectorsOnInterlockingTriangles; IGPEsrefogluMosque(float x, float y, float d){ super(x, y, d); setVectorsOnInterlockingTriangles(); setVectorsOnInnerHexagon(); setCornerPieces(6,6); setSidePieces(6,3); setCenterStar(12); } void setVectorsOnInnerHexagon(){ vectorsOnInnerHexagon = new ArrayList (18); 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(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(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(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(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(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(int amount, int numberOfVectors){ cornerPieces = new PVector[amount][numberOfVectors]; PVector[] cornerPiece = new PVector[numberOfVectors]; cornerPiece[0] = vectorsOnInnerHexagon.get(0); cornerPiece[1] = vectorsOnInnerHexagon.get(1); cornerPiece[2] = vectorsOnInnerHexagon.get(2); cornerPiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14)); cornerPiece[4] = getLineIntersection(vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14)); cornerPiece[5] = getLineIntersection(vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11)); cornerPieces[0] = cornerPiece; cornerPiece = new PVector[numberOfVectors]; cornerPiece[0] = vectorsOnInnerHexagon.get(3); cornerPiece[1] = vectorsOnInnerHexagon.get(4); cornerPiece[2] = vectorsOnInnerHexagon.get(5); cornerPiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(17)); cornerPiece[4] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(17)); cornerPiece[5] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14)); cornerPieces[1] = cornerPiece; cornerPiece = new PVector[numberOfVectors]; cornerPiece[0] = vectorsOnInnerHexagon.get(6); cornerPiece[1] = vectorsOnInnerHexagon.get(7); cornerPiece[2] = vectorsOnInnerHexagon.get(8); cornerPiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15)); cornerPiece[4] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12)); cornerPiece[5] = getLineIntersection(vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12)); cornerPieces[2] = cornerPiece; cornerPiece = new PVector[numberOfVectors]; cornerPiece[0] = vectorsOnInnerHexagon.get(9); cornerPiece[1] = vectorsOnInnerHexagon.get(10); cornerPiece[2] = vectorsOnInnerHexagon.get(11); cornerPiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12)); cornerPiece[4] = getLineIntersection(vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15), vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12)); cornerPiece[5] = getLineIntersection(vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15), vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9)); cornerPieces[3] = cornerPiece; cornerPiece = new PVector[numberOfVectors]; cornerPiece[0] = vectorsOnInnerHexagon.get(12); cornerPiece[1] = vectorsOnInnerHexagon.get(13); cornerPiece[2] = vectorsOnInnerHexagon.get(14); cornerPiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14)); cornerPiece[4] = getLineIntersection(vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11)); cornerPiece[5] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11)); cornerPieces[4] = cornerPiece; cornerPiece = new PVector[numberOfVectors]; cornerPiece[0] = vectorsOnInnerHexagon.get(15); cornerPiece[1] = vectorsOnInnerHexagon.get(16); cornerPiece[2] = vectorsOnInnerHexagon.get(17); cornerPiece[3] = getLineIntersection(vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11)); cornerPiece[4] = getLineIntersection(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11)); cornerPiece[5] = getLineIntersection(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14), vectorsOnInnerHexagon.get(15), vectorsOnInnerHexagon.get(8)); cornerPieces[5] = cornerPiece; } void setSidePieces(int amount, int numberOfVectors){ sidePieces = new PVector[amount][numberOfVectors]; PVector[] sidePiece = new PVector[numberOfVectors]; sidePiece[0] = vectorsOnInnerHexagon.get(17); sidePiece[1] = vectorsOnInnerHexagon.get(0); sidePiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(6)); sidePieces[0] = sidePiece; sidePiece = new PVector[numberOfVectors]; sidePiece[0] = vectorsOnInnerHexagon.get(2); sidePiece[1] = vectorsOnInnerHexagon.get(3); sidePiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14)); sidePieces[1] = sidePiece; sidePiece = new PVector[numberOfVectors]; sidePiece[0] = vectorsOnInnerHexagon.get(5); sidePiece[1] = vectorsOnInnerHexagon.get(6); sidePiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(17)); sidePieces[2] = sidePiece; sidePiece = new PVector[numberOfVectors]; sidePiece[0] = vectorsOnInnerHexagon.get(8); sidePiece[1] = vectorsOnInnerHexagon.get(9); sidePiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15)); sidePieces[3] = sidePiece; sidePiece = new PVector[numberOfVectors]; sidePiece[0] = vectorsOnInnerHexagon.get(11); sidePiece[1] = vectorsOnInnerHexagon.get(12); sidePiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12)); sidePieces[4] = sidePiece; sidePiece = new PVector[numberOfVectors]; sidePiece[0] = vectorsOnInnerHexagon.get(14); sidePiece[1] = vectorsOnInnerHexagon.get(15); sidePiece[2] = getLineIntersection(vectorsOnInnerHexagon.get(14), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15)); sidePieces[5] = sidePiece; } void setCenterStar(int numberOfVectors){ centerStar = new PVector[numberOfVectors]; centerStar[0] = getLineIntersection(vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11)); centerStar[1] = getLineIntersection(vectorsOnInnerHexagon.get(17), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14)); centerStar[2] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14)); centerStar[3] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(17)); centerStar[4] = getLineIntersection(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12), vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(17)); centerStar[5] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12)); centerStar[6] = getLineIntersection(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9), vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15)); centerStar[7] = getLineIntersection(vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15), vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12)); centerStar[8] = getLineIntersection(vectorsOnInnerHexagon.get(11), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12)); centerStar[9] = getLineIntersection(vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11)); centerStar[10] = getLineIntersection(vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15), vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14)); centerStar[11] = getLineIntersection(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14), vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11)); } void createInterlockingTriangles(){ useStrokeColor(); useFillColor(); createInnerTriangle(); createInnerTriangleTilted(60); } void createParallelBorderLines(){ useStrokeColor(); useFillColor(); createLine(vectorsOnInnerHexagon.get(0), vectorsOnInnerHexagon.get(11)); createLine(vectorsOnInnerHexagon.get(2), vectorsOnInnerHexagon.get(9)); createLine(vectorsOnInnerHexagon.get(3), vectorsOnInnerHexagon.get(14)); createLine(vectorsOnInnerHexagon.get(5), vectorsOnInnerHexagon.get(12)); createLine(vectorsOnInnerHexagon.get(6), vectorsOnInnerHexagon.get(17)); createLine(vectorsOnInnerHexagon.get(8), vectorsOnInnerHexagon.get(15)); } void createCornerPieces(){ useStrokeColor(); useFillColor(); for(int i=0; i0){ beginShape(); for(int j=0; j0){ beginShape(); for(int j=0; j