diff options
author | David Runge <dave@sleepmap.de> | 2015-12-30 03:43:22 +0100 |
---|---|---|
committer | David Runge <dave@sleepmap.de> | 2015-12-30 03:43:22 +0100 |
commit | 33a44587ecf9c6b2287b460743207f856f811067 (patch) | |
tree | ab7626f0a0ea6cf01aefb5cff02bd57b3ccb7f91 /AutoVisual/IGPSquare.pde | |
download | processing-sketchbook-33a44587ecf9c6b2287b460743207f856f811067.tar.gz processing-sketchbook-33a44587ecf9c6b2287b460743207f856f811067.tar.bz2 processing-sketchbook-33a44587ecf9c6b2287b460743207f856f811067.tar.xz processing-sketchbook-33a44587ecf9c6b2287b460743207f856f811067.zip |
AutoVisual: First commit of AutoVisual, a sketch based upon Islamic Geometric Patterns by Eric Broug. Partially functioning implementations of square, pentagon and hexagon base patterns.
Diffstat (limited to 'AutoVisual/IGPSquare.pde')
-rw-r--r-- | AutoVisual/IGPSquare.pde | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/AutoVisual/IGPSquare.pde b/AutoVisual/IGPSquare.pde new file mode 100644 index 0000000..80e3700 --- /dev/null +++ b/AutoVisual/IGPSquare.pde @@ -0,0 +1,97 @@ +class IGPSquare extends IGPFamily { + int parts; + + IGPSquare(float x, float y, float d, int p){ + super(x, y, d); + parts = p; + setVectorsOnAlphaCircle(); +// setConstructionCircleCenters(); + setVectorsOnOuterSquare(); + } + + void setVectorsOnAlphaCircle(){ + constructionCircleCenters = new ArrayList <PVector> (4); + constructionCircleCenters.add(getVectorOnAlphaCircle(0)); + constructionCircleCenters.add(getVectorOnAlphaCircle(90)); + constructionCircleCenters.add(getVectorOnAlphaCircle(180)); + constructionCircleCenters.add(getVectorOnAlphaCircle(270)); + } + + void setConstructionCircleCenters(){ + constructionCircleCenters = new ArrayList <PVector> (4); + constructionCircleCenters.add(alphaCircleVectors.get(0)); + constructionCircleCenters.add(alphaCircleVectors.get(3)); + constructionCircleCenters.add(alphaCircleVectors.get(6)); + constructionCircleCenters.add(alphaCircleVectors.get(9)); + } + + void setVectorsOnOuterSquare(){ + int amount = 12; + constructionPartsTwelve = new ArrayList <PVector>(12); + constructionPartsTwelve.add(constructionCircleCenters.get(0)); + constructionPartsTwelve.add(new PVector(constructionCircleCenters.get(1).x+radius/2+radius/amount, mid.y-radius)); + constructionPartsTwelve.add(new PVector(mid.x+radius, constructionCircleCenters.get(0).y-radius/2-radius/amount)); + constructionPartsTwelve.add(constructionCircleCenters.get(1)); + constructionPartsTwelve.add(new PVector(mid.x+radius, constructionCircleCenters.get(0).y+radius/2+radius/amount)); + constructionPartsTwelve.add(new PVector(constructionCircleCenters.get(3).x+radius/2+radius/amount, mid.y+radius)); + constructionPartsTwelve.add(constructionCircleCenters.get(2)); + constructionPartsTwelve.add(new PVector(constructionCircleCenters.get(3).x-radius/2-radius/amount, mid.y+radius)); + constructionPartsTwelve.add(new PVector(mid.x-radius, constructionCircleCenters.get(2).y+radius/2+radius/amount)); + constructionPartsTwelve.add(constructionCircleCenters.get(3)); + constructionPartsTwelve.add(new PVector(mid.x-radius, constructionCircleCenters.get(2).y-radius/2-radius/amount)); + constructionPartsTwelve.add(new PVector(constructionCircleCenters.get(1).x-radius/2-radius/amount, mid.y-radius)); + constructionPartsSixteen = new ArrayList <PVector>(16); + constructionPartsSixteen.add(constructionCircleCenters.get(0)); + constructionPartsSixteen.add(new PVector(constructionCircleCenters.get(1).x+radius/2-radius/amount, mid.y-radius)); + constructionPartsSixteen.add(new PVector(constructionCircleCenters.get(1).x-radius, constructionCircleCenters.get(2).y-radius)); + constructionPartsSixteen.add(new PVector(mid.x+radius, constructionCircleCenters.get(0).y-radius/2+radius/amount)); + constructionPartsSixteen.add(constructionCircleCenters.get(1)); + constructionPartsSixteen.add(new PVector(mid.x+radius, constructionCircleCenters.get(0).y+radius/2-radius/amount)); + constructionPartsSixteen.add(new PVector(constructionCircleCenters.get(1).x+radius, constructionCircleCenters.get(0).y-radius)); + constructionPartsSixteen.add(new PVector(constructionCircleCenters.get(3).x+radius/2-radius/amount, mid.y+radius)); + constructionPartsSixteen.add(constructionCircleCenters.get(2)); + constructionPartsSixteen.add(new PVector(constructionCircleCenters.get(3).x-radius/2+radius/amount, mid.y+radius)); + constructionPartsSixteen.add(new PVector(constructionCircleCenters.get(3).x+radius, constructionCircleCenters.get(0).y+radius)); + constructionPartsSixteen.add(new PVector(mid.x-radius, constructionCircleCenters.get(2).y+radius/2-radius/amount)); + constructionPartsSixteen.add(constructionCircleCenters.get(3)); + constructionPartsSixteen.add(new PVector(mid.x-radius, constructionCircleCenters.get(2).y-radius/2+radius/amount)); + constructionPartsSixteen.add(new PVector(constructionCircleCenters.get(3).x-radius, constructionCircleCenters.get(2).y+radius)); + constructionPartsSixteen.add(new PVector(constructionCircleCenters.get(1).x-radius/2+radius/amount, mid.y-radius)); + } + + void createDividingConstructionLines(int amount){ + if(amount == 12){ + stroke(0.0, 0.66, 0.0, 0.4); + createLine(constructionPartsTwelve.get(0), constructionPartsTwelve.get(6)); + createLine(constructionPartsTwelve.get(1), constructionPartsTwelve.get(7)); + createLine(constructionPartsTwelve.get(2), constructionPartsTwelve.get(8)); + createLine(constructionPartsTwelve.get(3), constructionPartsTwelve.get(9)); + createLine(constructionPartsTwelve.get(4), constructionPartsTwelve.get(10)); + createLine(constructionPartsTwelve.get(5), constructionPartsTwelve.get(11)); + }else if (amount == 16){ + amount = 12; + stroke(0.0, 0.0, 0.66, 0.4); + createLine(constructionPartsSixteen.get(0), constructionPartsSixteen.get(8)); + createLine(constructionPartsSixteen.get(1), constructionPartsSixteen.get(9)); + createLine(constructionPartsSixteen.get(2), constructionPartsSixteen.get(10)); + createLine(constructionPartsSixteen.get(3), constructionPartsSixteen.get(11)); + createLine(constructionPartsSixteen.get(4), constructionPartsSixteen.get(12)); + createLine(constructionPartsSixteen.get(5), constructionPartsSixteen.get(13)); + createLine(constructionPartsSixteen.get(6), constructionPartsSixteen.get(14)); + createLine(constructionPartsSixteen.get(7), constructionPartsSixteen.get(15)); + } + } + + void display() { + super.display(); + createOuterSquare(); + if (parts == 16){ + createInnerSquare(); + createInnerSquareTilted(45); + createDividingConstructionLines(16); + }else if (parts == 12){ + createDividingConstructionLines(12); + } + } + +} |