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/IGPFamily.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/IGPFamily.pde')
-rw-r--r-- | AutoVisual/IGPFamily.pde | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/AutoVisual/IGPFamily.pde b/AutoVisual/IGPFamily.pde new file mode 100644 index 0000000..3451d88 --- /dev/null +++ b/AutoVisual/IGPFamily.pde @@ -0,0 +1,115 @@ +class IGPFamily { + PVector mid; + float diameter; + float radius; + ArrayList <PVector> alphaCircleVectors; + ArrayList <PVector> constructionCircleCenters; + ArrayList <PVector> constructionPartsTwelve; + ArrayList <PVector> constructionPartsSixteen; + + IGPFamily(float x, float y, float d){ + ellipseMode(CENTER); + colorMode(RGB, 1.0, 1.0, 1.0, 1.0); + mid = new PVector(x, y); + diameter = d; + radius = d/2; + setVectorsOnAlphaCircle(); + println("New IGP object: x="+mid.x+"/ y="+mid.y+"/ diameter="+diameter); + } + + void setVectorsOnAlphaCircle(){ + constructionCircleCenters = new ArrayList <PVector> (6); + constructionCircleCenters.add(getVectorOnAlphaCircle(0)); + constructionCircleCenters.add(getVectorOnAlphaCircle(30)); + constructionCircleCenters.add(getVectorOnAlphaCircle(60)); + constructionCircleCenters.add(getVectorOnAlphaCircle(90)); + constructionCircleCenters.add(getVectorOnAlphaCircle(120)); + constructionCircleCenters.add(getVectorOnAlphaCircle(150)); + constructionCircleCenters.add(getVectorOnAlphaCircle(180)); + constructionCircleCenters.add(getVectorOnAlphaCircle(210)); + constructionCircleCenters.add(getVectorOnAlphaCircle(240)); + constructionCircleCenters.add(getVectorOnAlphaCircle(270)); + constructionCircleCenters.add(getVectorOnAlphaCircle(300)); + constructionCircleCenters.add(getVectorOnAlphaCircle(330)); + } + + PVector getVectorOnCircle(PVector mid, float degree){ + PVector point = new PVector(mid.x + radius*cos(radians(degree)), mid.y + radius * sin(radians(degree))); + return point; + } + + PVector getVectorOnAlphaCircle(float degree){ + return getVectorOnCircle(mid, degree); + } + + void createSquare(PVector mid, float diameter){ + rect(mid.x, mid.y, diameter, diameter); + } + + void createOuterSquare() { + stroke(0.66, 0.66, 0.66, 0.4); + rectMode(CENTER); + createSquare(mid, diameter); + } + + void createInnerSquare() { + stroke(0.66, 0.66, 0.66, 0.4); + rectMode(CENTER); + createSquare(mid, sqrt(sq(diameter)/2)); + } + + void createInnerSquareTilted(float angle){ + rectMode(CENTER); + stroke(0.66, 0.66, 0.66, 0.4); + translate(mid.x, mid.y); + pushMatrix(); + rotate(radians(angle)); + createSquare(new PVector(0, 0), sqrt(sq(diameter)/2)); + popMatrix(); + translate(mid.x*(-1), mid.y*(-1)); + } + + void createCircle(PVector v) { + ellipse(v.x, v.y, diameter, diameter); + } + + void createAlphaCircle() { + stroke(1.0, 0.0, 0.0, 1.0); + createCircle(mid); + } + + void createConstructionCircles(){ + stroke(0.66, 0.66, 0.66, 0.4); + for (PVector constructionCircle : constructionCircleCenters) { + createCircle(constructionCircle); + } + } + + void createLine(PVector from, PVector to){ + beginShape(LINES); + vertex(from.x, from.y); + vertex(to.x, to.y); + endShape(); + } + + void createVerticalHorizontalConstructionLines(){ + createLine(constructionCircleCenters.get(0), constructionCircleCenters.get(2)); + createLine(constructionCircleCenters.get(1), constructionCircleCenters.get(3)); + } + + void createDiagonalConstructionLines(){ + createLine(new PVector(constructionCircleCenters.get(1).x-radius, constructionCircleCenters.get(2).y-radius), new PVector(constructionCircleCenters.get(3).x+radius, constructionCircleCenters.get(0).y+radius)); + createLine(new PVector(constructionCircleCenters.get(1).x+radius, constructionCircleCenters.get(0).y-radius), new PVector(constructionCircleCenters.get(3).x-radius, constructionCircleCenters.get(2).y+radius)); + } + + void display() { + createAlphaCircle(); + } + + void displayConstructionLines() { + stroke(0.66, 0.66, 0.66, 0.4); + createConstructionCircles(); + createVerticalHorizontalConstructionLines(); + } + +} |