diff options
-rw-r--r-- | AutoVisual/IGPMustansiriyaMadrasa.pde | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/AutoVisual/IGPMustansiriyaMadrasa.pde b/AutoVisual/IGPMustansiriyaMadrasa.pde new file mode 100644 index 0000000..cd15e88 --- /dev/null +++ b/AutoVisual/IGPMustansiriyaMadrasa.pde @@ -0,0 +1,236 @@ +class IGPMustansiriyaMadrasa extends IGPHexagon{ + + ArrayList <PVector> vectorsOnInterlockingTriangles; + PVector[][] cornerPieces; + PVector[][] sidePieces; + ArrayList <PVector> middleHexagon; + IGPMustansiriyaMadrasa(float x, float y, float d){ + super(x, y, d); + setVectorsOnInterlockingTriangles(); + setVectorsOnInnerHexagon(); + setCornerPieces(); + setSidePieces(); + setMiddleHexagon(); + } + + void setVectorsOnInnerHexagon(){ + vectorsOnInnerHexagon = new ArrayList <PVector> (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 <PVector> (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 <PVector> (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; i<cornerPieces.length; i++){ + if(cornerPieces[i].length>0){ + beginShape(); + for(int j=0; j<cornerPieces[i].length; j++){ + vertex(cornerPieces[i][j].x, cornerPieces[i][j].y); + } + endShape(); + } + } + } + + void createSidePieces(){ + useStrokeColor(); + useFillColor(); + for(int i=0; i<sidePieces.length; i++){ + if(sidePieces[i].length>0){ + beginShape(); + for(int j=0; j<sidePieces[i].length; j++){ + vertex(sidePieces[i][j].x, sidePieces[i][j].y); + } + endShape(); + } + } + } + + void createMiddleHexagon(){ + useStrokeColor(); + useFillColor(); + beginShape(); + for (PVector vector: middleHexagon) { + vertex(vector.x, vector.y); + } + endShape(); + } + + void display(){ + setStrokeColor(new Float[] {0.0, 0.0, 0.0, 0.0}); + setFillColor(new Float[] {1.0, 1.0, 1.0, 1.0}); + createCornerPieces(); + setStrokeColor(new Float[] {0.66, 0.66, 0.8, 0.0}); + setFillColor(new Float[] {0.0, 1.0, 0.0, 1.0}); + createSidePieces(); + setStrokeColor(new Float[] {0.0, 0.0, 0.0, 0.0}); + setFillColor(new Float[] {0.0, 0.0, 1.0, 1.0}); + createMiddleHexagon(); + } + + void displayConstructionLines(){ + super.displayConstructionLines(); + setStrokeColor(new Float[] {0.4, 0.4, 0.8, 1.0}); + createInterlockingTriangles(); + createInnerInterlockingTriangles(); + createParallelBorderLines(); + setStrokeColor(new Float[] {0.8, 0.0, 0.0, 1.0}); + setFillColor(new Float[] {0.8, 0.8, 0.8, 1.0}); + createVectorIndicatorOnInnerHexagon(4); + setStrokeColor(new Float[] {0.4, 0.4, 0.8, 1.0}); + setFillColor(new Float[] {0.0, 0.0, 0.0, 0.0}); + } + +} |