summaryrefslogtreecommitdiffstats
path: root/AutoVisual/IGPSquare.pde
diff options
context:
space:
mode:
authorDavid Runge <dave@sleepmap.de>2015-12-30 03:43:22 +0100
committerDavid Runge <dave@sleepmap.de>2015-12-30 03:43:22 +0100
commit33a44587ecf9c6b2287b460743207f856f811067 (patch)
treeab7626f0a0ea6cf01aefb5cff02bd57b3ccb7f91 /AutoVisual/IGPSquare.pde
downloadprocessing-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.pde97
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);
+ }
+ }
+
+}