http://www.generative-gestaltung.de/P_1_1_2_01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
// P_1_1_2_01.pde // // Generative Gestaltung, ISBN: 978-3-87439-759-9 // First Edition, Hermann Schmidt, Mainz, 2009 // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni // // http://www.generative-gestaltung.de // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * changing the color circle by moving the mouse. * * MOUSE * position x : saturation * position y : brighness * * KEYS * 1-5 : number of segments * s : save png * p : save pdf */ import processing.pdf.*; import java.util.Calendar; boolean savePDF = false; int segmentCount = 360;//何個に割るか。360で割れば円。5で割れば5角形。 int radius = 300;//半径 void setup(){ size(800, 800); } void draw(){ if (savePDF) beginRecord(PDF, timestamp()+".pdf"); noStroke(); colorMode(HSB, 360, width, height); background(360); float angleStep = 360/segmentCount;//5角形なら5でわる。1個あたりの角度。 beginShape(TRIANGLE_FAN);//線をつなぐファンクション、endShape()で閉める。 vertex(width/2, height/2);//まず多角形の中心に点を打つ。 for (float angle=0; angle<=360; angle+=angleStep){ float vx = width/2 + cos(radians(angle))*radius;//単位円の角度*cos=Xの長さに半径× float vy = height/2 + sin(radians(angle))*radius;// vertex(vx, vy);//点を打つ fill(angle, mouseX, mouseY);//塗り色を替える。色相はどんどん増える。ほかはマウス依存。 } endShape(); if (savePDF) { savePDF = false; endRecord(); } } void keyReleased(){ if (key=='s' || key=='S') saveFrame(timestamp()+"_##.png"); if (key=='p' || key=='P') savePDF = true; switch(key){ case '1': segmentCount = 360; break; case '2': segmentCount = 45; break; case '3': segmentCount = 24; break; case '4': segmentCount = 12; break; case '5': segmentCount = 6; break; } } // timestamp String timestamp() { Calendar now = Calendar.getInstance(); return String.format("%1$ty%1$tm%1$td_%1$tH%1$tM%1$tS", now); } |
One comment