summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AutoVisual/IGPEsrefogluMosque.pde231
1 files changed, 231 insertions, 0 deletions
diff --git a/AutoVisual/IGPEsrefogluMosque.pde b/AutoVisual/IGPEsrefogluMosque.pde
new file mode 100644
index 0000000..20ee77e
--- /dev/null
+++ b/AutoVisual/IGPEsrefogluMosque.pde
@@ -0,0 +1,231 @@
+class IGPEsrefogluMosque extends IGPHexagon{
+
+ PVector[][] cornerPieces;
+ PVector[][] sidePieces;
+ PVector[] centerStar;
+ ArrayList <PVector> 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 <PVector> (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 <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(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; 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 createCenterStar(){
+ useStrokeColor();
+ useFillColor();
+ beginShape();
+ for(int i=0; i<centerStar.length; i++){
+ vertex(centerStar[i].x, centerStar[i].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});
+ createCenterStar();
+ }
+
+ void displayConstructionLines(){
+ super.displayConstructionLines();
+ setStrokeColor(new Float[] {0.4, 0.4, 0.8, 1.0});
+ createInterlockingTriangles();
+ 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});
+ }
+
+}
+