10. November 2010
Meine Idee war eine Art Polar-Uhr zu entwickeln. Dabei werden alle Angaben (Millisekunden, Sekunden, Minuten, Stunden, Tag) als Kreis dargestellt. Sobald ein Kreis voll ist, ist die Einheit voll (60 Sekunden, 60 Minuten, 24 Stunden). Uhr v1: In einem zweiten Schritt, hab ich die Kreise grafisch ein wenig abgeändert, so das weit zurückliegende Einheiten langsam verblassen. Uhr v2:Code Uhr v2// ©2010 fabian troxler /// import processing.opengl.*; float angleSec, angleMin, angleHr, angleMilli = 0; int millisec = 0; float millisecSec,millisecMin,millisecHr = 0; int startmillis = millis(); void setup() { size(800, 800, OPENGL); hint(ENABLE_OPENGL_4X_SMOOTH); frameRate(60); } void draw() { background(51); noStroke(); translate(width/2,height/2); rotate(-HALF_PI); //umrechnung von millisekunden, sekunden, minuten, stunden in millisekunden millisec = int(System.currentTimeMillis()%1000); millisecSec = (second()+(millisec*0.001)); millisecMin = (minute()+(millisecSec*(1/60.0))); millisecHr = (hour() +(millisecMin*(1/60.0))); angleMilli = (TWO_PI)*millisec/1000.0; angleSec = (TWO_PI)*(millisecSec/60.0); angleMin = (TWO_PI)*(millisecMin/60.0); angleHr = (TWO_PI)*(millisecHr/24.0); int colh = 10; // color HSB h-wert int cols = 360; // color HSB S-wert int colb = 360; // color HSB B wert int col2 = 40; int colsw = 360/4; // color s-wert änderung int colbw = 360/4; // color b-wert änderung colorMode(HSB,360); // println("millisec =" + millisec + " millisecSec =" + millisecSec + " millisecMin = " + millisecMin + " millisecHr = " + millisecHr); // hours pushMatrix(); rotate(angleHr); for(int i=0;i<360;i++) { fill(colh,cols,colb,i); arc(0,0,600,600,radians(i),radians(i+1)); } popMatrix(); fill(51); ellipse(0,0,500,500); // minutes pushMatrix(); rotate(angleMin); for(int i=0;i<360;i++) { fill(colh,cols,colb,i); arc(0,0,500,500,radians(i),radians(i+1)); } popMatrix(); fill(51); ellipse(0,0,400,400); //seconds pushMatrix(); rotate(angleSec); for(int i=0;i<360;i++) { fill(colh,cols,colb,i); arc(0,0,400,400,radians(i),radians(i+1)); } popMatrix(); fill(51); ellipse(0,0,300,300); // milliseconds pushMatrix(); rotate(angleMilli); for(int i=0;i<360;i++) { fill(colh,cols,colb,i); arc(0,0,300,300,radians(i),radians(i+1)); } popMatrix(); fill(51); ellipse(0,0,200,200); }Code Uhr V1float angleSec, angleMin, angleHr, angleMilli = 0; int millisec = 0; float millisecSec,millisecMin,millisecHr = 0; int startmillis = millis(); int timegap= 0; void setup() { size(400, 400); // PFont font; // font = loadFont("SybilGreen-48.vlw"); // textFont(font, 48); smooth(); } void draw() { background(0); noStroke(); translate(width/2,height/2); rotate(-HALF_PI); // String clockStr = str(hour()) + ":" + str(minute()) + ":" + str(second()); // text(clockStr,20,70); //umrechnung von millisekunden, sekunden, minuten, stunden in millisekunden millisec = int(System.currentTimeMillis()%1000); millisecSec = (second()+(millisec*0.001)); millisecMin = (minute()+(millisecSec*(1/60.0))); millisecHr = (hour() +(millisecMin*(1/60.0))); angleMilli = (2.0*PI)*millisec/1000.0; angleSec = (2.0*PI)*(millisecSec/60.0); angleMin = (2.0*PI)*(millisecMin/60.0); angleHr = (2.0*PI)*(millisecHr/24.0); int colh = 37; // color HSB h-wert int cols = 360; // color HSB S-wert int colb = 360; // color HSB B wert int col2 = 40; int colsw = 360/4; // color s-wert änderung int colbw = 360/4; // color b-wert änderung println("millisec =" + millisec + " millisecSec =" + millisecSec + " millisecMin = " + millisecMin + " millisecHr = " + millisecHr); cols = colsw; colb = colbw; // hours colorMode (HSB,360); pushStyle(); fill(colh,cols,colb); ellipse(0,0,300,300); fill(colh,cols,colb-col2); arc(0,0,300,300,0,angleHr); popStyle(); // minutes cols = 2*colsw; colb = 2*colbw; if (hour()%2 == 0) { fill(colh,cols,colb); ellipse(0,0,250,250); fill(colh,cols,colb-col2); arc(0,0,250,250,0,angleMin); } else { fill(colh,cols,colb-col2); ellipse(0,0,250,250); fill(colh,cols,colb); arc(0,0,250,250,0,angleMin); } //seconds cols = 3*colsw; colb = 3*colbw; if (minute()%2 == 0) // überprüfen ob minutenanzahl gerade oder nicht { fill(colh,cols,colb); ellipse(0,0,200,200); fill(colh,cols,colb-col2); } else { fill(colh,cols,colb-col2); ellipse(0,0,200,200); fill(colh,cols,colb); } arc(0,0,200,200,0,angleSec); // milliseconds cols = 4*colsw; colb = 4*colbw; if (second()%2 == 0) // überprüfen ob sekundenanzahl grade ist oder nicht { fill(colh,cols,colb); ellipse(0,0,150,150); fill(colh,cols,colb-col2); } else { fill(colh,cols,colb-col2); ellipse(0,0,150,150); fill(colh,cols,colb); } arc(0,0,150,150,0,angleMilli); fill(0); ellipse(0,0,100,100); }