Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

o’clock

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:
Uhr v1

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:

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 V1
float 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);
   
}