class IGPHexagon extends IGPFamily{ ArrayList baseVectorsOnInnerHexagon; ArrayList baseVectorsOnConstructionCircles; ArrayList vectorsOnInnerHexagon; IGPHexagon(float x, float y, float d){ super(x, y, d); setBaseVectorsOnInnerHexagon(); setConstructionCircleCenters(); setBaseVectorsOnConstructionCircles(); } void setBaseVectorsOnInnerHexagon(){ baseVectorsOnInnerHexagon = new ArrayList (12); baseVectorsOnInnerHexagon.add(getLineIntersection(alphaCircleVectors.get(11), alphaCircleVectors.get(1), mid, alphaCircleVectors.get(0))); baseVectorsOnInnerHexagon.add(alphaCircleVectors.get(1)); baseVectorsOnInnerHexagon.add(getLineIntersection(alphaCircleVectors.get(1), alphaCircleVectors.get(3), mid, alphaCircleVectors.get(2))); baseVectorsOnInnerHexagon.add(alphaCircleVectors.get(3)); baseVectorsOnInnerHexagon.add(getLineIntersection(alphaCircleVectors.get(3), alphaCircleVectors.get(5), mid, alphaCircleVectors.get(4))); baseVectorsOnInnerHexagon.add(alphaCircleVectors.get(5)); baseVectorsOnInnerHexagon.add(getLineIntersection(alphaCircleVectors.get(5), alphaCircleVectors.get(7), mid, alphaCircleVectors.get(6))); baseVectorsOnInnerHexagon.add(alphaCircleVectors.get(7)); baseVectorsOnInnerHexagon.add(getLineIntersection(alphaCircleVectors.get(7), alphaCircleVectors.get(9), mid, alphaCircleVectors.get(8))); baseVectorsOnInnerHexagon.add(alphaCircleVectors.get(9)); baseVectorsOnInnerHexagon.add(getLineIntersection(alphaCircleVectors.get(9), alphaCircleVectors.get(11), mid, alphaCircleVectors.get(10))); baseVectorsOnInnerHexagon.add(alphaCircleVectors.get(11)); } void setConstructionCircleCenters(){ constructionCircleCenters = new ArrayList (4); constructionCircleCenters.add(alphaCircleVectors.get(0)); constructionCircleCenters.add(alphaCircleVectors.get(2)); constructionCircleCenters.add(alphaCircleVectors.get(4)); constructionCircleCenters.add(alphaCircleVectors.get(6)); constructionCircleCenters.add(alphaCircleVectors.get(8)); constructionCircleCenters.add(alphaCircleVectors.get(10)); } void setBaseVectorsOnConstructionCircles(){ baseVectorsOnConstructionCircles = new ArrayList (12); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(0), 0)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(1), 0)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(1), 60)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(1), 120)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(2), 120)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(3), 120)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(3), 180)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(4), 180)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(4), 240)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(4), 300)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(5), 300)); baseVectorsOnConstructionCircles.add(getVectorOnCircle(constructionCircleCenters.get(5), 0)); } void createDividingLinesOnConstructionCircles(){ useStrokeColor(); useFillColor(); createLine(baseVectorsOnConstructionCircles.get(0), baseVectorsOnConstructionCircles.get(6)); createLine(baseVectorsOnConstructionCircles.get(1), baseVectorsOnConstructionCircles.get(7)); createLine(baseVectorsOnConstructionCircles.get(2), baseVectorsOnConstructionCircles.get(8)); createLine(baseVectorsOnConstructionCircles.get(3), baseVectorsOnConstructionCircles.get(9)); createLine(baseVectorsOnConstructionCircles.get(4), baseVectorsOnConstructionCircles.get(10)); createLine(baseVectorsOnConstructionCircles.get(5), baseVectorsOnConstructionCircles.get(11)); } void createDividingLinesOnInnerHexagon(){ useStrokeColor(); useFillColor(); createLine(baseVectorsOnInnerHexagon.get(0), baseVectorsOnInnerHexagon.get(6)); createLine(baseVectorsOnInnerHexagon.get(1), baseVectorsOnInnerHexagon.get(7)); createLine(baseVectorsOnInnerHexagon.get(2), baseVectorsOnInnerHexagon.get(8)); createLine(baseVectorsOnInnerHexagon.get(3), baseVectorsOnInnerHexagon.get(9)); createLine(baseVectorsOnInnerHexagon.get(4), baseVectorsOnInnerHexagon.get(10)); createLine(baseVectorsOnInnerHexagon.get(5), baseVectorsOnInnerHexagon.get(11)); } void createVectorIndicatorOnInnerHexagon(float diameter){ useStrokeColor(); useFillColor(); for (PVector vector: vectorsOnInnerHexagon){ createCircle(vector, diameter); } } void displayConstructionLines(){ super.displayConstructionLines(); createDividingLinesOnConstructionCircles(); setStrokeColor(new Float[] {0.4, 0.8, 0.4, 1.0}); setFillColor(new Float[] {0.0, 0.0, 0.0, 0.0}); createDividingLinesOnInnerHexagon(); createInnerHexagon(); } }