summaryrefslogtreecommitdiffstats
path: root/AutoVisual/IGPFamily.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/IGPFamily.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/IGPFamily.pde')
-rw-r--r--AutoVisual/IGPFamily.pde115
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();
+ }
+
+}